Repository navigation
Releases
Releases · manueltarouca/hive
hive 0.2.0
Scripts the server runs, a Settings window on the Mac, notifications by
state, tabs in their own windows, and the server as Hive's background item.
Downloads
The same files as 0.1.0, with this version in their names:
hive-0.2.0-macos-arm64.tar.gz, hive-0.2.0-linux-amd64.tar.gz,
Hive-0.2.0-macos-arm64.zip, hive-0.2.0-android.apk and SHA256SUMS.
The APK installs over 0.1.x.
To update on a Mac, replace hive and Hive.app, open Hive once, then
restart the server when it suits you (hive server stop, then any hive
command). Stopping the server ends its programs; shells and agents come back.
Added
- On the Mac, drag a tab out of the title bar or the sidebar to open it in
its own window, or use Move Tab to New Window. A picture of the tab
follows the pointer while you drag. The tab stays in the main window,
faded, with a return arrow that brings it back. These windows reopen
where you left them when hive starts. session.focus_blocktakesactivate: false, to focus a block without
making its window the session's active one.- Tabs on the Mac show a close button while the pointer is on them, in the
title bar and in the sidebar, and move with a short spring when they open,
close or change places. Themotionsetting pickssnappy(the default),
naturaloroff; Reduce Motion always moves them at once. - Notifications by state on the Mac: Needs you, Done and Stopped each turn
on or off and play their own macOS sound (notify-blocked,
notify-done,notify-stopped,sound-blocked,sound-done,
sound-stopped), with a Play button in Settings;dock-badgecounts
the agents that need you on the Dock icon. - A program's progress (OSC 9;4) shows as a ring on its tab, in the title
bar and the sidebar on the Mac, and in the tab strip and sheet on the
phone. The server keeps the last report in the block's view
(progress), so a client that connects later shows it too. - On screen, an agent waiting for you says "Needs you" instead of
"Blocked", on the Mac and the phone. The API keepsblocked. - The
tailscalesetting (andtailscale-hostname) starts the server as
its own Tailscale device, as--tailscaledoes, for a server the Mac app
starts. Settings, Server has Built-in Tailscale, with its state and
Sign In… while it waits for you. - Key sequence hints on the Mac: after a sequence's first key (such as
ctrl+a in ctrl+a>d), a panel lists the keys that can follow and what each
does; in a mode, its keys. A click, find or another window drops the
half-typed sequence.key-hintsturns it off. - Copy on select on the Mac (
copy-on-select, off by default): text you
select with the mouse goes to the clipboard, and the pane says "Copied". - Find in a pane: ⌘F on the Mac (Edit → Find…), and ⋯ → find on the
phone and tablet. Matches in the scrollback are counted and marked, the
latest is current, ⌘G and ⇧⌘G (or the arrows) step through them, and the
marks follow new output. - Pane focus on the Mac: the honey edge glides to the pane you focus, the
others dim (dim-panes:light,more,off), splits even out when
the app opens or closes a pane (balance-splits; the server method
session.balance_window, andbalanceonsession.new_split), and
focus-follows-pointerfocuses the pane under the pointer. - A new Settings window on the Mac: a sidebar of pages (Server, Appearance,
Terminal, Panes, Notifications, Agents and Scripts, Hosts, Shortcuts,
Advanced), back and forward, and search that finds a setting by what it
does. The font shows in a small terminal and the theme as tiles; Claude
Code's hooks connect from the Agents page; Server shows how long the
server has run and turns on the tailnet listener. - The menu bar menu is shorter: the server and how long it has run (click
it for Settings), the agents that need you, how many are working, and the
app's and the server's versions with a button that copies both. - Closing a tab, or its last pane, asks first when a program other than the
shell runs in it, and names it. Theconfirm-closesetting picks
running(the default),alwaysornever; "Don't ask again" sets it
to never. - Tap a path a program printed, on the phone or the tablet, to see the file
without leaving hive: images (pinch to zoom), text with line numbers
(:40opens at that line; the last 2 MB of a long log), folders, and
anything else through Open in…. A sheet over the pane on a phone, a panel
beside the panes on a wide screen. Paths are read where the pane is, also
across wrapped rows. The server serves them atGET /v1/file. - Seeing what scripts do, and turning them off: every change a script
makes is listed (hive script show,hive script audit -f, method
audit.list, eventscript_acted) and shows for a few seconds on the
pane it touched. A script can be put in watch mode (hive script watch,
script.set_mode): it may look, mark panes and notify, and every change
it tries is refused and listed. Scripts declare switches (optionsin
the manifest,h.options,hive script set,script.set_option), and a
notification can offerhive.set_optionandhive.set_modebuttons,
which the server runs for whoever presses them. Only people change
modes, switches and grants. The Mac app has a Scripts window (Hive →
Scripts…) and the phone a Scripts page, with all of this. - hive for Android on tablets: splits side by side when each pane gets 60
columns, every tab in the strip, pages at a reading width, and on wide
screens a sessions column beside the panes. One layout adapts to the
width; phones keep one pane at a time. - hive for Android: long press selects text, with Copy, Select all and
Paste. A two-row key bar on phones with all four arrows (held, they
repeat), alt, ⇧tab, ↵, home and end, and ⋯ for
control keys, symbols, page keys and F1 to F12. ctrl and alt
apply to the next key, or stay on with a second tap. - Hive.app: drag tabs to reorder them in the title bar too, with the others
making room where the tab will land; Escape puts it back. Move Tab
Left and Move Tab Right in the Window menu and the palette. - Starter scripts:
hive script addlists and installslimit-resume,
needs-you,stall-watch,digest,lane-keeper,team,
keep-awakeanddev-panes. - Agents stopped by an error, such as Claude Code at its usage limit, are
donewithkind: "error"and the reason, and the apps show them as
Stopped.agent.acttakesexpect_state, to nudge an agent that is
idle or done. Mac client actionclient.revealbrings a pane forward;
action.runfrom the Mac carries the app'sclient_id. - Scripts: TypeScript or JavaScript the server runs, with the same methods
and events as the CLI.hive script run FILEruns one once, with its log
on stderr and its result on stdout;hive script stop,hive script ls,
hive script checkandhive script types(ahive.d.tsfor editors)
go with it. A script can only read unless allowed
more (--allow control,spawn, or ahive.scriptmanifest), and what it
changes goes to an audit log. Methodsscript.run,script.stop,
script.listandscript.result; scoped eventsscript_started,
script_logandscript_ended; settingscript-remote-run. See
Scripts. - Scripts that keep running: the server runs the scripts in
~/.config/hive/scriptsonce you grant them (hive script grant),
reloads one when you save it, keeps the old version when the new one has
an error, and quarantines one whose handlers keep running too long.
h.storekeeps a script's values across restarts. Commandshive script grant,revoke,enable,disable,reload,logsandaudit;
methods to match; eventsserver_started,restore_finishedand
config_changed; settingscripts. - Every method says which permission a script needs to call it:
read,
screen,control,spawn,input,ui,configorserver.
api listandapi describeshow it, with a note for methods whose
arguments decide it (a layout that runs a command needsspawn). GET /v1/events?types=a,bstreams only events of those types. Some
events, such as a script's log lines, reach only a stream that names them,
so they never crowd the apps' stream or its history.- Keys as data:
keymap.getgives an app its shortcuts (its defaults,
then scripts'h.bind, then the settings file'skeybindlines), with
sequences (ctrl+b>c) and modes (resize/left); event
keymap_changed.client.performasks a connected app to do one of its
own actions. Commandshive keymap,hive actionsandhive do. - Notifications and badges:
notify.sendreaches every app, and the server
keeps notifications for a day (notification.list,notification.ack),
so an app that was closed shows what it missed.status.set,
status.clearandstatus.listput badges on panes; event
status_changed. - Scripts can watch agents (
h.agents.on_state), offer one-tap answers to
blocked agents (h.agents.rule, through the newagent.act, which acts
only if the agent is still blocked on what was seen), react to what
terminals print (h.trigger,h.wait_output), and register actions
(action.list,action.run).hive.terminal.searchfinds lines in a
terminal's screen and scrollback. agent_changedandagent.listcarrykind(what a blocked agent's
notification is about:permission_prompt,elicitation_dialog),
revision(moves on whenever state, message or kind change),
updated_atandcwd.agent.reporttakeskind; the hook sends it,
and leaves it out for a server too old to know it.- Error codes
permission_denied,timeoutandscript_unloaded, for
scripts.
Fixed
- A method that crashed while call...
hive 0.1.0
The first release.
Downloads
hivefor macOS on Apple Silicon, and for Linux x86_64 with glibc 2.28 or
later: the server and the CLI in one program.Hive.appfor macOS 14 or later on Apple Silicon. It isn't signed with an
Apple Developer ID yet. If you download it with a browser, macOS blocks the
first launch until you approve it in System Settings; withcurl, it opens
normally. See
Installation.hive-0.1.0-android.apk, hive for Android 10 or later. Install it from
the file; it isn't on Google Play.SHA256SUMS, and a signed build provenance attestation for every file.
Added
- Sessions, windows and splits that keep running in a server and come
back after a restart: layouts, labels, scrollback, and a shell in each
pane's last directory. - Agents: hooks report each agent's state (working, blocked, done), and
hive agentslists them. After a restart, agents resume their
conversation (Claude Code, Codex, OpenCode, Gemini, Grok) in your login
shell, so quitting one leaves a prompt. - One API for everything: JSON over a Unix socket and your tailnet,
that describes itself (hive api list,hive api describe). There is an
event stream, and an attach protocol for clients. - The CLI:
new,run,split,send,send-key,capture
(with--tail),wait,events,agents,client ls, and more, with
--jsoneverywhere and stable exit codes. - Settings in one file,
~/.config/hive/config, withhive configto
show, check and change them, and a Settings window in the Mac app (⌘,).
listenkeeps a server reachable on your tailnet however it starts. - Program status: programs that report their state with OSC 7501 show
it, as agents do. Links and paths in a terminal open with ⌘-click. - Remote hosts: a server on another machine, reached over Tailscale.
Listeners for Tailscale built in (--tailscale), Tailscale Serve, a
tailnet address, or plain HTTP with--allow-anonymous. The server knows
who each caller is from Tailscale and lets in only its owner unless told
otherwise.hive hostssaves them,-S NAMEruns any command on one, and
hive whoamisays who the server thinks you are. Hosts connect when you
pick them, or with--alwaysat launch. See
Remote hosts. - Hive.app, a native macOS client drawn with Metal on Ghostty's terminal
engine:- an agents sidebar with each tab's agent, its task and its state;
- a command palette, a session picker across all your hosts, and ⌘/ for
every shortcut; - tabs that show each program as an app icon, and pinned tabs that come
first; - native selection and scrollback, the mouse in terminal programs, and a
program's copy (OSC 52) landing on the clipboard; - Hive Day, Hive Night, or the system's appearance;
- hive in the menu bar: the agents that need you, your hosts, and a count
when something is waiting. Closing the window keeps hive there.
- hive for Android: your sessions on the phone, over Tailscale. Tabs
with each program's icon, pins, and a sheet of every tab grouped by what
it's doing. A key bar with what a phone keyboard lacks, answers to an
agent's question as buttons, and notifications you can answer from. Add
your hosts by scanning a code from the Mac (Share Hosts with Phone). - Size follows the device you use. A pane takes the size of the client
you type in. The phone says who holds a pane's size, can fit it to the
phone, and gives it back. - Agent skills for Claude Code and other agents:
hive,hive-setup
andhive-from-tmux.