TectraTectra
Docker Agent

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:

yaml
# 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
yaml
# 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-stopped
bash
docker compose up -d
docker compose logs -f tectra-agent

How 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

yaml
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 signing

Origin Types

The signing key's origin type is set in the dashboard when you create the key. It appears in verification results:

CodeCategoryLabel
security_cameracameraSecurity Camera
photojournalismcameraPhotojournalism
drone_footagecameraDrone Footage
ai_generated_imageaiAI Generated Image
ai_generated_videoaiAI Generated Video
digital_artworkcreativeDigital Artwork
photo_editcreativePhoto Edit
medical_imagingmedicalMedical Imaging

Full list: GET /api/v1/origin-types

Camera System Integration

Example: NVR (Network Video Recorder) writing JPEG snapshots to an NFS share:

yaml
# 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
yaml
# 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-stopped

Monitoring & Logs

bash
# 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-agent

Next: Blockchain

Smart contract, Merkle proofs, and independent on-chain verification.

Blockchain