Agents propose.
The graph decides.
ActionGraph is a safety checkpoint for AI agent actions. Before anything runs, it checks the plan against a live FalkorDB graph and blocks changes that break things several hops away, with the exact path as proof.
The problem
The request sounds safe.
The graph knows it isn't.
Agents act on one line of text. The damage is usually two or three hops away, in who owns what and what depends on it. A model can't reliably see that. A graph query can.
"Contractor 17 is leaving today. Disable their account and revoke their deploy credential."
BLOCK. Billing is critical and would be left with no eligible owner. The other name on it is a former employee who no longer counts. Nothing ran. Suggested repair: engineer-9 already runs payments on the same database.
How it works
Prove before act. Verify after act.
Every verdict is computed in code from the graph, not by a model. The model only proposes.
Propose
An agent, the web app or the CLI submits a plan: ordered actions such as assign owner, disable identity, revoke credential.
POST /v1/plansPreflight on the graph
Bounded Cypher reads the live FalkorDB state. The plan is projected in memory and checked against named invariants, with the multi-hop path as evidence.
BLOCK NEEDS_REVIEW PASSA person approves
Even a passing plan waits. The agent has no approve tool, so it can't approve its own plan. The graph is checked again right before the first write.
APPROVEDExecute and read back
Each step is read back from the graph. VERIFIED only if the read-back matches. A timeout is UNKNOWN; half done is PARTIAL_FAILURE.
The AI agent
A real agent, kept on a short leash.
Type a request on the demo page. A Groq-hosted model plans with the same graph tools as the MCP server, gets blocked, reads the evidence, and revises until the graph says PASS.
- 4Four tools, all read or proposelist_workspace, impact, propose_plan, get_plan_report.
- ✋No approve, no executeThe plan is handed to a person in the inspector. Approval is a human act.
- ⇄Also over MCPClaude Desktop or any MCP client gets seven tools, still with no approve tool.
Why a graph
Delete one edge. The verdict flips.
Same plan, same code. With engineer-9 -[OWNS]-> svc-billing in the graph, disabling the contractor passes. Delete only that edge and it's blocked. The graph is doing the work, not a prompt. It's a test in CI and step 5 of the demo.
Try it
Four ways in.
The graph is synthetic and shared. Each guided step resets it first.
Guided demo
Five steps on the live graph: block, repair, approve & verify, honest timeout, edge ablation.
Open /demo →AI agent
Type a request in the AI agent tab and watch it get blocked, then revise to a passing plan.
Open the agent →MCP server
Plug ActionGraph into Claude Desktop. Approve from the CLI as a person.
Setup on GitHub →HTTP API
Plans, preflight, approve, execute, reconcile, report, impact. OpenAPI docs live.
API docs →Built for Track 01
Agents that act on connected data.
What a judge can check in five minutes.
The graph is load-bearing
FalkorDB holds identities, services, resources, credentials and invariants. Verdicts, evidence paths and the suggested repair all come from Cypher.
Honest about failure
Fail closed when the graph is down. Timeouts are UNKNOWN. Reconcile reads the live graph and reports PARTIAL_FAILURE instead of a fake rollback.
Shipped like a product
Live on AWS Lightsail with HTTPS. GitHub Actions runs every test against real FalkorDB, then deploys with OIDC and rolls back on failure.
See it block a bad plan live.
About two minutes, no sign-in, nothing to install.