Skip to content

Releases

Baton 0.3.9

Choose a tag to compare

@github-actions github-actions released this 27 Oct 09:04
e9fb5ec

Fixes

  • The event log no longer grows with Baton's own agent or ACP agents (Gemini, Qwen, …) either: their
    running commands' output is shown live and stored once, like Claude's and Codex's. Logs are compacted
    once more, and a command whose result doesn't repeat its output keeps its last output.
  • baton -c "task" (or --resume with a task) could start a second lead next to the resumed one; the
    task now goes to the resumed lead. Whatever asks for a lead at the same moment gets the same one.
  • --continue resumes the last run that had agents (not the empty run baton history starts).
  • Compacting the log waits for a daemon that is still shutting down (on macOS and Linux it could lose the
    run's last events).
  • ctrl+c twice quits only right after its "press again" warning: a ctrl+c that closed a menu, cleared
    what you typed or left a text box no longer counts.
  • Windows: a client that stops reading (a suspended laptop, a stalled phone) is disconnected instead of
    making the daemon hold everything for it, and lagging clients skip live output.
  • HTML exports and replays show agents that stopped in full again.
  • A long-running daemon checks for updates every day, not just when it starts.
  • /web in the app: the other addresses it lists carry the access key.
  • A worktree that can't be checked says why in one line.

Install: curl -fsSL https://raw.githubusercontent.com/k6w/baton/main/install.sh | sh · npm i -g batonsh · brew install k6w/tap/baton

Baton 0.3.8

Choose a tag to compare

@github-actions github-actions released this 27 Oct 08:54
454fa39

A new web view (baton web, /web)

  • Redesigned from scratch: black, quiet, with a faint touch of depth (controls that look pressable, status
    lights, recessed code). A sidebar with the run, the autonomy switch and every agent on a desktop; tabs on
    a phone.
  • Agents' work is readable: tool calls grouped and described in words (Run npm test, Edit src/app.ts)
    with their output and diffs a click away; thinking folded; Markdown with code blocks, tables and task lists;
    long messages shortened until you open them; worktree paths shortened to the part that matters.
  • What agents send each other shows as cards: who to whom, done or failed, lines changed, acceptance checks,
    work waiting to be merged — without the instructions Baton adds for the agents.
  • New views: Activity (the plan and the conversation between agents) and Changes (all unmerged work, with
    Merge). An inspector shows an agent's details, files and conflicts.
  • The inbox lets you dismiss old problems; the tab title shows how many things need you.
  • A command menu (Ctrl K), single-key navigation, @ and / suggestions and message history in the input.
  • Live updates no longer redraw the page: what you've opened, selected or scrolled to stays put, and only
    the agents whose work changed are sent again.
  • Names in any script work (the page used to stay on "Connecting…" for a name like Łukasz or 山田).
  • Agent text: a heading followed by many spaces no longer hangs the page or an HTML export, and file
    names and URLs keep their underscores (__init__.py isn't bold any more).

Install: curl -fsSL https://raw.githubusercontent.com/k6w/baton/main/install.sh | sh · npm i -g batonsh · brew install k6w/tap/baton

Baton 0.3.7

Choose a tag to compare

@github-actions github-actions released this 27 Oct 06:47
268e21b

The event log stays small (.baton/state.db)

  • A running command's output was stored again with every new chunk, all of it each time: one
    long command could add hundreds of megabytes, and a busy project's log reached gigabytes.
    Output is now shown live (a few times a second) and stored once, with the command's result.
    Big raw tool results that repeat what the card shows aren't stored either.
  • Logs from earlier versions are compacted once, the next time you start baton in the
    project (a 3.6 GB log became 170 MB). baton compact does it on demand.
  • After updating, baton notices a daemon still running the older version and offers to
    restart it (--yes to just do it): the log gets compacted and the agents that were running
    come back.

Knows when there's a new version

  • Once a day the daemon looks for a newer Baton release and says so in the orchestrator's feed,
    with the command that updates your install (baton update, npm or Homebrew). Leaving the
    app repeats it. Starting Baton never waits on this. BATON_NO_UPDATE_CHECK=1 turns it off.

Resume brings back what was running, quickly

  • Resuming a run starts only the agents that were still running when it ended. Agents you
    killed, or that failed or finished earlier, stay gone, and an agent restarted under the
    same name comes back once. (It used to bring back every agent the run ever had, including
    every agent an earlier resume had brought back.)
  • The run list (/resume, /history, baton history) opens right away: it no longer
    reads every past run in full. Resuming reads only the agents' lifecycle and latest events.
  • baton --continue (-c) resumes the last run, baton --resume <run> a given one, and
    baton --resume opens the list to pick from. baton resume [run] does the same.

Several Baton windows at once

  • Starting Baton while another one was busy could crash it ("Failed to start HTTP Client
    thread") when the machine was short on memory. Baton now uses much less memory (bounded
    tool output and history per agent, nothing kept for agents that are gone, slow clients
    can't make the daemon queue without limit), checks agents a few at a time instead of all
    at once, and only contacts a local Ollama / LM Studio when something is listening there.

Keys and copying

  • ctrl+c twice quits and stops all agents, from anywhere in the app. /quit still leaves
    them running in the background.
  • Selecting text with the mouse copies it to the clipboard when you let go.
  • /web shows the whole link (and the other addresses it's reachable at), and c copies it.
  • Copying on Windows keeps non-English characters intact.

Install: curl -fsSL https://raw.githubusercontent.com/k6w/baton/main/install.sh | sh · npm i -g batonsh · brew install k6w/tap/baton

Baton 0.3.6

Choose a tag to compare

@github-actions github-actions released this 11 Oct 19:38

Resume brings the conversation back

  • Resuming a past run (/history, now also /resume) shows each agent's earlier conversation on
    its card, above an "earlier, from the resumed run" marker. Agents that support it (Claude,
    Codex, OpenCode, Gemini, …) also continue their own session, so they remember it too.
  • The orchestrator is resumed as well: a lead that hasn't done anything yet makes way for the
    resumed one; a busy lead gets the earlier conversation shown above its own.

Select the orchestrator like any agent

  • tab from the input (or ↑ from the top row of cards) selects the orchestrator: z zooms it,
    and the other card keys work on it too. esc goes back to typing.

npm

  • Packages carry the repository link in the form npm expects (no more warnings on publish).

Install: curl -fsSL https://raw.githubusercontent.com/k6w/baton/main/install.sh | sh · npm i -g batonsh · brew install k6w/tap/baton

Baton 0.3.5

Choose a tag to compare

@github-actions github-actions released this 11 Oct 19:19

Pick models from a list

  • Worker model (defaults.model): the model for workers on your default worker agent, in
    /settings → Agents. ←→ cycles through the models that agent offers, enter types any name.
  • Lead model works the same way, and both show what the agent offers.
  • /model <agent> suggests that agent's models as you type.
  • The lists come from the agents themselves: Codex's model cache, opencode models, Claude's
    model names. An agent that can't say still takes any model you type.

Install: curl -fsSL https://raw.githubusercontent.com/k6w/baton/main/install.sh | sh · npm i -g batonsh · brew install k6w/tap/baton

Baton 0.3.4

Choose a tag to compare

@github-actions github-actions released this 11 Oct 19:01

Approvals with several Codex workers

  • Every Codex worker numbered its approval requests the same way, so when two of them were
    waiting, the newer request replaced the older one: the inbox showed only the last worker's
    request (or none, once that one was answered) while the other worker sat at "Waiting for
    approval". Requests are now unique across agents, so the inbox lists every one and approves
    the one you select.

Install: curl -fsSL https://raw.githubusercontent.com/k6w/baton/main/install.sh | sh · npm i -g batonsh · brew install k6w/tap/baton

Baton 0.3.3

Choose a tag to compare

@github-actions github-actions released this 11 Oct 18:01

Phone & web view

  • Closing the QR code screen and opening it again no longer fails with "port already in use".
    Reopening /web shows the running web view as it is (phone access stays on, same link), and
    esc says that it keeps running.
  • When the web view does restart (switching phone access, HTTPS or Tailscale), it waits for the
    old port to free up, then picks a free one if it has to. A port you set yourself
    (remote.port) gets a clear message instead.

Releases

  • npm publishing works without a token (trusted publishing), skips versions already up, and can
    be re-run for a released version (only: npm).

Install: curl -fsSL https://raw.githubusercontent.com/k6w/baton/main/install.sh | sh · npm i -g batonsh · brew install k6w/tap/baton

Baton 0.3.2

Choose a tag to compare

@github-actions github-actions released this 11 Oct 17:49

Windows: no more flashing console windows

  • Baton's background process has no console, so every command it started (git, agent CLIs,
    checks) used to pop up a console window that closed right away, sometimes dozens in a row.
    Every process Baton starts is now hidden, and a test keeps it that way.
  • The verify command before a merge, cmd: secrets and notification commands now run in Git
    Bash or PowerShell on Windows instead of sh, which isn't there.

Install: curl -fsSL https://raw.githubusercontent.com/k6w/baton/main/install.sh | sh · npm i -g batonsh · brew install k6w/tap/baton

Baton 0.3.1

Choose a tag to compare

@github-actions github-actions released this 11 Oct 17:29

Every team feature has its own switch

  • [features] in the config: roles, skills, acceptance and notes. Switched off, the agents
    never hear of it: no tools, no text in their instructions, and the matching spawn_agent fields
    go away.
  • Team notes are now opt-in (they write a file into your project). baton init asks.
  • baton features [name on|off], /features [name on|off] in the app, and a Team features page
    in /settings.
  • ui.markdown: turn Markdown rendering off to see agents' raw text (/settings → Layout).
  • Your own playbooks can follow the switches with {{#notes}}…{{/notes}} and {{^notes}}…{{/notes}}.
  • notes.enabled is replaced by features.notes.

Install: curl -fsSL https://raw.githubusercontent.com/k6w/baton/main/install.sh | sh · npm i -g batonsh · brew install k6w/tap/baton

Baton 0.3.0

Choose a tag to compare

@github-actions github-actions released this 11 Oct 17:09

Roles, skills and team memory

  • Roles: tester, reviewer, debugger, refactorer, docs, security, researcher and frontend are built
    in, plus your own in .baton/roles/*.md (baton role new). A role brings instructions, an
    access level, a model size, an agent, an acceptance check and skills. /spawn tester, /roles.
  • Worker specs: the lead's spawn_agent takes instructions, skills, files (claimed for the
    worker), acceptance and access. Its instructions now include a brief template with examples.
  • Acceptance checks: Baton runs the command when the worker finishes. The work counts only when it
    passes, with two retries on failure, and the check goes through your approval rules.
  • Read-only workers can't edit files, even in YOLO. Reviews now use the reviewer role.
  • Skills (Agent Skills layout, from .baton/skills and .claude/skills) for every agent, not just
    Claude: a menu in their instructions and load_skill to read one. baton skill new, /skills.
  • Team notes in .baton/notes.md: agents note and recall facts, new workers start with them,
    and review findings are kept. /notes, baton notes.
  • Saved teams: [teams] plus /team <name> [task].
  • pick_agent suggests a role. Cards show the worker's role, and r/o for read-only workers.
  • Reviews prefer agents confirmed to be signed in.

Markdown everywhere

  • Agent messages render as Markdown in the TUI (bold, italics, code, lists, task lists, quotes,
    tables, code blocks, links) instead of showing ** and backticks.
  • The phone/web view and HTML exports render it too, with a renderer that escapes everything
    first, so agent text can't inject markup.

Install: curl -fsSL https://raw.githubusercontent.com/k6w/baton/main/install.sh | sh · npm i -g batonsh · brew install k6w/tap/baton