Skip to content

Releases: bivysh/bivy

v0.20.5

Choose a tag to compare

@github-actions github-actions released this 01 Oct 12:33
d3f3e79

Fixed

  • A signed-in Claude Code or Codex counts as ready on first run. On a new machine whose agent was already signed in, the app said "Credential valid · The model credential is missing or invalid" and offered an Authenticate button that only opened the model picker, so the first-task card never showed, even though the agent answered fine. The check only looked at Bivy's own credential vault. It now counts the default agent's own sign-in (~/.claude, ~/.codex, ~/.grok). When Bivy can't see the login (Claude Code on macOS keeps it in the Keychain, or an agent reads an API key from the environment), the check stays out of the way instead of failing. Pi, which runs on Bivy's vault, still needs a credential there.
  • Installing or setting up Bivy from inside an agent session no longer tries to enroll with the session's token. Every agent session has BIVY_SESSION_TOKEN, a token for its own routes, and the Connect a Machine command used the same name for your account sign-in. So install.sh or bivy setup run by an agent took the token path, failed to enroll, and restarted the node the agent was running on. The command's account token is now BIVY_ACCOUNT_TOKEN. Commands copied before this change still work, except from inside an agent session.
  • Re-running Connect a Machine on an installed machine doesn't ask you to sign in. bivy relay:setup asked "Sign in with GitHub?" even when the command carried your account token or a machine claim. It now uses them.

v0.20.4

Choose a tag to compare

@github-actions github-actions released this 01 Oct 10:59
ca63d9c

Fixed

  • The first task's app opens once there's something to show. "Open … and mark what's wrong" used to open an empty Apps sheet straight away: in a GitHub checkout the session works in its own worktree, so the server you already had running wasn't found there, and the agent's fixes wouldn't have reached it anyway. The agent now publishes the app from the folder it works in (bivy app publish), and the preview opens as soon as it's published.
  • Re-running bivy setup opens the app signed in. With remote access already configured, setup skipped sign-in and opened the app on its sign-in screen. It now offers to sign in again (GitHub or email; the node keeps its identity), then opens the app signed in with this machine selected, as a first run does.

v0.20.3

Choose a tag to compare

@github-actions github-actions released this 01 Oct 08:40
cf61855

Fixed

  • Signing in to Claude Code during setup works on macOS. When the installer ran bivy setup, answering yes to "Open Claude Code now to sign in?" crashed Claude Code with EINVAL: invalid argument, kqueue. Setup now hands the agent the terminal's own device, so the sign-in opens normally.
  • The agent setup opens for sign-in is a Bivy session. Setup used to start plain claude (or another agent) for sign-in before the node was running, so the machine showed as offline and nothing you did there appeared in the app until you exited. Setup now brings the node online and opens the app first, then starts the agent with bivy run: you sign in and keep working in a session the app shows.

v0.20.2

Choose a tag to compare

@github-actions github-actions released this 01 Oct 05:22
bc96219

Added

  • Agent plans show as a checklist. When an agent keeps a todo list or plan (Grok, OpenCode, Codex update_plan, or any ACP agent), the turn shows one Plan · 2 of 4 done line where the plan was last updated, and it opens into the steps with their status. bivy tui shows the same progress as one line per turn. Before, Grok and other ACP plans were pasted into the agent's thinking after every update, and Codex plans didn't show at all.

Changed

  • What Tailscale gives you, stated plainly. bivy access, the README and the docs now say that over Tailscale you get sessions, chat, approvals, questions, terminals and files, and that push notifications and app previews need Bivy hosted or your own server. The README no longer says the node can't serve the app.
  • The agent shim is your choice. bivy setup asks before installing it, and the default is now no. Without a terminal to answer from, it isn't installed. If you say no, or there's no terminal, setup prints bivy shim install <agent> so you can turn it on later.
  • Forks carry the plan and the latest request. A fork to another agent tells it where the previous agent's plan stands, and repeats the user's latest request in full when the summary had to shorten it.
  • Agents refreshed: Claude Agent SDK 0.3.286, Codex 0.159.2, Pi 0.99.2.

Fixed

  • An agent CLI's own server is no longer offered as an app preview. OpenCode sessions showed a Preview :4096 pill for OpenCode's internal server.

v0.20.1

Choose a tag to compare

