Fresh start every iteration
Every pass begins with a clean context window, so no stale conversation carries into the next task. What the agent needs is loaded from files, not recovered from a long chat history.
Most autonomous coding loops fall apart on a real repository. As the run gets longer, context rot sets in: the model’s judgment degrades and “done” becomes whatever the agent says it is. Rather than fight that with a bigger context window, Felix throws the context away each iteration, keeps progress on disk, and will not move on until your tests, types, and builds pass.

The core loop is the Ralph technique: restart the agent with a clean context window every pass, and let files and git carry the state instead of the conversation. It works because persistence beats orchestration. Felix is that loop hardened for production: planning and building are separate phases, memory is structured artifacts you can read, and the repository’s own tests, types, and builds decide whether a task is actually done.
Read the repoYou write a requirement. Felix plans, then builds one task at a time. After each task it runs your checks. Fail, and the loop pushes back. Pass, and it commits and continues.
Fail, and it stays. Pass, and it commits and takes the next task.
Nothing useful lives in the conversation. The next loop opens the files.
Every pass begins with a clean context window, so no stale conversation carries into the next task. What the agent needs is loaded from files, not recovered from a long chat history.
This is context offloading: state lives in specs, plans, diffs, logs, and reports rather than the prompt. You can read it, share it, or resume the loop after a crash.
Your test command, type-check, and build have to pass before the loop moves on. That backpressure is what steers the run.
Local by default. Turn on sync and the same artifacts show up on runfelix.io, so a team can watch runs without sitting on the machine.
Point Felix at a repository that already has tests. That case is what it is built for.
felix setup creates the folders, picks an agent you already have installed, and records the command that should fail if the code is wrong.
A spec in specs/ is the job: a standing test suite, not a to-do that gets crossed off and forgotten.
First it writes a plan. Then it takes one task, implements it, and stops to check. Planning is not allowed to sneak in code.
If the tests fail, the loop stays on that task. If they pass, Felix commits and takes the next one, until the requirement is actually done.
Use it when you want an agent on a real codebase, and you already have a way to tell whether the change is good.
Mature codebases with tests, types, and a build that already means something.
Leave it on a requirement. It runs until the work is done, or until the checks keep failing and it stops honestly.
Several requirements at once, each in its own isolated worktree, then merged back when the checks pass.
Mirror run artifacts to runfelix.io when you want a shared history beyond one laptop.
Claude, Copilot, Gemini, Codex, Droid. Felix is the loop around them, not another model.
That an agent reporting success is evidence of success.