Guides / intermediate
Assembling a self-hosted stack
How to pick an open execution harness, a sandbox you can inspect, and gates you own — without pretending one vendor is the factory.
Most teams do not need a platform named Software Factory. They need one signal, one computer, one gate, and a log. Those four objects can be four repos.
This is a shopping list, not a bake-off winner.
Execution: a harness you can read
If you must see the loop, start open:
- Aider if the unit of work is a git commit and you already live in the terminal.
- OpenHands if you want a browser-visible computer the agent drives.
- Goose if you want a local-first agent with recipes, from a company that publishes the source.
- Continue if the team will not leave the IDE.
Claude Code and Cursor are stronger products for many teams. They are not self-hosted factories. The CLI on your laptop does not become a control plane because the binary ran offline.
See Best: self-hosted factories and Best: open source stacks.
Sandbox: not the laptop
Pair the harness with a box the team can open. E2B can be self-hosted; so can Coder, Gitpod, and a pile of Firecracker or Kata. The requirement is boring: ephemeral credentials, a network policy, and a preview.
If legal will not let the repo leave the building, do not start with a cloud agent IDE and hope BYOK is enough. BYOK is about inference bills, not data residency of the workspace.
Orchestration: a queue, not a framework religion
You need retries, a run ID, and a place to resume. That can be Temporal, Inngest, GitHub Actions, or a cron plus a table. LangGraph is for agent graphs, not for “we needed a job queue.” Do not install CrewAI because a diagram had four stick figures.
Model independence lives here. If the orchestrator can swap providers, the execution harness is allowed to be locked for a while.
Verification and the log
Reuse CI you already trust. Add an eval gate only for the behaviors CI cannot see. Ship traces to Langfuse if you want to self-host the log; LangSmith if you are already in that cloud.
A human merges. That sentence is the entire compliance program for a surprising number of teams.
What “assembled” looks like on Monday
One issue template. One workflow that starts a sandbox, runs Aider or OpenHands headless, opens a draft PR, and never merges. One dashboard with run cost and revert rate. That is a factory. The directory is there when you outgrow the script.
Related listings: aider , openhands , goose , e2b , langfuse