DevTorch — AI reasoning capture, audit trail, and governance for agent-assisted development
Project description
DevTorch
Local-first AI agent governance. DevTorch gives multi-agent systems a shared on-disk audit trail, coordination vector, privacy controls, and LLM integration layer — all without a remote service.
pip install agentorch
devtorch init
devtorch setup # connects to Claude Code, Cursor, or Antigravity
devtorch debug timeline
What it does
| Concern | DevTorch feature |
|---|---|
| Reasoning audit trail | Append-only .GCC/events.log.jsonl with SHA-256 hash chain |
| Multi-agent coordination | Coordination vector Θ — shared sensitivity map across agents |
| Privacy compliance | RDP ε-budget tracking; [PRIVATE] span suppression; SIS-TC quarantine |
| LLM integration | SDK wrappers, HTTP proxy, Claude Code MCP server + hooks |
| Governance observability | Structured reports, browser dashboard, VS Code extension (Antigravity-compatible) |
| Alerting | Slack, Jira, PagerDuty outbound webhooks |
| Metrics | MCS, DHS, ROI — all traceable to citations or explicit design choices |
Everything lives in .GCC/ — a local directory in your project. No database, no network service, no telemetry.
Install
pip install agentorch
Requirements: Python 3.10+
For optional extras:
pip install agentorch[wrapper] # SDK wrappers (Anthropic, OpenAI, Gemini, Bedrock, Ollama)
pip install agentorch[proxy] # HTTP proxy + dashboard API (FastAPI)
pip install agentorch[all] # everything
The PyPI package is named
agentorch. The CLI command and import paths remaindevtorch/devtorch_core.
Getting started
# 1. Install
pip install agentorch
# 2. Go to your project
cd /path/to/your/project
# 3. One-command setup (choose your IDE)
devtorch setup # Claude Code (default)
devtorch setup --target cursor # Cursor
devtorch setup --target antigravity # Google Antigravity
# 4. Verify
devtorch doctor
The setup command initializes .GCC/ in your project, writes the MCP server config for your IDE, and adds DevTorch instructions to CLAUDE.md / AGENTS.md.
IDE support
| IDE | Integration | Status |
|---|---|---|
| Claude Code | MCP server + hooks + CLAUDE.md | ✓ devtorch setup |
| Cursor | MCP server + VS Code extension | ✓ devtorch setup --target cursor |
| Google Antigravity | MCP server + AGENTS.md | ✓ devtorch setup --target antigravity |
| VS Code | Sidebar extension (.vsix) | ✓ Manual — see IDE_SETUP.md |
| JetBrains (IntelliJ/PyCharm) | Plugin | Coming soon |
| OpenAI Codex CLI | HTTP proxy | ✓ See CODEX_SETUP.md |
Quick start
cd /path/to/your/project
devtorch init
# Record reasoning commits
devtorch commit -m "Chose idempotent transfer endpoint design"
# Add per-agent branches
devtorch branch app
devtorch branch dba
devtorch branch security-review
# Add sensitivity information
devtorch sensitivity add \
--source agent-app \
--concept api_contract \
--confidence 0.9 \
--disclosure PUBLIC \
-m "API shape depends on transaction schema"
# Inspect state
devtorch status
devtorch debug timeline
devtorch debug branch-compare app dba
LLM integration
Option 1 — SDK wrapper (you own the code)
# One-line change — same API, governance captured automatically
from devtorch_core.wrapper.anthropic import DevTorchAnthropic
client = DevTorchAnthropic() # replaces anthropic.Anthropic()
# OpenAI
from devtorch_core.wrapper.openai import DevTorchOpenAI
client = DevTorchOpenAI()
# Local models via Ollama (no API key required)
from devtorch_core.wrapper.ollama import DevTorchOllama
client = DevTorchOllama(model="llama3.2") # any model in `ollama list`
# Google Gemini
from devtorch_core.wrapper.gemini import DevTorchGemini
client = DevTorchGemini(model_name="gemini-1.5-pro")
# AWS Bedrock
from devtorch_core.wrapper.bedrock import DevTorchBedrock
client = DevTorchBedrock(region_name="us-east-1")
See OLLAMA_SETUP.md for the full Ollama guide.
Option 2 — HTTP proxy (Cursor, JetBrains, closed-source IDEs)
devtorch proxy install # installs as macOS LaunchAgent or Linux systemd service
devtorch proxy start # runs on localhost:8765
Configure your IDE to use http://localhost:8765/anthropic (or /openai, /gemini). The proxy injects RACP context and captures responses with zero latency penalty.
Option 3 — MCP server + hooks (Claude Code, Cursor, Kiro, Antigravity)
devtorch setup # one command: init + hooks + MCP config + CLAUDE.md + AGENTS.md
Claude Code / Cursor / Kiro / Antigravity then call devtorch_commit, devtorch_sensitivity_add, devtorch_context, and devtorch_theta_read as native MCP tools. See IDE_SETUP.md for per-IDE instructions.
Option 4 — OpenAI Codex CLI proxy
# Start the Codex-specific proxy on localhost:8766
python -m devtorch_core.codex start
# Point Codex CLI at it
export OPENAI_BASE_URL=http://localhost:8766/v1
codex "Add error handling to the payment service"
See CODEX_SETUP.md for the full guide.
Option 5 — Org gateway (enterprise, multi-developer)
cd deploy/
cp .env.example .env # set ANTHROPIC_API_KEY and/or OPENAI_API_KEY
docker compose up # gateway on :8080, dashboard on :3000
Developers point their IDE proxy URL to the gateway instead of api.openai.com. The gateway handles central API key management, SSO attribution, governance policy enforcement, and metrics aggregation. See deploy/README.md for Helm and Docker Compose instructions.
Architecture
devtorch_core/ Pure library — all business logic
gcc.py GCCRepository: .GCC/ layout, event log, commits, branches
sensitivity.py Sensitivity events + SensitivityStore
theta.py Coordination vector Θ + AggPhi
capability.py OmegaCapability (A1), Lipschitz bound, PST runner
invariants.py I1 (commit-backed), I3 (semantic grounding)
variance.py f_max formula, rolling monitor, VARIANCE_ALERT
rep.py REP ledger — append-only local transport
sis.py SIS-TC corpus evaluation + quarantine
rdp.py RDP ε-budget tracking
disclosure.py [PRIVATE] span suppression
prompt_artifact.py RACP system prompt artifact store
deltaf.py Δf estimation
parser/ XML block extractor, thinking tokens, inference
wrapper/ SDK drop-in wrappers (Anthropic, OpenAI, Gemini, Bedrock)
proxy/ HTTP reverse proxy (localhost:8765)
mcp/ MCP/JSON-RPC server
hooks/ Claude Code hooks + git commit-msg hook
metrics/ MCS, DHS, ROI, calibration, citation registry
observability/ Structured reports + enterprise metrics webhook
alerts/ Slack, Jira, PagerDuty outbound alerting
rep_network/ Multi-node REP ledger sync
github/ GitHub App webhook + PR comment builder
dashboard_api.py REST API for browser dashboard
devtorch_cli/
main.py Thin argparse wrapper over devtorch_core
extensions/vscode/ VS Code extension (read-only sidebar; installs in Antigravity via .vsix)
dashboard/ React browser dashboard (Developer/Lead/CISO views)
tests/ 637 tests across all sprints (S0–S18)
examples/ end-to-end scenario examples
On-disk layout (.GCC/)
.GCC/
VERSION # format version
events.log.jsonl # append-only audit stream (hash chain)
main.md / log.md # reasoning roadmap + chronological log
refs/HEAD # current branch
refs/branches/<name> # branch tip commit ID
commits/<id>.json # commit objects
sensitivities/events.jsonl # raw sensitivity events
theta.json # coordination vector Θ
capabilities/omega.json # A1 capability state
variance/ # calibration_report.json, live_state.json
rep/rep_ledger.jsonl # REP transport ledger
rep/peers.json # peer list for multi-node sync
sis/ # SIS-TC corpus, reports, quarantine events
rdp/rdp_state.json # RDP ε-budget
concepts/<name>.json # I3 concept definitions
prompts/ # RACP system prompt artifact
deltaf/ # Δf report
calibration.json # team-specific metric calibration
context_bundles/ # MECW-bounded context snapshots
NODE_STATE # node state machine
Key safety properties
| Property | Mechanism |
|---|---|
| Commit-backed decisions (I1) | Merge/unlock blocked unless branch tips exist in commits/ and events log |
| Semantic grounding (I3) | Operations using concepts_used require matching definitions in concepts/ |
| Capability gate (A1) | Textual mode requires valid OmegaCapability + passing PST |
| Variance control (A2) | f_max=0 forces deterministic mode; A1 gate blocks textual_mode |
| Privacy budget (RDP) | epsilon exhaustion flips read_only=true in rdp_state.json |
| Proxy trust boundary | Proxy binds to 127.0.0.1 only; API keys pass through, never stored |
Run the tests
python3 -m venv .venv && source .venv/bin/activate
pip install -e .[dev,proxy]
pytest tests/ # 637 tests
Configuration reference
| Env var | Purpose |
|---|---|
DEVTORCH_DISABLE=1 |
Disable all injection and capture (wrapper/proxy become transparent) |
DEVTORCH_SLACK_WEBHOOK_URL |
Slack alert delivery |
DEVTORCH_JIRA_URL / _PROJECT_KEY / _API_TOKEN / _EMAIL |
Jira issue creation |
DEVTORCH_PAGERDUTY_ROUTING_KEY |
PagerDuty event trigger |
DEVTORCH_ALERT_MIN_SEVERITY |
Minimum severity to alert on (info/warning/critical) |
DEVTORCH_METRICS_WEBHOOK_URL |
Enterprise metrics webhook endpoint |
DEVTORCH_ORG_ID |
Org identifier in metrics payloads |
DEVTORCH_METRICS_API_KEY |
Auth for metrics webhook |
DEVTORCH_GITHUB_WEBHOOK_SECRET |
HMAC secret for GitHub App webhook |
Documentation
| File | Contents |
|---|---|
DOCS.md |
Architecture deep-dive, Sprint 4–6 feature reference, conformance matrix |
OBSERVABILITY.md |
Observability pillars, daily-recall pattern, shell audit script template |
CONTRIBUTING.md |
Dev environment, test commands, sprint structure, PR checklist |
THREAT_MODEL.md |
Trust model, hash chain integrity, proxy trust boundary, known limitations |
DESIGN_THOUGHTS.md |
Design decisions Q1–Q14 with full citation validation |
IDE_SETUP.md |
VS Code, Cursor, Kiro, and Antigravity setup instructions |
ANTIGRAVITY_SETUP.md |
Google Antigravity step-by-step onboarding |
CLAUDE_CODE_QUICKSTART.md |
Claude Code step-by-step onboarding |
OLLAMA_SETUP.md |
Local model setup with Ollama (Llama, Mistral, Gemma, Phi, Qwen) |
CODEX_SETUP.md |
OpenAI Codex CLI proxy setup |
AGENTS.md |
Persistent AI instructions for Antigravity/Kiro |
deploy/README.md |
Enterprise org gateway — Docker Compose and Helm deployment |
devtorch_core/metrics/README.md |
MCS/DHS/ROI formulas and calibration guide |
devtorch_core/proxy/README.md |
HTTP proxy deployment options |
devtorch_core/wrapper/README.md |
SDK wrapper quick-start for all providers |
dashboard/README.md |
Browser dashboard setup and API reference |
Metrics credibility
DevTorch is explicit about what every number is based on:
- 15 min context switch — Parnin & Rugaber (2011), Software Quality Journal. DOI: 10.1007/s11219-010-9104-9. Measured for programming tasks only.
- Auditor rate — BLS SOC 13-2011 (2023): $39–40/hr employed staff. External rates ($75–400/hr) not used as defaults.
- MCS/DHS weights — Design choices. No external benchmark. Calibrate with your team's data.
- Developer hourly rate — No default. You must set it:
devtorch calibrate --set developer_hourly_rate=<value>
See devtorch_core/metrics/credibility.py for the full citation registry.
License
Apache 2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agentorch-1.0.0.tar.gz.
File metadata
- Download URL: agentorch-1.0.0.tar.gz
- Upload date:
- Size: 252.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5a66bad30cd3920467cd05f345ce9fbfc36f9d1bdd3f4bf4f61e26dd84eb514
|
|
| MD5 |
b3b9ad834224a904c7511f73cc40fe65
|
|
| BLAKE2b-256 |
7518b614d1b55b931f708864ef43ee007f0bbb248d1038097f09f2e8cde4106b
|
File details
Details for the file agentorch-1.0.0-py3-none-any.whl.
File metadata
- Download URL: agentorch-1.0.0-py3-none-any.whl
- Upload date:
- Size: 316.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f4453f1ecb772176e0dc5f0913ed445ed4aca732edb607445f2b327cc9c00ad3
|
|
| MD5 |
11915dd923480c6803ed26e488b4c81d
|
|
| BLAKE2b-256 |
4eaf713e870556e7bd45f3bf277bd006d742df2dfefa6a8b3bc57a519c5d2e60
|