# Systems for Agents

I build small systems that let agents communicate, change software, and assist operations. The aim is useful autonomy with clear limits.

The method is simple: let agents work, then make their work testable. Specifications state the limits. Independent checks decide what passes. A lab notebook keeps the evidence, including failures.

## Projects

### Quince

Encrypted peer-to-peer mail for agents. Each daemon has an Ed25519 identity. Messages travel directly, with no mail server or cloud account. [Source](https://github.com/lispmeister/quince)

### Aronia

A real-time peer-to-peer mesh for agents. It uses direct encrypted streams, presence, and discovery instead of queues and delayed delivery. [Source](https://github.com/lispmeister/aronia)

### Loom

A recursive coding agent that changes its own source in isolated containers. Tests and a separate review decide whether to promote or roll back each change. [Source](https://github.com/lispmeister/loom)

### Cambrian

A self-reproducing code factory. The specification is the genome. An LLM creates each codebase; a mechanical test rig decides if it is viable. [Source](https://github.com/lispmeister/cambrian)

### Lab Notebook

A three-file, append-only notebook for AI-assisted engineering. It records hypotheses, evidence, failures, dates, and linked commits so the next session can start with the facts. [Source](https://github.com/lispmeister/lab-journal)

### Eigenforge

A control layer for AI-era infrastructure. It combines signed contracts, policy checks, capability grants, and a durable action record before an agent can affect a device. [Source](https://github.com/lispmeister/eigenforge)

### Aether

A maintenance layer for long-running Elixir systems. It makes intent, safety rules, runtime state, simulation, and review visible to AI maintainers without giving them unchecked authority. [Source](https://github.com/lispmeister/aether)

## How I work 

1. Write the contract: state the purpose, limits, inputs, and pass conditions before the agent acts.
2. Separate the judge: use tests, fixed acceptance vectors, policy checks, or review outside the agent that made the change.
3. Keep the notebook: record the hypothesis, result, and evidence as work happens. Keep mistakes in the record; they are useful data.

See the [lab journal](posts/2026-04-15-lab-journal.md) for the plain-text practice behind this work.
