Deep dive
CodeAF tested with local Ollama: parallel tasks, three-model crews, spend tracking and the rough edges
Fahd Mirza installs CodeAF, a single-binary Go coding harness that splits work into tasks, checks them and merges what passes, and tests it against a local Ollama model and an OpenRouter model. Parallel tasks and three-role crews (planner, worker, checker) worked; first-run defaults and model selection were clunky. His verdict: promising but too young to be a daily driver.
"CodeAF with Ollama: Coding Agent Factory Tested Locally" by Fahd Mirza — Watch on YouTube →
What it claims
CodeAF (spelled 'Code AF' in the captions) is a Go-based coding tool shipped as one small binary. Its pitch is that you hand it work and it splits it into tasks, runs them, checks them and merges what passes. Its repository charts a result on a set of 113 real GitHub issues (not SWE-bench, he stresses) where ten coding tools used the same model and CodeAF's own developer mode scored highest. He notes these are the project's own numbers and does not rely on them.
What he did, step by step
- Install with a single curl command (the URL is in his description, not in the captions). Test on an Ubuntu machine running a local model through Ollama on a GPU, in an empty folder with
git init. - Connect a provider. The first launch tries to reach OpenRouter, which he disliked because the tool shouldn't choose for you; he cancelled with Ctrl+C. The connect command lists providers (Ollama, Codex, GLM, MiniMax and others); running connect with
ollamaattached his local Ollama. - Pick a model with
/modelor/modelplus a name. The picker listed an Ollama model but pressing Enter didn't select it; he had to type the name. - First task. Asking 'what is in this folder' timed out the first time, because the local model hadn't loaded; the second try answered that the folder was empty.
- Parallel tasks. With an OpenRouter model he had it create a small Python app with three bugs, then pasted three fix requests (fix the add function, an off-by-one, and a third). On the right it ran tasks in parallel, with a live log in the left panel, and you can keep adding tasks while they run. Permission prompts accept 'always'.
- Crews.
/crewshows the three models used per task: a planner, a worker and a checker. A crew can mix free and paid models, and/crew models openselects open-weight ones (it picked GLM and local Ollama models). It also shows prices. He ran a cheap task (add a word-count function with a test) through it. - Spend and redo. Asking for
spendreports cost by task and model (GLM 5.3 Flash in his case), and you can redo a task with a stronger model, which needs that provider's API key (Claude Opus in his case). - Views. Pressing space twice shows a home view of every project, what is running and its cost; Alt+V shows a wall of every open conversation as live tiles. A headless mode runs from the command line using the crew's routing, and a standing order such as 'never commit straight to main' persists across work.
Gotchas & Caveats
- He calls it young with many rough edges and would not use it as a daily driver yet. Defaults pointing at OpenRouter, a picker that doesn't select on Enter, and a timeout on a cold local model were all in the first few minutes.
- Key bindings and exact subcommand spellings are as spoken; the captions garble them. Check the project's own documentation before relying on any of them.
- He tested with a small local model (reported as an 8B Llama variant), which is a poor test of the harness's quality. The tasks were tiny.
- The benchmark claim is the project's own and unverified here.
- The video includes plugs for his newsletter and a GPU-rental affiliate link.
Key Takeaways
- The planner / worker / checker crew with per-task price display is the idea worth stealing, whatever tool you use.
- Cheap open models for the worker with a stronger redo path is a sensible cost pattern.
- Check what a new harness connects to on first run before you let it phone anywhere.
- Seeing spend by task and model is more useful than a monthly total.





