Releases: bivysh/bivy
Release list
v0.20.5
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. Soinstall.shorbivy setuprun 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 nowBIVY_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:setupasked "Sign in with GitHub?" even when the command carried your account token or a machine claim. It now uses them.
v0.20.4
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 setupopens 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
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 withEINVAL: 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 withbivy run: you sign in and keep working in a session the app shows.
v0.20.2
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 tuishows 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 setupasks 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 printsbivy 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
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-setlive, 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 withbivy nodes add, in one keyboard-driven terminal view. Sessions waiting on you come first. The right pane follows the selected transcript live; pressaorrto answer what the agent is asking,ito message it andxto stop it. It uses your terminal's colors, so it matches your theme.- Arch Linux and Omarchy package.
packaging/aur/PKGBUILDpackages Bivy for the AUR asbivy(yay -S bivy). A pacman-owned install tells you to update through your AUR helper, frombivy updateand 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 withkamal setup, using the published images at the release you pin, one domain, Let's Encrypt TLS and no registry account.kamal owner-loginprints your sign-in link. See Self-host with Kamal. - Your Tailscale machines, together. Run
bivy tailscaleon 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 accessshows 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> | localadds a setup or turns remote access off.bivy statusshows the same thing in one line,bivy setupnow 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 tailscaleputs your machine's Bivy onhttps://<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 devicesandbivy 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 setupnow offers the agent shim, so typingclaude,codex,pioropencodestarts 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|newto 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
Added
-
bivy contexttells 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--jsonfor one object an agent can parse. -
bivy help --jsonlists 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--urgentto 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--optionfor choices, or leave them out and you type the answer.--asyncreturns an id to wait on later. -
bivy guidehas 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_contextandbivy_guide, alongsideattach_to_chat. They can also read the guides as MCP resources. Each tool runs the matchingbivycommand, so it behaves exactly the same. -
bivy fork,bivy approvals,bivy issuesandbivy instructionsbring 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, abivyfrom 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-uxruns 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 anybivycommands it tried that don't exist. -
Agents can set up automations. When an agent runs
bivy automation apply(or theautomation_applyMCP 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-runshows the changes without applying them. -
bivy attachandbivy suggesttake--jsonand--help, andBIVY_OUTPUT=jsonturns 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
Ckey 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
- 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
Changed
- Refresh the release-tested agent pins: Pi
0.99.1(previously0.87.1), Claude Agent SDK0.3.285and Codex0.159.1(previously0.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
- 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
Changed
-
Refresh the release-tested agent pins to the current upstream builds: Claude Agent SDK
0.3.284, Codex0.159.0, OpenCode1.18.33, and Grok CLI1.0.44(previously0.3.281/0.156.1/1.18.32/1.0.41; Pi stays on0.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@linuxsends one task to several agents and shows the results side by side, with Use this to continue from one of them.bivy delegate machineslists 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 pruneremoves 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.