@github-actions github-actions released this 30 Sep 19:51
7bbe604

Added

  • The app matches your Omarchy theme. On a machine running Omarchy, Bivy takes on the desktop's theme (colors, and light or dark) and follows omarchy-theme-set live, on every device connected to that machine. It's the new Machine choice in Settings → Appearance, and the default when the machine has a theme.
  • bivy tui: every session on this machine and on the nodes you added with bivy nodes add, in one keyboard-driven terminal view. Sessions waiting on you come first. The right pane follows the selected transcript live; press a or r to answer what the agent is asking, i to message it and x to stop it. It uses your terminal's colors, so it matches your theme.
  • Arch Linux and Omarchy package. packaging/aur/PKGBUILD packages Bivy for the AUR as bivy (yay -S bivy). A pacman-owned install tells you to update through your AUR helper, from bivy update and from the app's Update button, instead of overwriting files pacman owns.
  • Self-host with Kamal. deploy/kamal/ deploys the control plane, web app, relay and Postgres to your own server with kamal setup, using the published images at the release you pin, one domain, Let's Encrypt TLS and no registry account. kamal owner-login prints your sign-in link. See Self-host with Kamal.
  • Your Tailscale machines, together. Run bivy tailscale on each machine and the app's machine menu lists every one on your tailnet running Bivy; pick one to open it. Your own devices, signed in to Tailscale as you, now get in without pairing; pairing links are for other people's devices.
  • bivy access shows how you reach a machine: this machine only, Tailscale, Bivy hosted or your own server. It also lists what that setup gives you (your phone, all your machines in one app, push notifications, shareable previews) and the next step. bivy access tailscale | hosted | server <url> | local adds a setup or turns remote access off. bivy status shows the same thing in one line, bivy setup now offers Tailscale when it's installed, and the app shows it under Settings → Machines. Notifications and Share tell you which setup they need when this machine doesn't have it.
  • bivy tailscale puts your machine's Bivy on https://<machine>.<tailnet>.ts.net, reachable from any device on your tailnet, with no account, control plane or relay. The node serves the web app itself. Pair a phone by opening the one-time link it prints; bivy tailscale devices and bivy tailscale revoke <id> manage who has access. See Tailscale.
  • Agents can rename their session. bivy title "<title>" (MCP: set_session_title) renames the session the agent runs in, so a session titled from a vague first message can get a title that says what the work is. The agent instructions tell agents to use it when the title doesn't fit or the work changes direction. A title set this way, or by renaming in the app, now also wins over the automatic namer if that is still running.

Changed

  • The first session runs the whole loop. Once setup passes, the app looks for dev servers already running on the machine. If one is, Open ‹app› and mark what's wrong starts a session in that app's folder and opens its preview. Your marks go to the agent, and it sends back a fix and a share link. If nothing is running, Make one small improvement asks the agent for one small change, which it reports back with bivy notify. Both turn on notifications for the device first. This replaces Show me around. bivy setup now offers the agent shim, so typing claude, codex, pi or opencode starts a Bivy session. Notifications from those terminal sessions open the session when you tap them.
  • Suggested tasks: pick them, and the agent recommends where they run. A suggestion can run here, through this session's sub-agents, or in new sessions. The agent passes bivy suggest --run here|subagents|new to pick the recommended action, which becomes the card's main button, and the other actions stay one tap away. Without it, a single card recommends here and several recommend new sessions. When an agent suggests several tasks, each card has a checkbox and the last card starts the selected ones together (e.g. Run 3 as sub-agents, Do 3 here). This replaces the ambiguous "Run all in parallel" button.
  • Apps pill above the composer. A session's published apps and running servers now have their own pill at the right end of the band above the composer, instead of hiding in the run pill. When people leave reviewer notes on a shared preview, the pill shows N new notes until you open the Apps sheet.

Removed

  • Planning notes and one-off reviews that weren't user documentation are gone from docs/.

v0.20.0

Choose a tag to compare

@github-actions github-actions released this 30 Sep 11:26
8bb2b17

