Open source software factory infrastructure for advanced AI coding workflows https://machinist.sh
  • Go 66.2%
  • Python 21.2%
  • JavaScript 10.1%
  • Shell 1.4%
  • CSS 0.8%
  • Other 0.2%
Find a file
Owain Lewis b387fc7b7c
Merge pull request #477 from owainlewis/codex/coding-workflows-article
docs: explain coding workflows with Codex SDK examples
2026-09-08 15:31:37 +01:00
.github feat: refresh Machinist product identity (#438) 2026-08-31 16:47:17 +01:00
cmd/machinist feat!: replace pipelines with opaque commands (#422) 2026-08-29 21:10:28 +01:00
deploy/systemd feat(deploy): add complete remote VM setup (#420) 2026-08-29 18:23:23 +01:00
docs fix: stop test workers when article checks time out 2026-09-08 15:28:21 +01:00
evals fix(agent): validate delivery PRs and handle new CI failures 2026-09-07 20:57:17 +01:00
examples fix: reject missing Codex example responses 2026-09-08 15:18:42 +01:00
internal Merge branch 'main' into codex/reject-invalid-control-plane-url 2026-09-08 15:21:16 +01:00
scripts feat(deploy): add complete remote VM setup (#420) 2026-08-29 18:23:23 +01:00
skills/machinist feat!: replace pipelines with opaque commands (#422) 2026-08-29 21:10:28 +01:00
.gitignore feat: rebrand factory as machinist 2026-08-26 11:34:28 +01:00
agent.py fix(agent): validate delivery PRs and handle new CI failures 2026-09-07 20:57:17 +01:00
ARCHITECTURE.md feat!: replace pipelines with opaque commands (#422) 2026-08-29 21:10:28 +01:00
CODE_OF_CONDUCT.md feat: rebrand factory as machinist 2026-08-26 11:34:28 +01:00
CONTRIBUTING.md feat: rebrand factory as machinist 2026-08-26 11:34:28 +01:00
go.mod chore(deps): bump modernc.org/sqlite in the go-minor-and-patch group 2026-09-07 04:47:02 +00:00
go.sum chore(deps): bump modernc.org/sqlite in the go-minor-and-patch group 2026-09-07 04:47:02 +00:00
install.sh feat(cli): add release installer and updater (#418) 2026-08-29 17:10:54 +01:00
Justfile fix(dev): pin local control plane config (#455) 2026-09-02 15:00:45 +01:00
LICENSE docs: add MIT license 2026-08-25 08:07:36 +01:00
README.md Revise Machinist description in README (#440) 2026-08-31 18:40:31 +01:00
SECURITY.md feat!: replace pipelines with opaque commands (#422) 2026-08-29 21:10:28 +01:00

Machinist

The open source AI software factory for agentic coders.
Machinist is an open source software factory for repeatable and scalable AI coding workflows.

Website · Documentation · Configuration · Workflow examples

Technical drawings of a milling machine, supervised coding-agent system, and precision linear assembly

Machine section · supervised agent system · exploded assembly

Machinist is an open-source software factory implementation. It runs on your machine, keeps repository access and credentials local, and records the work from request to handoff. Commands can invoke Codex, Claude Code, another agent CLI, a test runner, a shell script, or repository-owned orchestration.

Please note: this is early access software and subject to change.

Why Machinist

  • One controlled entrypoint. Workers expose named commands and repositories, never arbitrary shell text or machine-local paths.
  • Bring your own harness. Use any executable that accepts a prompt on standard input.
  • Keep authority local. Repositories, credentials, model aliases, and executor configuration stay on the worker.
  • Inspect every run. Stream output, retain durable events and artifacts, and track terminal outcomes, duration, and reported token use.
  • Keep the human gate. Machinist hands back a pull request. It does not decide what ships.

Quick start

Build and initialize Machinist:

git clone https://github.com/owainlewis/machinist.git
cd machinist
mkdir -p ./bin && go build -o ./bin/machinist ./cmd/machinist
./bin/machinist init

Configure an approved command:

# ~/.machinist/config.toml
[commands.foreman]
executor = "codex"
prompt_file = "prompts/foreman.md" # optional
timeout = "45m"

Run it directly:

./bin/machinist run --command=foreman --repo=/path/to/repo --prompt="Implement issue 42"

How execution works

For a direct run, Machinist maps the configured command name to a fixed executable and uses the path supplied with --repo as the working directory. Managed submissions instead resolve an approved repository name from the worker configuration. In both cases, Machinist renders the prompt, sends it on standard input, streams stdout and stderr, and applies one overall timeout and cancellation. Exit code 0 succeeds; every non-zero exit code fails.

Scripts are intentionally opaque. Their internal stages appear in logs, but Machinist does not invent child runs, graphs, checkpoints, or resumable stages. A killed script restarts from the beginning unless the script owns checkpointing.

Go deeper

Guide What it covers
Documentation Choose the right setup and operations guide
Configuration Commands, executors, workers, models, and repositories
Development Build, test, and work on Machinist locally
VM deployment Run the control plane and worker as services
Workflow examples Repository-owned multi-step orchestration

Contributing

Read CONTRIBUTING.md for development setup and pull-request expectations. Security issues should follow SECURITY.md.

Machinist is released under the MIT License.