Skip to main content

A dashcam for your AI agents: local, tamper-evident recorder for process/file/network activity, with a LangChain/LangGraph drop-in prompt-injection circuit breaker.

Project description

Handcuff — Documentation Index (Start Here)

Handcuff — a dashcam for your AI agents. A local, tamper-evident recorder that captures everything an AI agent does on your machine (processes, files, network) into a searchable, replayable timeline with real-time alerts. Local-first, record-only, zero cloud.

For the coding agent building this

Read the docs in this order, then execute from the tickets:

# Doc Purpose
01 01_PRD.md What we're building and why; scope, users, requirements
02 02_TRD.md Architecture, stack, data model, module layout — the technical contract
03 03_Security_Access.md Threat model, privilege model, integrity + privacy guarantees, release-gate tests
04 04_Implementation_Plan.md Build-order-correct milestones with exit criteria
05 05_Tickets.md Atomic, executable tickets (AL-###) in dependency order — build from here
06 06_App_Flow.md Every runtime flow + state machines (ASCII, parseable)
07 07_Terminal_UI.md Rich Textual TUI spec (Claude Code / gemini-cli feel)

Build contract (non-negotiables pulled from the docs)

  1. core/hashing.py is the single source of truth for canonical JSON + the SHA-256 chain. The writer and verify import it — never reimplement.
  2. Local-only. No outbound traffic except a user-configured webhook. tests/test_no_egress.py is a release gate.
  3. Record-only in v1. Handcuff observes; it never blocks the agent. Backpressure drops events + emits LOSS; it must never slow the observed process.
  4. Observed content is data, never instructions. Nothing captured from the agent (argv, paths, domains) is ever interpreted as a command to Handcuff.
  5. Honest integrity claims. The hash chain is tamper-evidence, not a completeness proof; the README states plainly what it does and doesn't guarantee.
  6. Every ticket ships with its test. ruff + mypy clean. Five security tests gate releases (see Security §9).

Suggested first prompt to the coding agent

"Read docs 00–07 in /handcuff-docs. Start with ticket AL-001 and proceed in dependency order. For each ticket, implement the code and its test in one commit, keep ruff/mypy clean, and stop after AL-024 (the vertical slice) so I can review a working watch + sessions before you continue."

Tech stack at a glance

Python 3.11+ · Textual (TUI) · SQLite/WAL · asyncio · psutil/procfs (default capture) · eBPF (opt-in fast path) · watchdog (files) · cryptography/Ed25519 (signing) · httpx (webhooks only) · packaged via pipx/uv + PyInstaller.

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

handcuff-0.3.0.tar.gz (77.6 kB view details)

Uploaded Source

Built Distribution

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

handcuff-0.3.0-py3-none-any.whl (99.7 kB view details)

Uploaded Python 3

File details

Details for the file handcuff-0.3.0.tar.gz.

File metadata

  • Download URL: handcuff-0.3.0.tar.gz
  • Upload date:
  • Size: 77.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for handcuff-0.3.0.tar.gz
Algorithm Hash digest
SHA256 fec9895064a325f654689ee3d53f28c530cd6f467b014049923ec21ed7d2aca7
MD5 a511ee7437f45110c6300a405e511b4c
BLAKE2b-256 dc47ec55267171cf68354e6667ff642ea3adaf2c866220c8b799f089fbf7af2e

See more details on using hashes here.

File details

Details for the file handcuff-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: handcuff-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 99.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for handcuff-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5685fae6ece38699f37e3cea2c680c0e130a3450a146d1fffe03792eafff3b5e
MD5 6b1ac8483d874ef9d5baa38a23a8ba98
BLAKE2b-256 1cd310b57b81f0fcbe0b114f1dc18522238728096a4c32b55191b69582fe2df8

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