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.2.1.tar.gz (25.1 MB view details)

Uploaded Source

Built Distribution

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

handcuff-0.2.1-py3-none-any.whl (95.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for handcuff-0.2.1.tar.gz
Algorithm Hash digest
SHA256 f47236f9277fce0cb04bf325a0ae70e651e77299e20e0ee1cf560a777b2706ec
MD5 8bbc48377be81a109f9d9883f2394d16
BLAKE2b-256 3ddafdfff46b52e4f54f49162192e8f4394343b07103f7a5c7380370913fcd26

See more details on using hashes here.

File details

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

File metadata

  • Download URL: handcuff-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 95.9 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.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2565d62af919deb31128d154c3471d23b1d6fb81dd6c27fb8f9267fed1ac2cbd
MD5 b44a1e7cd509cebfd48aef88a650f9ec
BLAKE2b-256 cf8a04172f2f86f89eaa498d27218b8a932fad11921cc761b2d69ee47041a2b4

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