Added

  • bivy context tells an agent where it is running: its session, agent, workspace, git branch, machine, published apps and the device that last drove it, plus the commands that reach the user. Add --json for one object an agent can parse.

  • bivy help --json lists every command with its usage, scope (session, node or account) and whether it takes --json. bivy help <command> shows one command. A mistyped command now says Did you mean: bivy sessions? and exits 2.

  • bivy notify "<message>" lets any agent message you: the text lands as a card in the chat, and when you're away your phone gets a push that names the session. Add --urgent to push even while you're looking. Each session pushes at most once a minute, and Agent messages in the notification settings turns these pushes off.

  • bivy ask "<question>" puts a question card in the chat and waits for your answer. It works for any agent, not only those with their own ask-the-user tool. Add --option for choices, or leave them out and you type the answer. --async returns an id to wait on later.

  • bivy guide has short playbooks for agents: showing the user something, talking to them, long work, other agents and machines, and automations.

  • Agents that use Bivy through MCP (Codex, Gemini, OpenCode and others) now get notify_user, ask_user, suggest_task, app_publish, app_screenshot, app_present, bivy_context and bivy_guide, alongside attach_to_chat. They can also read the guides as MCP resources. Each tool runs the matching bivy command, so it behaves exactly the same.

  • bivy fork, bivy approvals, bivy issues and bivy instructions bring the app's Fork, approval cards, GitHub issue pickup and agent instructions to the command line, for agents and scripts alike.

  • Session tokens. Every agent session gets BIVY_SESSION_TOKEN, a credential that reaches only its own session's routes. Session commands and MCP tools use it, so they work on multi-user hosts and for agents that can't read the node's data directory. Each call an agent makes with it is recorded in the audit log (bivy audit --session <id>).

  • Agents always get their node's bivy. Inside a session, a bivy from another install or an older version on the agent's PATH now hands off to the node's own CLI (BIVY_NODE_CLI). Agents no longer hit "Unknown command" for commands their node has.

  • pnpm run eval:agent-ux runs real agents through small tasks: show a file, notify when done, ask before acting, suggest next steps, say where they're running. It scores whether each agent used Bivy well, and reports its Bivy calls and any bivy commands it tried that don't exist.

  • Agents can set up automations. When an agent runs bivy automation apply (or the automation_apply MCP tool), your machine's approval mode decides whether you're asked first, just like any other action. The approval card lists each automation it would add, change or remove, and autonomous mode asks, as it does for deploys. Every apply leaves a note in the chat saying what changed, and if nobody was asked your phone gets a push too. bivy automation apply --dry-run shows the changes without applying them.

  • bivy attach and bivy suggest take --json and --help, and BIVY_OUTPUT=json turns on JSON output for every command that has it. With JSON on, failures come back as {"error":{"code","message","hint","next"}} with a specific exit code (2 usage, 3 not found, 4 denied, 75 node unreachable), so an agent can tell what went wrong and what to run next.

  • Several notes in one message. Mark another keeps the words you just wrote and hands the marking layer back, so "the button is too small" and "the total is misaligned" stay separate thoughts. Each mark keeps its number on the page and in the picture, and each becomes its own pin — so they are answered one at a time instead of as a lump.

  • Pins. Marks you send from a preview now stay in the chat as a card with a state, instead of vanishing into a paragraph of selectors and coordinates. A pin holds a crop of what you marked and the words you sent, and answers itself: Changed when a later run changed the pixels you marked, Element gone when what you marked left the page, Done when you say so. Only evidence moves a pin — a run that changes nothing there leaves it open.

Changed

  • A new version waits for you. An agent turn no longer reloads the preview under you, taking your scroll position, half-filled form or open menu with it. Show new version appears on the pill instead, and taking it puts you back on the same page in the same place.
  • One gesture marks the app. Point and Draw were two modes with a button each; press and hold anything in the preview to mark it, or drag on from there to circle it. Lifting without moving opens the note already listening. Mark something and the C key do the same without a gesture, and a long press inside a field or over selected text is left to the app.
  • The README now opens with what Bivy is (remote access to the coding agents on your own machine, not an agent or a cloud dev machine) and its four parts, and covers one-gesture marking, pins, share-link durations, usage-limit handoffs, bivy delegate, and the commands agents use to reach you.
  • One pill over the app. The preview's seven controls become the name, any waiting version and one menu holding Mark, Console, Compare, width, Reload and the rest — so the app keeps the screen it is being judged on.

v0.19.3

Choose a tag to compare

