Docker Signing Agent
The Tectra Docker agent watches a directory for new images and videos and automatically signs them via the Tectra API. No code required - just configure, deploy, and every new file gets signed within seconds of creation.
Designed for:
- Security camera systems writing frames to disk
- AI model inference pipelines saving generated images
- Photo ingestion servers receiving uploads from field photographers
- Any media pipeline that saves files to a directory
Quick Start
Create a config.yaml file and mount it into the container:
# config.yaml
tectra:
api_url: https://tectra.vision
api_key: iai_live_abc123...
signing_key_id: your-signing-key-uuid
watch:
directories:
- /data/input
patterns: ["*.jpg", "*.jpeg", "*.png", "*.mp4"]
recursive: true
output:
signed_directory: /data/signed
keep_originals: true# docker-compose.yml
services:
tectra-agent:
image: tectravision/agent:latest
volumes:
- ./config.yaml:/app/config.yaml:ro
- /path/to/your/output:/data/input
- /path/to/signed:/data/signed
restart: unless-stoppeddocker compose up -d
docker compose logs -f tectra-agentHow It Works
The agent has no signing logic of its own. When a new file appears in the watched directory, it POSTs the file to the Tectra API (POST /api/v1/sign). The API handles all hashing, watermarking, signing, and blockchain anchoring on the server. The signed, watermarked file is written to the output directory.
This means the agent image is tiny (~200 MB) and requires no GPU, no cryptographic keys on the customer side, and no heavy dependencies.
Full config.yaml Reference
tectra:
api_url: https://tectra.vision # Tectra API base URL
api_key: iai_live_abc123... # From dashboard → API Keys
signing_key_id: your-key-uuid # From dashboard → Signing Keys
watch:
directories:
- /data/input # One or more directories to watch
patterns:
- "*.jpg"
- "*.jpeg"
- "*.png"
- "*.mp4"
recursive: true # Watch subdirectories
output:
signed_directory: /data/signed # Where to save signed files
keep_originals: true # Set false to delete originals after signingOrigin Types
The signing key's origin type is set in the dashboard when you create the key. It appears in verification results:
| Code | Category | Label |
|---|---|---|
| security_camera | camera | Security Camera |
| photojournalism | camera | Photojournalism |
| drone_footage | camera | Drone Footage |
| ai_generated_image | ai | AI Generated Image |
| ai_generated_video | ai | AI Generated Video |
| digital_artwork | creative | Digital Artwork |
| photo_edit | creative | Photo Edit |
| medical_imaging | medical | Medical Imaging |
Full list: GET /api/v1/origin-types
Camera System Integration
Example: NVR (Network Video Recorder) writing JPEG snapshots to an NFS share:
# config.yaml on NVR or edge server
tectra:
api_url: https://tectra.vision
api_key: iai_...
signing_key_id: nvr-system-key-uuid
watch:
directories:
- /mnt/nfs/cameras/snapshots
patterns: ["*.jpg", "*.jpeg"]
recursive: true
output:
signed_directory: /mnt/nfs/cameras/signed
keep_originals: true# docker-compose.yml
services:
tectra-agent:
image: tectravision/agent:latest
volumes:
- ./config.yaml:/app/config.yaml:ro
- /mnt/nfs/cameras:/mnt/nfs/cameras
network_mode: host
restart: unless-stoppedMonitoring & Logs
# Follow agent logs
docker compose logs -f tectra-agent
# Example output:
# [INFO] Tectra Signing Agent starting
# [INFO] API: https://tectra.vision
# [INFO] Watching: ['/data/input']
# [INFO] Output: /data/signed
# [INFO] Agent running. Press Ctrl+C to stop.
# [INFO] Signed: frame_001423.jpg -> record=abc12345-...
# [INFO] Signed: frame_001424.jpg -> record=def67890-...
# Check agent status
docker compose ps tectra-agentNext: Blockchain
Smart contract, Merkle proofs, and independent on-chain verification.