Quickstart
Install Sentigent, seed a plan, drive it with real
claude -p laps, and read the FAP receipt.
No cloud setup required. Everything runs locally.
uv or pip,
and claude CLI installed and authenticated
(claude --version should work). Ollama is optional — only needed for the
local CloneResolver push-vs-ask path.
Install
Install with uv (recommended) or plain pip.
# recommended
uv pip install sentigent
# or with pip
pip install sentigent
Sentigent is local-first. No API keys required for the loop driver itself. Your plans, decisions, and FAP data stay on your machine in a local SQLite brain.
Seed a plan
Give the loop driver a goal. It creates a durable state file that survives session ends, crashes, and reboots. This is the VISION.md equivalent encoded into the loop's state.
python -m sentigent.operator.loop_driver start \
--goal "Ship feature X with passing tests"
# output:
loop_id: loop_83cc8641
state: ~/.sentigent/loops/loop_83cc8641.json
status: pending
The loop_id is your handle for this plan. Use it in all subsequent
commands. The state file is atomic — a partial write never corrupts it.
Drive it
Start the loop. Each lap spawns a fresh claude -p subprocess over
exactly one step, then runs the verify gate (your project's tests/lint/typecheck) before
marking it done. The loop persists state atomically after every lap — safe to kill at any point.
python -m sentigent.operator.loop_driver drive loop_83cc8641 --execute
# each lap prints:
[lap 1/? ] running step: write test scaffold
[lap 1/? ] verify gate: pytest tests/ ... PASSED (19 tests)
[lap 1/? ] step verified — persisting next step
[lap 2/? ] running step: implement loop_driver.start()
...
claude -p subprocesses. Use dry-run
to inspect the plan before committing to execution.
Flags reference
| Flag | Default | Description |
|---|---|---|
| --execute | off | Spawn real claude -p subprocesses. Required for live runs. |
| --max-laps | 50 | Hard cap on laps per drive call. Loop halts cleanly at ceiling. |
| --guardrails | auto | Path(s) to guardrail YAML packs. Auto-discovers guardrails/ in project root. |
| --no-progress-halt | 3 | Halt if the same verify failure repeats N times in a row. Prevents burn loops. |
Resume after any interruption
The loop stores the next queued step atomically before each lap ends. If the session ends,
your machine restarts, or you manually kill the process — just run drive
again with the same loop_id. It picks up exactly where it left off.
# session ended, machine restarted — resume seamlessly
python -m sentigent.operator.loop_driver drive loop_83cc8641 --execute
resuming loop_83cc8641 at step 4/7 (3 verified, 0 asks)
Read the honest scoreboard
When the loop finishes (or at any point during a run), print the FAP receipt. It aggregates across all loops you've run — distance, fidelity, autonomy, and the headline FAP for each.
python -m sentigent.operator.loop_driver receipt
Every number in the receipt was logged by the loop itself during execution. Nothing is inferred or estimated. See the FAP doc for the full metric definitions.
Using from Claude Code (MCP)
The loop driver is also exposed over MCP so it's callable from inside a Claude Code session without switching to a terminal. The same durable state file backs both interfaces — starting a loop via MCP and driving it via CLI (or vice versa) works transparently.
# from inside a Claude Code session, call the MCP tools directly:
operator_start(goal="Ship feature X with passing tests")
# → { loop_id: "loop_83cc8641", status: "pending" }
operator_status(loop_id="loop_83cc8641")
# → { step: 3, total: 7, verified: 2, asks: 0, fap: 0.28 }
operator_resume(loop_id="loop_83cc8641")
# → drives the next lap inline
Adding guardrails
Drop a YAML file in guardrails/ in your project root. The loop driver
picks it up automatically on the next drive call. See the Guardrails doc
for the full format and available actions.
rules:
- id: no-force-push
match: "push --force|push -f"
scope: bash
action: block
severity: critical
- id: prod-deploy-gate
match: "deploy --prod|kubectl apply"
scope: bash
action: approve
severity: high
What to try next
- Loop Engineering — the full architecture and field survey
- FAP — metric definitions, what it proves, what it doesn't
- Guardrails — org safety packs in detail
- GitHub — source, issues, and contributing