@github-actions github-actions released this 30 Sep 04:17
8364b95
  • The Handed over line in a forked session now links to the session it came from ("Handed over · from Claude Code · "), and Forked from in the run details opens that session too.

v0.19.2

Choose a tag to compare

@github-actions github-actions released this 30 Sep 03:59
7fdb634

Changed

  • Refresh the release-tested agent pins: Pi 0.99.1 (previously 0.87.1), Claude Agent SDK 0.3.285 and Codex 0.159.1 (previously 0.3.284 / 0.159.0). Pi 0.99 adds codemode, MCP servers and GPT-6.1 Sol, and "OpenAI Codex" sign-ins keep working under the same provider id.

Added

  • Forking to a different agent now offers that agent's models, so you can continue on a specific model instead of the agent's default. The fork sheet only lists agents that can run on this machine.
  • When a fork hands the conversation to an agent as a text summary, the chat shows one Handed over line where the new agent takes over, instead of the whole summary as a message from you. Tap it to see exactly what was sent.
  • That summary now points the agent at the full earlier conversation as a local file it can read. Previously it linked to the app, which agents can't open, so they spent their first turn trying to fetch it.

Fixed

  • Codex, OpenCode, Grok and other ACP agents: a turn that fails on a usage limit now offers Fork to another agent and Retry when the limit resets, marks the session as failed, and sends the error notification, as Claude Code and Pi already did. Codex's "try again at Oct 4th, 2026 5:18 AM" reset time is understood.
  • ACP agents' reasoning stays where it happened in a reopened transcript, instead of all moving to the top of the turn.
  • A Grok edit made without an approval prompt no longer shows a second "Created" card for the same file.
  • An edit tool that writes a whole file (OpenCode, Grok) shows as Created with its line count. Work summaries count each file once ("edited a file" for a file created and then edited), and a new file's line count no longer includes the trailing newline.
  • ACP agents' stderr output no longer shows raw terminal color codes.
  • Tool calls Pi makes from inside another tool (codemode scripts, extensions using ctx.executeTool) stay nested under that tool after the session is reopened, not only while it streams.

v0.19.1

Choose a tag to compare

@github-actions github-actions released this 29 Sep 20:13
75c5167
  • An open app preview no longer closes when the chat refreshes after a turn, a reconnect or a resync.
  • The transcript no longer redraws every message when its history refreshes, so scroll position and expanded cards are kept.

v0.19.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 18:45
6831432

Changed

  • Refresh the release-tested agent pins to the current upstream builds: Claude Agent SDK 0.3.284, Codex 0.159.0, OpenCode 1.18.33, and Grok CLI 1.0.44 (previously 0.3.281 / 0.156.1 / 1.18.32 / 1.0.41; Pi stays on 0.87.1, still the latest).

  • bivy delegate: an agent can hand a self-contained task to another agent, optionally on another of your machines, and get its answer, branch and PR back. Any agent with a shell can use it. --to codex@mac,grok,claude@linux sends one task to several agents and shows the results side by side, with Use this to continue from one of them. bivy delegate machines lists your machines and the agents each one has installed.

  • Delegated work appears as a live card in the parent's transcript, with its status, answer and a link to the child session. The child session is named after its task, links back to its parent, and nests under it in the session list. Children inherit the parent session's approval mode and sandbox unless you pass --approval / --sandbox. The target machine's own policy still applies.

  • App sharing: choose how long a share link works (1 hour, 1 day or 7 days), make view-only links without the feedback tools, and Stop sharing to end every live link at once.

  • A reasoning-effort picker for ACP agents that offer one, such as Grok.

  • Claude Code's hook blocks and warnings now show in the chat as notices.

  • After a fork to a different agent, the new session shows the original transcript with its tool cards, not a raw text replay.

  • Claude Code no longer re-sends your prompt when an answer happens to mention tokens.

  • An image the agent reads with its file-read tool no longer shows up a second time in the chat.

  • ACP agents (Grok, OpenCode): sub-agents nest under the call that started them, tool cards no longer get stuck on "Working", tool calls appear in the right order, and reopening a session no longer replays its history as new output.

  • A session's model is kept when it is reopened, and bare model names (--model gpt-5.6-sol) now bind for agents that need a provider.

  • bivy prune removes sessions and their worktrees together, so no session is left pointing at a deleted checkout.

  • A Run whose agent turn failed is now reported as failed, not succeeded.