the short version

How it works, in plain words.

fabrig is a family of tools for building software with agents, and temper is the one you run. This page is written for people. The design documents in the repository are written for agents, and they read that way.

The one idea

Mechanics are code, and judgement is an LLM’s. A model is woken only to produce a change, repair it, review it or resolve a conflict. Queueing, updating and merging are deterministic procedure, and authority enforces the split: agents have no merge or update tool to misuse.

People decide what to build and why, at the level of goals, designs and plans, and step in where agents can’t decide.

Five primitives

Everything temper does is built from five things, which is why so many ways of working fit. Plans, coordinators, chats, goals and reviews are all made from them.

A change, by default

This is the path temper takes out of the box. ✦ marks a model being woken, ■ marks code.

  1. Produce

    An agent is woken to write the change, under a charter and a budget.

  2. Review

    An agent reviews it. This is a gate in the stock landing rule, so it’s a setting you can change.

  3. Queue

    Each landing branch has its own queue. Priorities order it.

  4. Update

    Code brings the change up to date with main. On a conflict, an agent is woken for that alone, to resolve it.

  5. Gate

    Procedure runs the checks. On red, an agent is woken to repair what the gate named, and the gate runs again.

  6. Merge

    Pinned to the commit that was checked, and no other. Landing rules are checked here, whatever a task’s authority says.

  7. Verify

    Slower suites follow main. A red is rerun alone, then bisection assigns the blame.

Changing the path

That path is one of many. You can say any of these to the configuring agent, in your own words.

What no setting moves

A careful guest on your forge

Repositories are adopted as they are, on Forgejo or GitHub. temper writes only to what it owns, never forces a push, and merges exactly the head its decision saw. A change it didn’t make to what it owns is drift: the work relying on it is held, and nothing is written over.

Underneath

Reliable

Scalable

Flexible

The family

One repository, five trees, and dependencies that point one way.

TreeWhat it isBuilds on
skeinOne thread, one loop, no async: the io and protocol kit
smithA protocol-driven agent loopskein
jigThe engine for agentic applications: durable work, authority, effects made onceskein, smith
temperAgent-driven software development on a forge: the part you runskein, smith, jig
hearthImmutable machines, built from a revisionskein

The words you’ll meet

You don’t need these to start, since the configuring agent speaks your language. They’re here for when you read a proposal’s settings.

GoalA tracked task. Its tree of delegates is its plan.
ChangeOne piece of work on a branch, carried to landing by a procedure.
CharterA role: its instructions, models, tools and limits per run.
TemplateA way to start work, such as a chat or a goal.
Landing ruleWhat a change must meet before temper merges it: CI, being up to date, gates, approvals.
GateA check that counts for landing: an agent’s review, or a test workflow.
ReceiptA gate’s recorded result for a tree, reused rather than run again.
TierA slower suite that follows a branch after landing.
CoordinatorThe agent that shapes a goal’s plan and handles its results.
ForemanA read-only agent that answers a producer’s questions first.
ProposalA request beyond its maker’s authority, waiting for someone who may decide.
RevisionThe settings as one change left them. A task keeps the charter of the revision it was made in.

Tell temper how you work · The hard questions