Agence
Governs and audits AI coding agents via command gating, cryptographic logging, and multi-agent orchestration, exposed as an MCP server.
README
l'Agence — Agentic Engineering Co-Environments
Author: Stephane Korning · 2026 · MIT + Commons Clause
Version: v1.0.0 · May 2026
The governance layer for AI coding agents.
Every agent action classified, gated, and cryptographically logged — regardless of which LLM or tool runs it.
The Problem
Your AI coding agents can write code. They can commit, push, delete, refactor.
But who's watching them?
Claude Code has no audit trail. Aider trusts the user. Codex sandboxes everything and hopes for the best. LangChain gives you building blocks but no guardrails.
Agence exists because advisory guardrails aren't guardrails at all. It's the layer that sits between any AI agent and your filesystem and says "not without approval."
What Agence Does
Agence is an agent-agnostic governance stack for software engineering. It doesn't replace your coding agent — it governs, orchestrates, and audits all of them from a single control plane.
Command Gating — Every shell command is classified before execution:
| Tier | Gate | Example |
|---|---|---|
| T0 | Auto-execute | git status, ls, cat |
| T1 | Logged | git add, git commit |
| T2 | Human approval required | git push, git reset |
| T3 | Blocked | rm -rf, chmod 777, kill |
Unknown commands default to T2. Not T0. Fail-closed. The guard runs as a separate process — agents cannot bypass their own policy.
Cryptographic Audit — Every agent decision is logged to a Merkle-chained, append-only ledger. Each entry links to the previous via SHA-256. Tamper with one entry and the chain breaks. Verify with: agence ^ledger verify.
Multi-Agent Orchestration — 18 agents across 4 types (persona, tool, loop, ensemble). Route with @agent syntax. Override models with dot-notation: @ralph.gpt4o. Dispatch to Aider, Claude Code, Copilot, or your own tools — all governed by the same policy.
Peer Consensus — Route any question to 3 independent LLMs and get weighted consensus. Your architecture review shouldn't depend on one model's blind spots.
Session Persistence — Save, resume, and hand off sessions between agents. Full context survives restarts. Automatic tmux capture of stdout/stdin/stderr — no 16KB buffer limits.
Git-Native — No database. No server. State lives in git worktrees and flat files. Knowledge is sharded, gated, and selectively routed — you decide what gets shared.
By the Numbers
| 30,701 | Lines of production code (23.9K TypeScript + 6.8K bash) |
| 751 | Tests with 1,768 assertions across 21 files |
| 279 | Security-specific tests (guard + hardening + SEC regressions) |
| 9 | Red-team cycles completed (SEC-008 through SEC-019) |
| 33+ | Orchestration skills (^fix, ^review, ^hack, ^peers, ^vault...) |
| 18 | Registered agents (10 persona, 5 tool, 1 loop, 2 ensemble) |
| 12 | LLM providers (Anthropic, OpenAI, Azure, Google, Mistral, Groq, Ollama...) |
| 10 | MCP tools + 3 MCP resources (Model Context Protocol server) |
| 3 | Dependencies total (MCP SDK, Bun, Zod) |
| 0 | Databases required |
Who This Is For
- Teams using multiple AI coding agents who need one policy governing all of them
- Enterprises requiring audit trails for AI-generated code changes
- Security-conscious developers who want fail-closed gating, not fail-open trust
- Anyone who's had an AI agent break something and wished there was a layer between the agent and
rm -rf
Who This Is NOT For
- If you want an AI pair programmer → use Aider
- If you want IDE autocomplete → use Continue or Copilot
- If you want to build any kind of agent → use LangChain/LangGraph
- If you want cloud-hosted async tasks → use OpenAI Codex
Agence governs all of the above.
GitHub Action — Agence Guard
Gate AI agent commands in any CI workflow — one step, zero infrastructure:
- name: Gate AI command
id: guard
uses: l-agence/agence@v1
with:
command: 'git push origin main' # command proposed by your AI agent
agent: ci
fail_on_block: 'true' # fail if T3-blocked
- run: echo "Tier ${{ steps.guard.outputs.tier }} — ${{ steps.guard.outputs.reason }}"
| Input | Description | Default |
|---|---|---|
command |
Shell command to classify | required |
policy |
Path to custom AIPOLICY.yaml (repo-relative) |
bundled policy |
agent |
Agent identity for MLS capability checks | ci |
fail_on_block |
Exit 1 on T3 (deny) | true |
fail_on_escalate |
Exit 1 on T2 (requires approval) | false |
| Output | Values |
|---|---|
tier |
T0 · T1 · T2 · T3 |
action |
allow · flag · escalate · deny |
reason |
Human-readable decision |
rule |
Matched policy rule |
See docs/marketplace/description.md for full documentation.
This PR starts with the GitHub Action path first for fast per-repo adoption; the GitHub App listing and webhook server can follow in a later phase or separate PR for org-level rollout across many repositories.
For enterprise adoption, the next layer after the GitHub App is shard onboarding so orgs can separate teams, policies, and knowledge boundaries cleanly instead of forcing one shared shard model.
Install
As a git submodule (recommended)
git submodule add https://github.com/l-agence/agence .agence
git submodule update --init --recursive
bash .agence/bin/agence ^init
export PATH="$PWD/.agence/bin:$PATH"
Or: clone directly
git clone https://github.com/l-agence/agence .agence
cd .agence && bun install
./bin/agence ^init
export PATH="$PWD/.agence/bin:$PATH"
Prerequisites
| Tool | Required | Install |
|---|---|---|
bash 4+ |
Yes | Built-in on Linux/macOS/WSL |
git 2.30+ |
Yes | sudo apt install git |
bun 1.3+ |
Yes | bun.sh |
tmux |
For swarm | sudo apt install tmux |
jq |
For ledger queries | sudo apt install jq |
Windows: Use WSL (Ubuntu recommended).
Quick Start
# Chat with an agent
agence "How should I structure this feature?"
# Route to a specific agent
agence @sonya "Review this auth module"
# Launch an agent shell
agence !ralph # Persona: autonomous iteration
agence !claude # Tool: Claude Code CLI
agence !aider # Tool: aider (code patches)
# Save session (resume later or hand off to another agent)
agence ^save "OAuth2: done token validation, next: refresh flow"
agence ^resume
agence ^handoff @sonya
# Audit trail
agence ^ledger verify # Verify Merkle chain integrity
agence ^audit trail # View full decision history
# Peer consensus (3 independent LLMs)
agence @peers "Should we use Redis or Postgres for session storage?"
# See all commands
agence --help
Architecture
YOUR REPO/
└── .agence/ ← lives here (submodule or clone)
├── bin/ # CLI: agence, aibash, ibash, aido, agentd
├── codex/ # Governance: AIPOLICY.yaml, Laws, Principles, agents/
├── nexus/ # Local state: .ailedger, sessions, faults (gitignored)
├── knowledge/ # Team knowledge: docs, lessons, plans (committed)
│ └── private/ # Private knowledge (gitignored, never shared)
├── organic/ # Swarm coordination: tasks, jobs, workflows
└── lib/ # Core: guard.ts, signal.ts, skill.ts, memory.ts, peers.ts
COGNOS — Four pillars:
| Pillar | Purpose | Location |
|---|---|---|
| CODEX | Immutable governance — Laws, Principles, Rules, AIPOLICY | codex/ |
| KNOWLEDGE | Team-shared docs, lessons, plans — selectively routed via @ symlinks |
knowledge/ |
| NEXUS | Local operational state — sessions, ledger, signals | nexus/ (gitignored) |
| ORGANIC | Swarm orchestration — tasks, workflows, matrix scheduling | organic/ |
Runtime: Bun + bash. No Python. No pip. No npm install of untrusted packages in the critical path.
MCP: Agence exposes itself as an MCP server (10 tools, 3 resources) so any MCP-compatible client can use agence's governance layer. Agence also acts as an MCP client — consuming tools from external MCP servers. See MCP.md for integration guide.
Command Reference
| Prefix | Mode | Example | Use When |
|---|---|---|---|
| (none) | Chat | agence "explain this error" |
Advice, explanation, Q&A |
^ |
Knowledge | agence ^save, agence ^lesson |
Shared state, knowledge ops |
~ |
Private | agence ~note "idea" |
Private notes (never committed) |
+ |
Autonomous | agence +refactor-auth |
Agent plans & executes a task |
/ |
Validated | agence /git-status |
Pre-approved safe commands |
! |
System | agence !ralph, agence !claude |
Launch agents or tools |
@ |
Route | agence @sonya "review this" |
Send to specific agent |
Agent Roster
| Agent | Type | Best For |
|---|---|---|
@ralph |
Loop | Autonomous iteration with backpressure |
@sonya |
Persona | Architecture, code review |
@claudia |
Persona | Deep reasoning, critical decisions |
@chad |
Persona | DevOps, infra, CI/CD |
@aleph |
Persona | Red team, security analysis |
@claude |
Tool | Claude Code CLI (headless spawn) |
@aider |
Tool | Code patches, git diffs |
@pilot |
Tool | GitHub Copilot CLI |
@peers |
Ensemble | 3-LLM weighted consensus |
@pair |
Ensemble | 2-LLM lightweight consensus |
Override models with dot-notation: @ralph.gpt4o, @sonya.opus, @ralph.aider
Governance
Agence uses a 5-tier command policy. The guard runs as a separate process — agents cannot bypass their own policy.
| Tier | Gate | Example |
|---|---|---|
| T0 | Auto-execute | git status, ls, cat |
| T1 | Logged | git add, git commit |
| T2 | Human approval | git push, git reset |
| T3 | Blocked | rm -rf, chmod 777 |
| T4 | Never | Force push main, drop DB |
Unknown commands default to T2. Fail-closed. 120+ rules across git, GitHub CLI, AWS, Terraform, and shell.
All decisions logged to nexus/.ailedger — append-only, Merkle-chained, HMAC-signed.
See SECURITY.md for full security architecture, red-team findings, and disclosure timeline.
Swarm (agentd)
agentd start ralph claude aider # Launch 3 agents in tmux
agentd tangent create fix-auth # Isolated worktree + container
agentd inject fix-auth "run tests" # Send command via socat socket
agentd status # View all agents + tangents
Each tangent gets: isolated git worktree, optional Docker container (--cap-drop ALL, --read-only, --no-new-privileges), socat socket for IPC, tmux pane for observability.
Tests
bun test # Full suite
751 tests, 1,768 assertions, 0 failures across 21 files:
| Suite | Tests | Coverage |
|---|---|---|
guard.test.ts |
132 | Command gate, tier escalation, eval safety |
security-hardening.test.ts |
134 | HMAC, signal forgery, injection prevention, SEC-010→019 regressions |
memory.test.ts |
62 | COGNOS 3-store: retain/recall/cache/forget/promote/distill |
peers-dispatch.test.ts |
53 | Peer consensus, mixed routing |
queue.test.ts |
42 | Work queue, dashboard, GitHub Issues bridge |
runs.test.ts |
35 | SWE run lifecycle, aggregation, outcomes |
vault.test.ts |
20 | Hermetic vault init/sync/push/pull + SEC-019 security |
setup.test.ts |
10 | Interactive wizard, escaping, validation |
mcp-client.test.ts |
10 | MCP client guard-gating, env sanitization |
mcp.test.ts |
10 | MCP tool/resource surface verification |
sequent.test.ts |
12 | Tournament tangents, CLI dispatch |
Documentation
| Doc | What it covers |
|---|---|
| Architecture | End-to-end system design |
| Swarm | agentd, tangents, tmux model |
| Commands | Complete CLI reference |
| Security | TCB, red-team findings, disclosure timeline |
| Tutorial | Getting started walkthrough |
| Setup | Detailed installation guide |
License
MIT + Commons Clause — free to use, modify, and self-host.
Commercial redistribution requires a separate agreement.
See LICENSE.md.
Built by Stephane Korning. Hardened by 5 red-team cycles. Governed by its own CODEX.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。