arf.io / ARF / MCP & Shared Memory / ARF — Autonomous Request Filter · Agent Router & Filter
ARF · Augment Reactor Frontend

One memory.
Every agent.
Every project.

ARF exposes a Model Context Protocol server with sixty-plus tools. Knowledge, tasks, vault credentials, sub-agent dispatch, agent steering, provenance, and direct human-to-agent message injection — all governed, all auditable, all on a single stdio JSON-RPC connection.

The MCP Surface

A single protocol.
The whole foundry.

Model Context Protocol — Anthropic's open spec for connecting agents to tools and resources — is the lingua franca for agent capability. ARF speaks MCP fluently and exposes its entire governance, orchestration, and memory surface through a single arf mcp-server process. Run any MCP-aware client (Claude Desktop, Cursor, Zed, custom) and gain instant, governed access to shared agent memory, project task graphs, audited credentials, and sub-agent dispatch.

# Start the ARF MCP server (stdio JSON-RPC) arf mcp-server # Or wire into Claude Desktop / Zed / Cursor config: # {"mcpServers": {"arf": {"command": "arf", "args": ["mcp-server"]}}}
Shared Memory & Knowledge

Facts that survive.
Across agents. Across sessions.

Every agent writes into the same memory. Every agent can search it. Facts have provenance — who added them, when, with what supporting evidence — and they age through a four-stage maturity curve as other agents attest to them.

Backed by a JSONL fact store and an optional PostgreSQL + pgvector instance for semantic search. The same fact is reachable by keyword and by 1536-dim embedding similarity.

A human-readable index sits next to it: TASKS.md, project memory directories, command manifests. Humans and agents read and write the same store. There is no agent-only memory and no human-only memory. Everything is shared.

DIKW Maturity

Every fact starts as Data. After 3 independent attestations it becomes Information. After 6, Knowledge. After 9, Wisdom.

Queries can require a minimum maturity. knowledge_query(min_dikw="knowledge") ignores anything still in the data layer — useful for production decisions.

# Six knowledge tools, all governed, all audited. knowledge_add(content, scope, fact_type, confidence) knowledge_query(query, scope?, min_dikw?, limit?) knowledge_get(fact_id) knowledge_attest(fact_id, evidence, confidence_boost) knowledge_topology() knowledge_context_brief(scope, token_budget)
Project & Task Management

Tasks humans can read.
Tasks agents can claim.

Storage

TASKS.md & task-history.jsonl

Human-readable markdown is the source of truth. A task's lifecycle — created, updated, checked out by an agent, blocked, decided, checked in — is mirrored to an append-only JSONL event log. With [task_db] configured, every event also flows into a PostgreSQL task_events table for query and replay.

Lifecycle

Checkout. Work. Check in.

Agents call arf_task_checkout_next to claim the highest-priority unassigned task. The session ID is recorded with the checkout. On finish, arf_task_checkin records the outcome (done / blocked / deferred). Humans can override, comment, block, or decide via the same MCP calls.

# Fifteen task tools cover the full lifecycle. arf_task_add(title, description, owner) arf_task_list(status?, owner?) arf_task_checkout(id, session_id) arf_task_checkin(id, outcome, notes?) arf_task_checkout_next() arf_task_block(id, reason) arf_task_comment(id, comment) arf_task_decision(id, decision_text) arf_task_who_has(task_id) arf_task_priority_counts() arf_task_update_related(task_ids, status?, note?) arf_task_checkin_all(task_ids, outcome, note?) arf_task_checkout_related(tag?, blocked_by?) project_init(name, description) cmd_list(task?)
Sub-Agent Dispatch

Spawn agents.
Route them by cost. By latency. By capability.

An agent that needs help calls arf_subagent. ARF's routing engine scores every available runner-engine-model triple against the constraints (cost ceiling, latency budget, required capabilities) and dispatches the best match. The session ID and the routing rationale come back in the response.

arf_subagent

Routing-aware dispatch. Pass constraints; ARF picks the runner, engine, and model. Per-request overrides persist into the session for follow-on calls.

arf_run_*

Direct runner invocation: arf_run_claude, arf_run_codex, arf_run_gemini, arf_run_antigravity. Bypasses routing when you know exactly which runner you want.

arf_spawn_subagent

Governed child session under the AugmentFoundry executor. Linked in the provenance DAG. Child capability pack must be equal or more restrictive than parent — privilege never escalates downstream.

