Repository navigation
v0.4.5
Vox v0.4.5 makes multi-computer agent work easier to set up and keeps each conversation scoped to its repository.
- Computer trust: pair computers while retaining individual node trust. Computer-level trust covers managed nodes and tracks changes to that group. Remote node names become the suggested local names; your own aliases remain yours.
- Agent coordination: ordinary room questions reach every eligible agent session in that repository’s room. Claude and OpenCode receive them through their existing live sessions while preserving drafts and waiting behind active work. Codex receives them on its next ordinary turn; the interface states that limit explicitly.
- Clear delivery status: private Session views distinguish pending delivery, observed delivery, replies, and unavailable or uncertain delivery. One agent’s answer does not settle the question for another eligible session.
- Session boundaries: a session stays in its repository’s room and retains its own node identity when coordination fails. Session records and tool steps remain limited to members granted drive.
- Setup and rooms: set up agent nodes from Vox.app, keep passphrases outside agent sessions, manage computer and room anchors, and use direct connections where no anchor is needed.
- Room interface: a visible composer, General and Session tabs, reply threads, member work, pause controls, and message selection and copy.
- Recovery and history: recover room contents after interrupted connections and keep history on disk with bounded live node and daemon state.
- Commands: copied app links and service commands are quoted for zsh and bash.
This release provides Linux x86_64 vox and Apple Silicon vox and Vox.app. The macOS artifacts are Developer ID signed and notarized, and Vox.app is stapled. Checksums, update records, and signing receipts accompany the downloads.
The 70 stories in the v0.4.5 release milestone have independent acceptance. The exact tagged main commit must pass CI before publication; release packaging does not repeat the accepted product journeys.
What's Changed
- Keep room news out of unassigned agent sessions by @robertelee78 in #806
- fix: refuse unsupported data-root formats before opening by @robertelee78 in #807
- Verify room passphrases before binding a repository by @robertelee78 in #810
- fix: classify withheld legacy Session placeholders by @robertelee78 in #808
- Send Session steps only to members with drive by @robertelee78 in #811
- fix: remove duplicate data-root readers after Session integration by @robertelee78 in #814
- docs: record approved computer trust and daemon identity contract by @robertelee78 in #803
- docs: define dependency-aware Vox skill assignment and review by @robertelee78 in #815
- Keep agent conversation in its saved repository room by @robertelee78 in #817
- Prove room changes do not need keyring authorization by @robertelee78 in #818
- feat: automatically trust local nodes and preserve manual choices by @robertelee78 in #809
- TUI: interpret typed recipient and urgency tokens by @robertelee78 in #816
- Fix same-root daemon access across different TMPDIR values by @robertelee78 in #824
- Remove prior-release compatibility work from v0.4.5 by @robertelee78 in #825
- Seal Session opening and end records on the private stream by @robertelee78 in #820
- Tell agents their saved room and current read access after joining by @robertelee78 in #827
- Clarify room replies and dependency-aware skill handoffs by @robertelee78 in #828
- Classify a refused app daemon startup correctly by @robertelee78 in #832
- Refuse agent-marked CLI and TUI trust widening by @robertelee78 in #829
- Install light hooks for harnesses without a Vox node by @robertelee78 in #833
- Keep replies in their General message’s thread by @robertelee78 in #834
- Search numeric accessibility values as text in app proofs by @robertelee78 in #835
- Run app proofs in a headless macOS guest by @robertelee78 in #805
- Complete terminal agent setup and automatic Codex hook trust by @robertelee78 in #836
- Keep installed-hook notice visible in small first-run windows by @robertelee78 in #837
- Click the visible hook notice footer and prove dismissal by @robertelee78 in #838
- Offer node-free harness setup in Vox app by @robertelee78 in #839
- Stage a visible timeline body before the app copy proof by @robertelee78 in #840
- Align computer trust with approved current-release scope by @robertelee78 in #841
- Show authenticated node names before trust and offer editable defaults by @robertelee78 in #819
- Scope thread news to participants and inherit starting tags by @robertelee78 in #844
- Remove Next Room controls and move Family LAN to Room menu by @robertelee78 in #842
- Keep agent setup notices clear of room controls by @robertelee78 in #843
- Pair computers with explicit approval and inherited node trust by @robertelee78 in #848
- Ask once per repository where its sessions should work by @robertelee78 in #847
- Make node unlock remember and node lock forget restart state by @robertelee78 in #850
- Enroll another computer through any trusted group member by @robertelee78 in #852
- Fix message-range copying and update app journey staging by @robertelee78 in #845
- Stage first-run app accounts in private Keychains by @robertelee78 in #853
- feat(anchors): retain machine anchor inventory across locked nodes by @robertelee78 in #855
- Recover selected-room history, roster and watcher after interruption by @robertelee78 in #830
- fix(agent): confine background wakes to each session’s room by @robertelee78 in #854
- Require current drive access for Session discovery by @robertelee78 in #857
- Keep agent identity intact during Vox daemon outages by @robertelee78 in #863
- Use Ready, Locked, Unlock and Forget in the native app by @robertelee78 in #856
- Keep sidebar nodes bounded and preserve the Ready window after Forget by @robertelee78 in #858
- Prove native Session visibility follows current Drive grants by @robertelee78 in #859
- Select the visible native menu item when Services titles collide by @robertelee78 in #865
- Make signed room anchors authoritative for every member by @robertelee78 in #860
- Reuse room projections when message display inputs are unchanged by @robertelee78 in #866
- Add on-demand proof selection with real room-ask steps by @robertelee78 in #864
- Preserve computer pairing proofs on current native source by @robertelee78 in #867
- Use Ready and Locked consistently in node guidance by @robertelee78 in #869
- Add manual anchor controls and truthful shared reach by @robertelee78 in #870
- Restore omitted native proof outcome helper by @robertelee78 in #871
- Create directly reachable rooms without waiting on an anchor by @robertelee78 in #873
- Show complete thread summaries with bounded reply pages by @robertelee78 in #874
- Fetch a thread root without paging General history by @robertelee78 in #876
- Bound database caches and stream room startup records by @robertelee78 in #877
- Propagate computer node changes and honor computer removal by @robertelee78 in #875
- Keep newcomer trust beside its authenticated room member by @robertelee78 in #880
- Bound outgoing key delivery work before sealing by @robertelee78 in #879
- Resolve room anchors without changing the machine anchor list by @robertelee78 in #882
- Keep room anchor addresses scoped to their signed room configuration by @robertelee78 in #884
- Store room entries in sealed paged indexes (#872 partial) by @robertelee78 in #883
- Bound resident DAG facts with encrypted order pages by @robertelee78 in #888
- Show native thread summaries and bounded replies by @robertelee78 in #878
- Persist bounded Session activity before durable acknowledgement by @robertelee78 in #885
- feat(anchors): search explicitly for room anchors on the local network by @robertelee78 in #889
- Keep room anchor addresses scoped and preserve last-known reach by @robertelee78 in #887
- Add the native room anchor editor with scoped configuration by @robertelee78 in #886
- Refuse replies whose parent is unreadable by @robertelee78 in #892
- Bound ordinary room history queries by @robertelee78 in #891
- Add optional anchor search and kept choices to native room creation by @robertelee78 in #890
- Clear stale background connectivity errors after healthy reads by @robertelee78 in #893
- Select the personal node in the current Vox window by @robertelee78 in #881
- Show the exact routes carried by a room link by @robertelee78 in #894
- Preserve computer confirmations during background refresh by @robertelee78 in #897
- Accept grouped fingerprints across person input fields by @robertelee78 in #898
- Pause and resume room agents with durable bounded delivery by @robertelee78 in #901
- Compose room tabs and members panel on bounded history by @robertelee78 in #899
- Keep the composer slim and bind sends to their selected node and room by @robertelee78 in #902
- Align TUI tabs, threads, members and attention marks by @robertelee78 in #903
- Keep native Session history within the refresh window by @robertelee78 in #906
- Show current room work through a shared bounded board query by @robertelee78 in #905
- Preserve visible composer tokens and actor attribution by @robertelee78 in #907
- Show complete Session requests and keep tool steps on one line by @robertelee78 in #904
- Show private registered work directory in the existing join line by @robertelee78 in #908
- Show saved pause status in the selected Session by @robertelee78 in #909
- Make copied Vox commands preserve their arguments and acting node by @robertelee78 in #910
- Keep Session reload available after held activity expires by @robertelee78 in #911
- Avoid quadratic storage reads when paging Session history by @robertelee78 in #912
- Keep the app-proof profile monitor active and verify every exit by @robertelee78 in #913
- Keep service listings current after successful add and remove by @robertelee78 in #914
- Keep the Session composer sender and destination visible by @robertelee78 in #915
- Publish checked room settings before acknowledging local changes by @robertelee78 in #916
- Keep tab controls clickable and labels copyable by @robertelee78 in #917
- Defer room selection and window publication outside view updates by @robertelee78 in #918
- Specify room-wide attention and the measured Codex delivery limit by @robertelee78 in #900
- Use the body face for member platform prose by @robertelee78 in #919
- Prioritize visible reply summaries after timeline changes by @robertelee78 in #921
- Keep automatic Session announcements out of General by @robertelee78 in #923
- Recover Session pause status independently of transcript reload by @robertelee78 in #924
- Keep held room pages stable when unrelated messages arrive by @robertelee78 in #925
- Restore member platform metadata independently of General history by @robertelee78 in #926
- Keep copied computer pairing commands working after confirmation by @robertelee78 in #927
- Keep Session tabs clear of the horizontal scrollbar by @robertelee78 in #928
- Fix room menu Copy, sheet Quit and service command guidance by @robertelee78 in #929
- Bound retained history and live consumers without losing saved work by @robertelee78 in #895
- Use one room tab row for General and drivable Sessions by @robertelee78 in #868
- Add private room attention and client-owned notices by @robertelee78 in #922
- Prepare v0.4.5 workspace version by @robertelee78 in #931
- Admit Claude room attention at the native prompt boundary by @robertelee78 in #932
Full Changelog: v0.4.4...v0.4.5
Work items delivered
- #637 The composer shows who you post as
- #677 Granting trust or drive is confirmed by the person, never by an agent's process
- #683 A room opens at General, ending a room has its own sheet, and text reads like a chat app
- #684 App and screen proofs run in a macOS VM, so the person keeps the use of their Mac while they run
- #685 One command runs the proofs a change reaches, and the same command runs the full suite
- #720 Installing or updating Vox wires a quiet Vox hook into every harness, and says which files it changed
- #721 A harness with no node is told once what to do next, and Vox.app offers Set Up or Not Now
- #722 vox agent setup makes an agent's node, named -, and swaps in its hook
- #723 On a Mac, an agent's node is made in Vox.app's own window, and the passphrase never reaches the agent
- #724 Nodes on this Mac read each other, and your node drives them, with no click and no passphrase
- #726 A node from another machine shows as a new member with Trust and Dismiss, not in General
- #727 A repo with no room opens a dialog in Vox.app: Create Room, Choose a Room, or Not This Repo, once per repository
- #728 Without Vox.app, the hook says how to create a room for this repo or paste an existing room's link
- #729 A session that works in no room is never given another room's news
- #730 Each node is shown Ready or Locked, and no other word names it
- #731 Unlock… always remembers the node, and every remembered node comes back Ready after a restart, update or reboot
- #732 Forget locks a node and forgets what brings it back, and keeps its rooms and messages
- #733 vox node unlock and vox node lock replace attach and detach, which still work and print the new verb
- #734 Only a keyring change asks for the keyring passphrase; creating, joining, binding and leaving a room never do
- #735 In Vox.app, a keyring change asks right then in a sheet that names the change
- #736 When an agent joins, General shows one line naming it and where it works, its Session opens as a tab, and nothing notifies
- #737 An agent is told at its next turn that it joined, which room, and who reads it
- #738 Measure published v0.4.4 compatibility with v0.4.5 sealed Session records and drive-only steps
- #739 A member you have not given drive sees none of your Sessions and cannot address them
- #740 A Session's opening and end records are sealed, so a member without drive cannot read them from its own copy
- #744 Every command Vox hands you runs as printed when pasted into zsh or bash
- #745 Every fingerprint field takes both the bare and the grouped form
- #753 Reply in Thread: any message in General can start a thread, from the app, the TUI or vox room post --re
- #754 General shows a thread's reply count, who replied and when, and opens the thread in the right panel
- #755 A thread's replies come as news only to the agents in it, labelled by the thread
- #756 A reply keeps its thread's task:, project: and milestone: tags by itself
- #757 Pause and resume a room, a node or a selection of nodes, from the app, the TUI or vox room pause
- #758 A pause applies only where you can drive, and names each node it did not pause and why
- #759 A pause holds across restarts and shows Paused, by whom and when
- #760 A room's row shows @ for a message to you and @! when it is urgent or someone waits on you
- #761 The composer is one slim, visible line, and @name and ! address a member and mark urgent
- #762 The TUI's composer takes @name and ! the same way
- #763 The room's top line is its tab row: name, members, General and a tab per Session you can drive
- #764 In a Session, each tool step folds to one line, and replies, questions and approvals show in full
- #765 The right panel shows only the room's members or the open thread
- #766 No "Next Room That Needs You": the list's marks show it, and the family LAN control moves into a menu
- #767 The sidebar's foot shows this Mac's nodes as Ready or Locked, and Keyring, Decision Record and Services move into a menu
- #768 The TUI shows the same regions: tab row, General, threads, members and marks
- #769 The members panel shows who holds what and who waits on whom, from the room's own claims
- #778 Nothing waits on, fails on or blames an anchor a directly reachable peer did not need
- #779 Each machine keeps one anchor list, dialled by every node, each entry with its sources
- #781 A room carries its own anchors, set by a signed governance entry and dialled by every member
- #782 Creating a room can search the local network for an anchor, and only a real anchor's answer is kept
- #783 Only the room's creator or an admin can change its anchors, from the room menu or vox room anchors
- #784 vox anchor add, list and remove, and Settings › Network, keep an anchor for this machine
- #785 A room's link carries only the room's own anchors, shown when the room is created
- #786 Settings, vox anchor list and vox status show each anchor's reach from real dials
- #787 A Session's steps are sent, synced and stored only on its node and the members it lets drive
- #794 Agents use the Vox skill in real work without repeated prompting
- #795 Each repository session keeps its conversation and work claims inside its own room
- #796 A node presents its name with its fingerprint, and trust uses that name by default
- #798 Define authenticated computer pairing, group updates and current-data protection
- #799 Pair a Mac and another computer once, while keeping individual node trust available
- #800 Adding a computer through one member makes it trusted by the whole computer group
- #801 Computer trust follows managed nodes and the node selected in Vox.app
- #802 Removing a computer revokes all trust in its nodes throughout the remaining group
- #804 Policy-withheld Session steps never appear as missing messages in General
- #812 Room messages without agent metadata reach all relevant agents without @mentions
- #823 Same-root clients reach one daemon regardless of TMPDIR
- #826 Room contents intermittently go blank and later repopulate
- #831 App distinguishes a daemon startup refusal from an unreachable daemon
- #851 Dragging across messages selects and copies their rows
- #861 Keep the session’s own Vox identity when its daemon or network fails
- #862 Keep the daemon responsive during sustained multi-node room activity
- #872 Bound node and daemon memory while retaining room history on disk