Agence

io.github.l-agencePublished by GitHub account l-agencev1.0.0Updated Oct 24, 2026

AI governance MCP server — policy enforcement, skills, memory, multi-LLM consensus

Overview

AI-generated overview

Agence is a local governance layer for AI coding agents: it classifies and gates shell commands, keeps a tamper-evident audit ledger, and routes work across…

What you can do
  • Classify and gate shell commands into tiers, from auto-execute to blocked, with unknown commands defaulting to human approval
  • Record agent decisions in an append-only, Merkle-chained, HMAC-signed ledger and verify its integrity
  • Route requests to registered agents and tools, including Claude Code, Aider and Copilot, and override models
  • Run peer consensus across several independent LLMs and save, resume or hand off sessions
  • Manage shared and private knowledge, plus swarm orchestration with isolated worktrees and tmux panes
When to use it
Worth adding when several AI coding agents work in the same repository and you want one fail-closed policy, an audit trail of what they did, and a single place to route and review their work. Less useful if you only want autocomplete or a single pair-programming assistant.
Requirements
Runs as a local process on the user's machine (desktop only). Needs bash 4+, git 2.30+, Bun 1.3+, and optionally tmux and jq; Windows users need WSL. The AGENCE_ROOT environment variable points at the installation root and is auto-detected when installed via npm. LLM provider credentials are needed for agent and consensus features.
Before you install
The server sits between agents and your filesystem and can execute or block shell commands, so policy configuration matters. It stores sessions, ledger entries and private notes locally, and shared knowledge is committed to git while private knowledge is gitignored. Consensus and agent routing send prompts to third-party LLM providers, and the README notes a Commons Clause license alongside MIT.

Installation

In SourceWeft

  1. Open Agence in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

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:

TierGateExample
T0Auto-executegit status, ls, cat
T1Loggedgit add, git commit
T2Human approval requiredgit push, git reset
T3Blockedrm -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,701Lines of production code (23.9K TypeScript + 6.8K bash)
751Tests with 1,768 assertions across 21 files
279Security-specific tests (guard + hardening + SEC regressions)
9Red-team cycles completed (SEC-008 through SEC-019)
33+Orchestration skills (^fix, ^review, ^hack, ^peers, ^vault...)
18Registered agents (10 persona, 5 tool, 1 loop, 2 ensemble)
12LLM providers (Anthropic, OpenAI, Azure, Google, Mistral, Groq, Ollama...)
10MCP tools + 3 MCP resources (Model Context Protocol server)
3Dependencies total (MCP SDK, Bun, Zod)
0Databases 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

[GitHub Marketplace]

Gate AI agent commands in any CI workflow — one step, zero infrastructure:

yaml
- 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 }}"
InputDescriptionDefault
commandShell command to classifyrequired
policyPath to custom AIPOLICY.yaml (repo-relative)bundled policy
agentAgent identity for MLS capability checksci
fail_on_blockExit 1 on T3 (deny)true
fail_on_escalateExit 1 on T2 (requires approval)false
OutputValues
tierT0 · T1 · T2 · T3
actionallow · flag · escalate · deny
reasonHuman-readable decision
ruleMatched 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)

bash
git submodule add https://github.com/l-agence/agence .agencegit submodule update --init --recursivebash .agence/bin/agence ^initexport PATH="$PWD/.agence/bin:$PATH"

Or: clone directly

bash
git clone https://github.com/l-agence/agence .agencecd .agence && bun install./bin/agence ^initexport PATH="$PWD/.agence/bin:$PATH"

Prerequisites

ToolRequiredInstall
bash 4+YesBuilt-in on Linux/macOS/WSL
git 2.30+Yessudo apt install git
bun 1.3+Yesbun.sh
tmuxFor swarmsudo apt install tmux
jqFor ledger queriessudo apt install jq

Windows: Use WSL (Ubuntu recommended).


Quick Start

bash
# Chat with an agentagence "How should I structure this feature?"
# Route to a specific agentagence @sonya "Review this auth module"
# Launch an agent shellagence !ralph                    # Persona: autonomous iterationagence !claude                   # Tool: Claude Code CLIagence !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 ^resumeagence ^handoff @sonya
# Audit trailagence ^ledger verify            # Verify Merkle chain integrityagence ^audit trail              # View full decision history
# Peer consensus (3 independent LLMs)agence @peers "Should we use Redis or Postgres for session storage?"
# See all commandsagence --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:

PillarPurposeLocation
CODEXImmutable governance — Laws, Principles, Rules, AIPOLICYcodex/
KNOWLEDGETeam-shared docs, lessons, plans — selectively routed via @ symlinksknowledge/
NEXUSLocal operational state — sessions, ledger, signalsnexus/ (gitignored)
ORGANICSwarm orchestration — tasks, workflows, matrix schedulingorganic/

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

PrefixModeExampleUse When
(none)Chatagence "explain this error"Advice, explanation, Q&A
^Knowledgeagence ^save, agence ^lessonShared state, knowledge ops
~Privateagence ~note "idea"Private notes (never committed)
+Autonomousagence +refactor-authAgent plans & executes a task
/Validatedagence /git-statusPre-approved safe commands
!Systemagence !ralph, agence !claudeLaunch agents or tools
@Routeagence @sonya "review this"Send to specific agent

Agent Roster

AgentTypeBest For
@ralphLoopAutonomous iteration with backpressure
@sonyaPersonaArchitecture, code review
@claudiaPersonaDeep reasoning, critical decisions
@chadPersonaDevOps, infra, CI/CD
@alephPersonaRed team, security analysis
@claudeToolClaude Code CLI (headless spawn)
@aiderToolCode patches, git diffs
@pilotToolGitHub Copilot CLI
@peersEnsemble3-LLM weighted consensus
@pairEnsemble2-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.

TierGateExample
T0Auto-executegit status, ls, cat
T1Loggedgit add, git commit
T2Human approvalgit push, git reset
T3Blockedrm -rf, chmod 777
T4NeverForce 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)

bash
agentd start ralph claude aider   # Launch 3 agents in tmuxagentd tangent create fix-auth    # Isolated worktree + containeragentd inject fix-auth "run tests"  # Send command via socat socketagentd 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

bash
bun test                          # Full suite

751 tests, 1,768 assertions, 0 failures across 21 files:

SuiteTestsCoverage
guard.test.ts132Command gate, tier escalation, eval safety
security-hardening.test.ts134HMAC, signal forgery, injection prevention, SEC-010→019 regressions
memory.test.ts62COGNOS 3-store: retain/recall/cache/forget/promote/distill
peers-dispatch.test.ts53Peer consensus, mixed routing
queue.test.ts42Work queue, dashboard, GitHub Issues bridge
runs.test.ts35SWE run lifecycle, aggregation, outcomes
vault.test.ts20Hermetic vault init/sync/push/pull + SEC-019 security
setup.test.ts10Interactive wizard, escaping, validation
mcp-client.test.ts10MCP client guard-gating, env sanitization
mcp.test.ts10MCP tool/resource surface verification
sequent.test.ts12Tournament tangents, CLI dispatch

Documentation

DocWhat it covers
ArchitectureEnd-to-end system design
Swarmagentd, tangents, tmux model
CommandsComplete CLI reference
SecurityTCB, red-team findings, disclosure timeline
TutorialGetting started walkthrough
SetupDetailed 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.

Source: README.md at commit 11a9bd8

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v1.0.0LatestSep 16, 2026

Score

40% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.