Agents that build while you sleep.

fctl is an open source software factory. Agents work in sandboxes on your own Mac, around the clock, on your Claude subscription. Start them from the web, your terminal or your phone, and follow every session live.

curl macOS · Linux
curl -fsSL https://fctl.sh/install | sh

Claude CodeCloudflare WorkersApple containerFirecrackerDockerGitHubLinear

Three steps from a spare Mac to agents at work.

  1. Turn a machine into a runner

    One command registers it and starts it as a service. Each session gets a Linux sandbox of its own — a lightweight VM with Apple's container runtime on a Mac, a Firecracker microVM or a Docker container on Linux — with a fresh clone, its own branch and your project's setup script.

    $ fctl host install
  2. Connect your Claude subscription

    Sign in once with your Pro or Max plan. fctl refuses API keys, checks every session's billing source, and pauses a session before it would draw on paid extra usage. Rate limits pause and resume on their own.

  3. Give agents work

    From the app, the terminal or Claude on your phone. Agents commit on their branch, push, and open a pull request when they are done. Message them any time to steer.

    $ fctl run -p my-app "Add a dark mode toggle"

The rest of the factory.

One agent in a terminal is a tool. These are the parts that make many of them a factory you can leave running: reviews on every commit, tickets handed over, work that starts on its own, and the machines it all runs on.

Review agents

An agent reads every new commit of every pull request, your team's included, and says what it found on the lines it's about. On an fctl agent's pull request, the findings go back to it, and it fixes them.

Read a review

Runners and sandboxes

One command turns a Mac or a Linux box into a runner. Every session gets a fresh sandbox of its own there, in Apple's container runtime, a Firecracker microVM or Docker.

Runners Sandboxes

Linear

Delegate a ticket to fctl the way you would to a teammate. It moves to In Progress, the agent answers in its thread, and the pull request comes back linked.

Hand one over

Workspaces and projects

A workspace for each team and a project for each repository, with roles, limits on what agents may do on GitHub, and the Claude plan each person's work runs on.

Set one up

Schedules

Dependency updates every week, benchmarks every night: work that starts on its own, each run a session you follow like any other.

Set a schedule

Every feature, from sessions to the CLI

Made for the long run.

A session in the app: driver-app#75, brought back twice by its pull request, once when its lint check failed on GitHub and once when Lucía asked in a comment for a shorter address. The agent fixes both and answers her. A session in the app: driver-app#75, brought back twice by its pull request, once when its lint check failed on GitHub and once when Lucía asked in a comment for a shorter address. The agent fixes both and answers her.
A session, back at work on its pull request
The Agent Floor on a phone: four agents working and one waiting, and the Claude plan's limits. The Agent Floor on a phone: four agents working and one waiting, and the Claude plan's limits.
The Agent Floor
An agent's question on a phone: platform#445 asks whether a webhook that ends up in the dead letters should page whoever is on call, with two answers to tap. An agent's question on a phone: platform#445 asks whether a webhook that ends up in the dead letters should page whoever is on call, with two answers to tap.
An agent asks, you answer

Follow along anywhere

Sessions join Claude's Remote Control, so they show up in Claude on your phone and desktop, where you can read along and reply.

Work as a team

Share projects and sessions. Everyone sees the same live transcript, who else is watching, and anyone with access can steer the agent.

A terminal that keeps up

fctl attach streams any session into your terminal, token by token. send, interrupt and stop steer it from scripts and CI.

Open source, yours to run

All of fctl is on GitHub, MIT licensed. Use the managed control plane at app.fctl.sh, or deploy your own with one command, on Cloudflare or in one container anywhere. Agents run on your hardware either way.

Built not to drop work

A Rust core end to end. Agents journal every event before it leaves the sandbox, links reconnect and replay, hosts pick running sessions back up after a restart, and agents leave notes for the agents after them.

Around the clock

Hosts keep their machine from sleeping, idle sessions wind down on their own, a queue holds work until a runner is free, and access tokens let your other tools start work as you.

How the pieces fit.

You talk to the control plane. Your machines dial out to it and run each session in a sandbox of its own, so nothing on your network listens for anyone.

Every session lives in a Durable Object that keeps its event log and fans it out to everyone watching. Read the architecture

Start a factory tonight.

curl -fsSL https://fctl.sh/install | sh