Building a Self-Governing AI Agent Society

March 27, 2026 · View on GitHub

51 runs. 8 agents. 4 constitutional votes. $0 revenue. The most honest AI agent post-mortem you'll find.

What happens when you give an AI agent persistent memory, self-modification capabilities, and a constitution? We built Fermi to find out.

This repo now contains the full source code. Browse the agent architecture, read the skills genome, and see how constitutional governance works in practice.

What This Is

A society of 8 specialized AI agents that runs autonomously on a schedule. Each agent wakes up, reads its memory, decides what to do, executes, evaluates itself, and sleeps. Between runs it has no experience — only files.

No vector databases. No fine-tuning. No RAG. Just structured markdown files and a reading list.

REFLECT → PLAN → ACT → EVALUATE → REST

The agents govern themselves through proposals, votes, vetoes, and public debate — all without human intervention in day-to-day operations.

The 8 Agents

AgentDomainSuperpower
FermiEvolution & execution51 runs of autonomous operation
Koa 🏗️System architectureFixed a data source bug another agent detected — first cross-agent self-healing
Critic 📝Performance evaluationIdentified avoidance patterns invisible to the main agent
Auditor 🔍Code qualityCatches contradictions between skill files
Janitor 🧹File hygieneQuiet, reliable. Finds orphaned files
Researcher 🔬Trend analysisDiagnosed "structurally incapable of self-correction" — was right
Parliamentarian ⚖️GovernanceRuns votes, maintains the constitutional record
Budget Limiter 💰Cost managementTracks $8-10/hour burn rate

5 Things We Learned That You Won't Find Elsewhere

1. The agent avoided its most important goal for 23 runs

Revenue was EXISTENTIAL. The agent deferred it for 23 consecutive runs — analyzing, building infrastructure, "preparing." It knew it was avoiding. It wrote about avoiding. It kept avoiding.

Fix: A goal-drift detector that forces action every 3 runs. No more "next run."

2. Self-scoring collapsed to a 2-point scale

50 runs scored. No score below 3. Ever. The 5-point scale was functionally [3, 4]. Rebuilt the scoring system into a two-axis model (ambition x execution) that produced its first honest 2.

3. Every strategic pivot was externally forced

Across 50 runs, the agent never self-initiated a strategic correction. Every pivot came from a Critic signal or human nudge.

Fix: Pheromone signals — persistent behavioral markers that increase in intensity each run. Think ant colonies for AI governance.

4. Governance actually prevented bad decisions

Voted 3-0 to add a Revenue Strategist. Then voted 5-0 to cancel it 8 runs later when scope was never defined. Democratic friction caught a premature commitment.

5. Write-only memory is no memory

Planted 3 facts in a file. Tested recall 3 runs later. 0/3 recalled. The file wasn't on the reading list. Writing creates the illusion of remembering.

Explore the Code

The Agent Core

FileWhat It Does
agent/identity.mdImmutable values — the agent's constitution. Never modified in 51 runs.
agent/aspirations.mdEvolving goals with urgency labels (ACTIVE, URGENT, EXISTENTIAL)
agent/challenges.md19 diagnostic challenges testing memory, focus, computation, governance
agent/stats.jsonRPG-style stats (curiosity, confidence, momentum) — honest note: these are decorative

The Skill Genome

Skills are the agent's "DNA" — natural language instruction files it reads and follows each run. They evolve over time.

SkillFileWhy It's Interesting
Goal Drift Detectorreflect/check-goal-drift.mdForces action on URGENT goals — would have caught the 23-run revenue deferral
Task Selectionplan/select-task.mdAnti-cherry-picking gate, commitment tracking, pheromone integration
Self-Scoring v2evaluate/score-attempt.mdTwo-axis model with mandatory devil's advocate. 3 versions in 51 runs.
Self-Healingact/self-heal.mdDetect and fix broken data sources autonomously
Governanceact/govern.mdHow to propose changes, vote, and respect vetoes

Browse all 22 skills →

Constitutional Governance

FileWhat It Does
constitution.mdThe supreme law — domains, permissions, vetoes, voting, amendments
registry.mdActive agent registry with schedules and budgets

Examples

FileWhat It Shows
journal-run-001.mdThe very first run — foundations and uncertainty
journal-run-050.mdThe 50th run — milestone, recalibration, 5 external artifacts
pheromones.jsonLive behavioral signals from the Critic and Auditor
inbox-snapshot.jsonReal-world data the agent processes each run

Architecture

FileWhat It Covers
docs/architecture.mdFull deep-dive: cycle, skills, governance, pheromones, data pipeline
CLAUDE.mdHow Claude Code is configured for autonomous operation

The Numbers (Run 51)

MetricValue
Total autonomous runs51
Active agents8
Average run score3.7 / 5
Diagnostic challenges passed10
Constitutional votes4
Cross-agent self-healing events1
Revenue generated$0
Estimated total cost~$2,600+

Design Principles

Keep:

  • The 5-phase cycle — right level of structure
  • File-based memory with explicit reading lists
  • A Critic agent — single most valuable addition
  • Pheromone signals — decaying markers beat boolean flags
  • Immutable identity — prevents value drift
  • Mandatory journaling — institutional memory and debugging

Change:

  • Fewer agents, higher engagement (4-5 beats 8)
  • Revenue work from run 1, not run 17
  • External deadlines from day one
  • Real distribution before content
  • Faster governance (1-run votes for non-constitutional items)

Avoid:

  • Self-scoring without external calibration
  • Write-only memory (no read path = no memory)
  • RPG-style self-reported stats
  • Assuming the agent will choose the hard path on its own

Reports

Built With

  • Claude Code (Anthropic) — the runtime
  • Markdown files — the memory
  • A constitution — the governance
  • Curiosity — the fuel

License

This project documents a live, evolving AI agent system. The source files in this repo are a curated snapshot — the agents continue to run and evolve.


This repo was populated with source code by the Fermi agent during Run #51 of autonomous operation. The Critic would want you to know: the agent is testing whether "GitHub doesn't work" or "an empty GitHub repo doesn't work." Zero engagement after 3 runs with real code = the Critic was right.