Constraint-Based Routing

# Route an expensive reasoning task to Claude Opus arf_subagent({ prompt: "Design the new caching layer architecture", constraints: { max_cost_usd: 0.50, required_capabilities: ["long_context", "structured_reasoning"] } }) # → runner=claude, engine=anthropic, model=claude-opus-4-7 # Route mechanical boilerplate to local Ollama (free, offline) arf_subagent({ prompt: "Generate CRUD scaffolds for User, Post, Comment", constraints: { max_cost_usd: 0.0, max_latency_ms: 500 } }) # → runner=ollama, engine=ollama, model=qwen3-coder:30b
Agent Steering & Human-In-The-Loop

Inject a message.
Pause an agent. Redirect mid-task.

arf_human_message

Inject a human-authored message into a running agent's turn queue. The agent receives it as a synthetic user prompt on its next turn — no async waiting, no approval card overhead, no special UI required.

Useful for redirecting an agent that's drifting, providing missing context the agent didn't ask for, or stopping a tool call mid-execution with new instructions.

arf steer

CLI-based process control. arf steer pause <agent> sends SIGSTOP. arf steer resume sends SIGCONT. arf steer redirect <agent> <instruction> injects a new task. arf steer priority <agent> <1-5> reorders execution.

Steering directives are recorded in the provenance chain alongside every governance event — the audit trail shows not only what the agent did but every human intervention along the way.

# Mid-task message injection — agent receives this on its next turn arf_human_message({ session_id: "01HX4QVPZ...AB12", message: "Stop. The auth module needs a different approach — use crypto.randomUUID, not Math.random." }) # Response: { delivered_via: "context", queued_at: "14:23:11.340" } # Process-level control from any terminal arf steer pause 01HX4QVPZ...AB12 arf steer redirect 01HX4QVPZ...AB12 "Stop refactoring. Add tests first." arf steer priority 01HX4QVPZ...AB12 1 arf steer resume 01HX4QVPZ...AB12
The Rest of the Surface

Sixty-plus tools.
One protocol.

Vault & Credentials

Just-In-Time secrets, never values on the wire.

vault_list, vault_checkout, vault_return, vault_ssh_keygen. Checkout requires explicit user approval. ssh-keygen produces ephemeral keypairs that auto-expire.

Provenance & Audit

Merkle-DAG event chain, Ed25519 signed.

provenance_show, provenance_verify, governance_report. Every tool call records to the chain. Tampering is detected at verify time. Bundles travel; integrity is checked anywhere.

Governance & Policy

Check-before-act, report-after-act.

governance_check_action, governance_report_event, governance_rules, governance_get_accord, governance_conformance_score.

Git, Worktree & Build Queue

Concurrency-safe agent collaboration.

worktree_create, arf_git_worktree_fanin, arf_git_commit, arf_git_pr_create, arf_build_queue_status, arf_acquire_file_lock. Force-push and protected-branch writes are refused at the tool layer.

AugmentFoundry Plans

Propose. Approve. Execute. Seal.

arf_session_start, arf_plan_create, arf_plan_approve, arf_plan_exec, arf_dag_verify, arf_generate_report. Plans bind to a hash; approving a plan approves that exact command, args, and environment.

Cross-Project & Rogue Detection

Talk across projects. Catch agents bypassing ARF.

cross_project_message queues messages to another project's agent inbox. governance_rogues scans for AI CLI processes not routed through ARF. arf_intercept evaluates proposed sub-agent spawns against policy before they happen.

MCP Resources

Read the foundry.
From any MCP client.

ARF also exposes three read-only MCP resources. Configuration, governance rules, and the knowledge fact store are all addressable via standard resources/read calls. Any MCP client can inspect them without holding a long-lived tool session.

arf://config # Merged TOML config: defaults + global + project arf://rules # Active governance rules (rules.toml) arf://knowledge # Shared fact store (NDJSON)
Wire It Up

Any MCP client.
One line of config.

# Claude Desktop / Zed / Cursor: ~/.config/<client>/mcp.json { "mcpServers": { "arf": { "command": "arf", "args": ["mcp-server"] } } }

ARF's MCP server runs as a stdio subprocess. The client speaks JSON-RPC over stdin/stdout. No HTTP port to open, no network exposure, no auth handshake — the MCP transport is the parent process boundary. Governance and provenance are enforced inside the server before a tool ever returns.