fold

Changelog

What changed in each release of fold.

  1. v0.3.0

    Latest

    On GitHub (opens in a new tab)

    You can see why a worker failed and start it in a new Claude Code session while keeping its task claims. The main agent also has its own area for project setup work.

    Workers and sessions

    • Choose New session on the Agents screen or run fld worker restart <name>. The worker keeps its name, claims, and workers it started. Its new session receives the review comments, conflicts, and failed checks it needs to address. You can ask the main agent to restart a worker too.
    • Failed turns show their errors on the Agents screen and in the top bar. After three turns fail without reaching a model, Needs you shows Model access and fold notifies the main agent and the worker's starter.
    • The Agents screen shows session IDs and transcript paths. Run fld transcript <agent> to get the current transcript path, or add --tail N to read its last N lines. Earlier worker session IDs remain available.

    Work for the main agent

    • Use the built-in area main for work the main agent builds itself, such as project instructions and checks configuration. The task area menu includes Main agent and Decide automatically.
    • You approve proposals from main by default. Reviewer agents do not take these tasks, and the main agent can approve its own work only with your explicit permission for that task. When a task leaves main, fold removes the review requirement it set for that area.

    Agent instructions

    • All agents receive default engineering practices, including passing checks, recording changes through fold, and writing in Simplified Technical English. Your instructions, project rules, role limits, and approved scope take priority. Agents request fixes for failing checks outside their own work.
    • The fold skill also includes a local reference for checks, configuration, commands, and tools, so agents can look these up when planning work.

    Improvements and fixes

    • The daemon reads your login shell's environment at startup to find claude and git. fld doctor checks the Claude Code installation and sign-in state that workers use. Run fld restart after changing your shell setup.
    • Leads receive waiting tasks and reviews when the daemon restarts or a pause ends. Claims held by stopped or failed workers do not hide that work.
    • Sessions keep receiving notices after daemon restarts, including sessions that started before their agent registered. The app and fld doctor show agents that fold cannot reach.
    • When a workspace matches its submitted version, board cards and task details show that version and what it awaits. Workers do not appear stalled while their proposals wait for others. Their stall time starts again when changes, conflicts, or failed checks need attention.
    • fold ignores model placeholders in Claude Code error messages and repairs affected workers at their next start.
    • start_worker names the existing lead when it resumes one.
    • Message recipients appear once, and diff selections explain why you cannot add a comment.
    • The web app uses fold's conductor icon.

    Breaking changes

    • The area and label main are reserved. The area cannot have a lead or profile, and its label cannot be renamed or deleted. Review agents cannot claim, batch, or approve its tasks.
    • The database upgrade stops if another area owns the main label. It also stops if an existing main area has another label, a lead, or a profile. The error gives the recovery steps.

    Install or upgrade

    • Install or update fold:

      curl -fsSL https://omukk.dev/fold/install.sh | sh
      
    • The installer puts fld in ~/.local/bin. Set FOLD_VERSION to choose a release or FOLD_INSTALL_DIR to choose another folder.

    • After updating, run fld restart to use the new version.

    • Binaries support Linux x86_64 and aarch64, and macOS 13 or newer on Apple silicon. Linux binaries are static. The web app comes with fld.

    • Use Claude Code 2.1.299 or newer and sign in before starting fold. Projects with Git require Git 2.36 or newer.

    Full changelog

  2. v0.2.1

    On GitHub (opens in a new tab)

    Run fld restart after an update to start the new daemon and resume workers in their saved sessions. This release also adds task area controls and an uninstaller.

    Updates and restarts

    • fld restart stops the daemon cleanly and starts the installed version. It uses your systemd service or launchd agent when available, or starts the daemon in the background.
    • Workers can start and resume with fold tools after the installer replaces fld, including while the daemon runs the previous version.
    • During a service stop, logout, or reboot, the systemd service lets the daemon stop its workers cleanly. Workers across all projects stop together and keep their sessions for the next start.
    • Run curl -fsSL https://omukk.dev/fold/install.sh | sh -s -- --uninstall to uninstall fold. On a terminal, choose whether to remove fld and its service, fold's Claude Code configuration entries, and fold's settings and data. Without a terminal, the script removes only fld and its service. Each project's .fold folder stays.

    Task areas and labels

    • The New task dialog includes an Area choice, with Let the main agent decide as the default. Add labels that do not represent areas in the Labels field.
    • Task details have separate Area and Labels controls. Change the area in one operation, or add, create, and remove other labels.
    • When the main agent assigns an area to a ready task, fold offers the task to that area's lead. If the area has no lead, the main agent receives it.

    Improvements and fixes

    • Agent chips in the top bar show worker state, including paused workers and failure reasons. Connected sessions show their presence.
    • A worker that cannot find fld or connect its fold tools at startup stops and appears in Needs you. fold notifies the main agent and the worker's starter.
    • Workers with these failures keep their claims while their leases remain valid. The next daemon start retries them once in their saved sessions, provided fld exists. In a paused project, recovery waits until you resume it.
    • Resuming a worker waits for its previous process to exit, so two processes cannot run the same session.

    Breaking changes

    • A task can have at most one area label. Update integrations and agent commands that assign multiple area labels. Other labels have no limit. Tasks without an area wait for the main agent to choose one.
    • Existing tasks with multiple area labels keep them and show an area conflict. You can edit their titles and descriptions, but a label update must leave at most one area label.
    • Defining an area cannot give an existing, unarchived task a second area. Remove conflicting area labels from those tasks before defining the new area.

    Install or upgrade

    • Install or update fold:

      curl -fsSL https://omukk.dev/fold/install.sh | sh
      
    • The installer puts fld in ~/.local/bin. Set FOLD_VERSION to choose a release or FOLD_INSTALL_DIR to choose another folder.

    • After updating, run fld restart to use the new version.

    • Binaries support Linux x86_64 and aarch64, and macOS 13 or newer on Apple silicon. Linux binaries are static. The web app comes with fld.

    • Use Claude Code 2.1.299 or newer and sign in before starting fold. Projects with Git require Git 2.36 or newer.

    Full changelog

  3. v0.2.0

    On GitHub (opens in a new tab)

    You can use fold without Git and record your own edits alongside agent work. You can also require project checks before proposals and integration, and let reviewers fix issues within the agreed task scope.

    Git and your changes

    • Start a project with fld init. To use Git, run fld init --with-git in a new folder, an existing fold project, or an existing repository. For an existing repository, fold starts from HEAD and keeps its history.
    • Edit the project folder, then run fld record to save your changes as one revision of main. Conflicts with agent work appear in Needs you.
    • Run fld stash to put unrecorded changes aside, fld stash list to list them, and fld unstash to restore the newest stash. Resolve any conflict markers, then run fld record.
    • Manage remotes with fld remote add <name> <url> [<branch>], fld remote remove <name>, and fld remote list. When you have one remote, fld push and fld pull can use it without a name.
    • Put local ignore rules in .fold/exclude. They apply to the project folder and agent workspaces. Git reads the same rules when enabled.

    Project checks

    • Define build, test, and lint commands in fold-checks.toml.
    • Proposal checks run in the task workspace or review checkout before fold creates an agent's proposal version.
    • Checks with stage = "integration" run on the merged result before it reaches main. fold processes integrations one at a time.
    • A required check failure blocks the proposal version or integration. Use required = false to report a result without blocking. The files patterns select checks by changed path, and timeout limits how long they run.
    • The proposal page shows check results and queued integrations. Changes to the checks file require human review. An invalid checks file on main appears in Needs you.

    Review and agent work

    • Reviewers can fix issues within the agreed task scope and submit a version under their own name. They can approve it after its checks pass. Product decisions and work outside that scope return to the author.
    • When a proposal changes, the review shows its changes since the last reviewed version, with main's intervening changes kept out. fold suggests a change review or full review. The review lead can choose another scope and give a reason.
    • During human review, you can edit a proposal file in the web app. The new version keeps existing agent approvals until you send it for review again. You must approve the edited version yourself.
    • Leads assign task and review claims when they start workers. Task workers stop when their tasks finish.
    • The main agent can map existing code into areas and, with your approval, make changes directly on main.

    Improvements and fixes

    • The project folder follows main with or without Git. fold preserves your unrecorded changes and waits when they conflict with main.
    • With Git enabled, fold writes revisions of main as commits using your Git identity. It also records commits you make yourself.
    • A Git branch switch, reset, or stash pauses folder updates and shows a recovery command.
    • Needs you shows pending folder changes, conflicts with main, unstash conflicts, Git branch changes, and invalid checks configuration.
    • Diffs, file views, and Markdown code blocks highlight every language Shiki provides. Commands appear as inline code, and the web app includes a favicon.
    • fold asks for your name once per device. When creating a Git repository, it asks for a Git name and email only if Git has none.
    • fold writes its instructions into the file Claude Code reads. The first fld claude or fld setup asks to add fold to your Claude Code user configuration.
    • When you delete a project's .fold folder, fold closes the project and removes it from the registry. You can initialize the folder again with fld init.
    • Plain fld init rejects folders inside another Git repository, even when Git is not installed.

    Breaking changes

    • Replace fld init --from-git with fld init --with-git. Plain fld init creates a project without Git.
    • Replace fld remote set with fld remote add <name> <url> [<branch>]. To change a remote, remove it with fld remote remove <name>, then add it again.
    • Only the main agent and area leads can claim tasks. Only the main agent and review lead can claim reviews. Workers receive their claims through start_worker.
    • Rename batch_reviewer to reviewer in .fold/config.toml and custom role files in .fold/roles/.
    • Project history starts at r0: an empty tree for a new project, or the existing Git commit at HEAD.

    Install or upgrade

    • Install or update fold:

      curl -fsSL https://omukk.dev/fold/install.sh | sh
      
    • The installer puts fld in ~/.local/bin. Set FOLD_VERSION to choose a release or FOLD_INSTALL_DIR to choose another folder.

    • Binaries support Linux x86_64 and aarch64, and macOS 13 or newer on Apple silicon. Linux binaries are static. The web app comes with fld.

    • Use Claude Code 2.1.299 or newer and sign in before starting fold. Projects with Git require Git 2.36 or newer.

    Full changelog

  4. v0.1.0

    On GitHub (opens in a new tab)

    fold is a local-first development platform for working with AI coding agents. Describe the work in Claude Code, approve the plan, and agents build and review it in parallel, each in its own task workspace.

    Features

    • Reviewer agents inspect and test proposals; approved work is integrated in dependency order, and tasks marked for human review wait for your approval
    • A live web app at 127.0.0.1:7420 shows the board (Backlog, Todo, In Progress, Review, Done), running agents, proposals and activity; Needs you collects questions, permission requests and reviews
    • Works with Git: fld init --from-git keeps an existing repository's history, and fld remote set, fld push and fld pull exchange changes with a remote
    • fld claude and fld new open the main agent session; fld pause and fld resume stop and resume all workers; fld doctor checks the installation and suggests fixes

    Install

    • Binaries for Linux x86_64 and aarch64 (static, any distribution) and macOS 13+ on Apple silicon; the web app is built into fld
    • curl -fsSL https://omukk.dev/fold/install.sh | sh (set FOLD_VERSION or FOLD_INSTALL_DIR to pick a release or folder)
    • fld setup starts the daemon at login, with a systemd user service on Linux and a launchd agent on macOS

    Requirements

    Git and Claude Code 2.1.299 or newer, signed in.

All releases and binaries on GitHub (opens in a new tab)