Skip to main content

Local assistant daemon for PutPlace file uploads

Project description

PutPlace Assist

Local assistant daemon for file uploads to the PutPlace server.

Overview

PutPlace Assist is a local FastAPI daemon that runs on client machines to assist with file uploads. It provides:

  • Path Registration: Register directories to be scanned and uploaded
  • File Watching: Automatic detection of file changes via watchdog
  • SHA256 Checksums: Automatic calculation and tracking of file hashes
  • Upload Queue: Background file uploads with retry logic
  • Real-time Activity: SSE and WebSocket endpoints for monitoring
  • SQLite Database: Local tracking of files, upload status, and activity

Installation

pip install putplace-assist

Quick Start

Start the Daemon

# Start in background
ppassist start

# Start in foreground (for development)
ppassist start --foreground

# Check status
ppassist status

# Stop daemon
ppassist stop

Using the API

Register a path:

curl -X POST http://localhost:8765/paths \
  -H "Content-Type: application/json" \
  -d '{"path": "/path/to/watch", "recursive": true}'

Add exclude patterns:

curl -X POST http://localhost:8765/excludes \
  -H "Content-Type: application/json" \
  -d '{"pattern": "*.log"}'

Configure remote server:

curl -X POST http://localhost:8765/servers \
  -H "Content-Type: application/json" \
  -d '{"name": "production", "url": "https://app.putplace.org", "username": "user", "password": "pass"}'

Trigger uploads:

curl -X POST http://localhost:8765/uploads \
  -H "Content-Type: application/json" \
  -d '{"upload_content": true}'

Monitor activity (SSE):

curl http://localhost:8765/activity/stream

API Endpoints

Status

  • GET / - Root endpoint
  • GET /health - Health check
  • GET /status - Daemon status

Paths

  • GET /paths - List registered paths
  • POST /paths - Register a new path
  • GET /paths/{id} - Get path details
  • DELETE /paths/{id} - Unregister a path
  • POST /paths/{id}/scan - Trigger rescan

Excludes

  • GET /excludes - List exclude patterns
  • POST /excludes - Add exclude pattern
  • DELETE /excludes/{id} - Remove pattern

Files

  • GET /files - List tracked files
  • GET /files/{id} - Get file details
  • DELETE /files/{id} - Remove from tracking
  • GET /files/stats - File statistics

Servers

  • GET /servers - List configured servers
  • POST /servers - Add server configuration
  • DELETE /servers/{id} - Remove server
  • POST /servers/{id}/default - Set as default

Uploads

  • POST /uploads - Trigger file uploads
  • GET /uploads/status - Upload status
  • GET /uploads/queue - Queue status

Activity

  • GET /activity - Recent activity events
  • GET /activity/stream - SSE event stream
  • WS /ws/activity - WebSocket events

Scanning

  • POST /scan - Full scan of all paths

Configuration

Configuration can be set via:

  1. Environment variables (prefix: PPASSIST_)
  2. TOML config file (ppassist.toml)
  3. Command-line defaults

Environment Variables

Variable Default Description
PPASSIST_SERVER_HOST 127.0.0.1 Host to bind to
PPASSIST_SERVER_PORT 8765 Port to bind to
PPASSIST_SERVER_LOG_LEVEL INFO Logging level
PPASSIST_DB_PATH ~/.local/share/putplace/assist.db Database path
PPASSIST_WATCHER_ENABLED true Enable file watching

Config File Example

Create ~/.config/putplace/ppassist.toml:

[server]
host = "127.0.0.1"
port = 8765
log_level = "INFO"

[database]
path = "~/.local/share/putplace/assist.db"

[watcher]
enabled = true
debounce_seconds = 2.0

[uploader]
parallel_uploads = 4
retry_attempts = 3

Development

# Install dev dependencies
uv pip install -e '.[dev]'

# Run tests
invoke test

# Run linter
invoke lint

# Format code
invoke format

# Run all checks
invoke check

# Run development server
invoke serve

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

putplace_assist-0.2.0.tar.gz (81.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

putplace_assist-0.2.0-py3-none-any.whl (74.1 kB view details)

Uploaded Python 3

File details

Details for the file putplace_assist-0.2.0.tar.gz.

File metadata

  • Download URL: putplace_assist-0.2.0.tar.gz
  • Upload date:
  • Size: 81.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for putplace_assist-0.2.0.tar.gz
Algorithm Hash digest
SHA256 e988f18115303e4c57eb9e544858d71e19b2c16cac5b161006d279a17c401104
MD5 156e3569d0a8968ee31a8957ae1e097d
BLAKE2b-256 e8b8dae524a874887062ddb6eb066ce029e54edd5389fabb024011a7d62474da

See more details on using hashes here.

File details

Details for the file putplace_assist-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for putplace_assist-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 db64a039fa7317b142a5524bfbd83f44c1088eff534958449b6dc17c384cd610
MD5 a0daad5ebe28584d9cb24f1eb7443066
BLAKE2b-256 e6d11f5ac3c71c83430543048cf4fbc8ce4121b6de828b1b534b8c1e6dc07025

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page