Repository navigation
Releases
Project Pals 0.4.3
Supported Herdr is unchanged: 0.1.8 or newer and herdr-core 0.1.11 or newer, both below 0.2. This
release was run day to day (install, topics, messages, the full test suite) on Herdr 0.1.15 with
herdr-core 0.1.20.
-
Back to the terminal. The app's full pages are gone, so a pal is its terminals
again: clicking a pal opens its topic (the head pal still opens Home). Gone: the profile panel
(Profile, the Vault, Memory, the AGENTS.md editor, the dashboard), a pal's Computer, the pal
board, the Routines dialog, the Desk page and the room page with its composer, their
shortcuts (Ctrl+Shift+I, Y and U), and thepal computerandpal pagecommands. What stays: Home, the Inbox and the approval gate, Tasks, the
quick-drop, Review changes, Hire, New topic, the command bar, Look, updates and the Chief. The
pals still use Desk cards (pal desk), rooms (pal-room) and routines (pal routine). Where
things moved: a pal's proposed change to its mission or AGENTS.md opens in a small dialog that
shows it as a diff, with Decline and Accept; the idea partner's drafts are on Home, with Send,
Edit… and Discard; Change machine… is in the pal menu (click the pal's name); the sidebar's
buttons are Inbox, Tasks, Pop out (the topic's terminal in its own window) and Close pal (Home
on the head pal); and the header's button is now Drop, which drops a card. Nothing you made is touched: memory,
notebooks, missions, tasks, cards, rooms, routines and pages stay on disk. The installer backs up
the old mods before setting them aside, and takes the three old shortcuts out ofkeys.jsononly
where they still point at Project Pals. -
Land always goes to main. A topic's branch now lands on the project's main branch (or a base
you named when making it), never on whatever branch the project folder happens to have out, and
new topics are cut from main the same way. A topic built on another topic's unlanded branch is
refused with how to land it on purpose (pal land … --onto). -
See your own changes live: the Live channel and Try it live. For people who work on
Project Pals itself. About has an Update channel switch: on Live, your install followsmain
in your own checkout. What you land is checked, installed and reloaded in place within seconds,
and a toast says what reloaded and whether the helper had to restart. Only the mods that changed
reload, so an open dialog elsewhere stays open. A build that doesn't come up is put back by
itself and held untilmainmoves. Review has Try it live: a topic's branch runs in your
real install with an amber strip across the top, with Back and Land on main (only the
commit you looked at lands on that click). About and
pal versionsay which build is running (branch and commit), and Back to stable puts the
newest release back. All of it is your click; a pal can't switch the channel, start a trial or
install, and while Live is on a pal movingmainby hand is held like a landing. -
Landing by hand needs your click too. A pal moving
main(ormaster, or a topic's base
branch) withgit update-ref,git branch -fand the like is now held in your Inbox, the same
aspal land. Before, onlypal landwas. Ordinary work in a checkout that is onmain, a new
repository's firstmain, and fetchingmainfrom a remote are not held. -
Land works wherever the project folder is. Landing a topic's branch no longer needs the
project folder to be onmain: whenmainisn't checked out anywhere, the merge is made without
touching a checkout. -
Installs reload only what changed. The installer writes a file only when its content
differs, so an update or reinstall no longer reloads every mod. -
Handoff: hand a topic to another brain, and back.
pal handoff "Pal#topic" --to codexchanges
the brain in a topic and keeps everything else: the same tab, the same name, branch, desk cards,
claimed tasks and room seats. The new brain starts with a short brief built from the board, git
and the old brain's last reply (never a transcript, and filtered for secrets), and
pal handoff backreturns the seat, resuming the first brain's own session when it can. Cards
wait while the seat changes hands, and approvals never cross with it. In the app, right-click a
topic and pick a brain under Hand to. For Claude Code and Codex on this computer for now; the
offer when a brain runs out comes next. -
Sleep works for Codex pals.
pal sleepused to refuse an idle Codex ("can't see an empty
input box"), because it only knew Claude Code's box. It reads Codex's now. After any agent is
stopped, its terminal is put back to a plain shell's modes: Codex left mouse reporting and its
keyboard mode on, which garbled whatever was typed there next (a wake, for one). -
A factory's count includes its proposals and Desk cards. With several factories, the chip
and the switcher count what each factory needs from you. A proposal from a pal in a factory you
weren't looking at, or a Desk card it sent you, was on that factory's Home but not in its count,
so the chip could show nothing waiting there. Both count now, for the factory of the pal that
made the proposal or sent the card. (From Codex's review of 0.4.2.) -
The Chief can't make a branch, a tag or a git setting. The Chief only reads git, but
git branch name,git tag nameandgit config user.name Xwent through: they change things
without any flag that says so. Git commands that can do both now pass only in a form that
plainly reads (git branch --list,git tag -l,git config --get name,git remote -v,
git worktree list,git reflog show); anything else is refused, and the refusal lists the
reading forms. A reading command can't write a file or start a program either:
git log --output=FILE(and the same flag on diff, show, blame and the rest),git grep -O
and--open-files-in-pagerhowever it's shortened,--ext-diff, and settings that name a
program for git to run (-c diff.external=…,GIT_EXTERNAL_DIFF=…and the like) are refused.
--no-pager,GIT_PAGER=catand-c color.ui=…still work. The rules are tested against the
real git. (From Codex's reviews of 0.4.2 and of these fixes.) -
Pop out opens the topic you asked for. Two topics whose names differ only in punctuation
(#build-apiand#build_api), or long names with the same first 48 characters, shared one
pop-out: opening the second brought up the first one's window, where you could type into the
wrong topic. Every topic has its own pop-out now, and an open window is brought up again only
when it shows that topic's terminal. A window left showing a terminal the topic no longer has is
replaced. Sizes, places and pins you already had are kept. (From Codex's review of 0.4.2.) -
Trusted helpers: let your own assistant send normal work in your name. About → Settings →
Trusted helpers. Switch a helper on by name and it gets a key; from then on what it sends with
PAL_HELPER=<name> pal tell,ask,task add --forordesk sendarrives headed "from you via
, a trusted helper: normal work only", and your pals do it as if you'd asked. One click
switches it off, gives it a new key or removes it. At Work only it is never your click: approvals,
push, publish, deploy, release, merge, messaging people, settings, missions, AGENTS.md and
everything waiting on Home refuse it, and each try is recorded. Home shows what helpers sent in your name
and what they tried (Today, and a new In your name tab). At most 20 messages an hour per helper;
past that they arrive as "not verified". Pals can't use a helper's key: the approval gate holds
the attempt andpalrefuses a key from inside Herdr. Keys are kept outside Project Pals'
data and encrypted on disk for your user on this computer (systemd's credentials), so a search
or copy of your config folder never shows one; where that isn't available, a text search still
doesn't print it. -
If you ran the build that went live on 10 November ("Trusted helper · Pals"): Pals is carried
over switched off, and its old key is deleted. That build accepted a request without any key
and could be used by a pal, so turn Pals on again in Trusted helpers when you want it; your
assistant'spal --as-helper …line keeps working after that. -
Full control: a helper you choose can make decisions for you. Each helper in Trusted helpers
has one level: Off, Work only (normal work, as above) or Full control. With Full
control, that helper makes app decisions on its own: it can approve what waits on you, including
a pal's held command (once, exactly as held), pushes, releases and landings, with no prompt and no
waiting period. Only your own click in Trusted helpers sets a level or changes a key; a helper
can't raise itself or another helper. New and existing helpers start at Work only, and no update
turns Full control on. Home → Helper activity shows each "acted under Full control" and how it
ended, with Revoke: the helper goes Off and its queued actions and unused approvals stop
working (finished work isn't undone). Decisions are always recorded as the helper's, never as
your click. Read docs/full-control.md before you turn it on: anything that can act as that helper
can then push and release in your name. -
A trusted helper stays as you left it, and you're told if it stops working. Only your click
turns a helper on or off: installs, updates and Roll back never touch its switch or its key. If
a helper you left on can't be used (its key is missing or unreadable, it has reached its hourly
limit), or one is off without your click, Home shows it under Needs you with the fix as a button,
andpal feedsays so. The hourly limit is now a setting in Trusted helpers. A helper can ask to
be strict (`PAL_HELPER_STRICT...
Project Pals 0.4.2
Project Pals 0.4.2 brings the work already integrated on main to everyone.
- Pal boards: see Needs you, Working, Resting and Up next, with a message box and a shortcut back to the terminal.
- Colour presets for pals and their laptop screens, plus redrawn pocket pets.
- A welcome tour for new installs, pinnable topic windows, and separate factories for larger crews.
- Fresher, clearer update checks and a fix that distinguishes Desk code edits from changes to cards.
Also included from main: topic areas and Live view, the pal Computer and work timeline, the Chief, and sidebar/toolbar polish.
Project Pals 0.4.1
Put a pal to sleep to free its memory and wake it where it was, take Project Pals out cleanly,
and know which Herdr versions it works with.
Sleep and wake, in place
- Sleep (keep topics, free RAM). A pal's right-click or pal menu, a topic's right-click
(Sleep this topic) or a room's (Sleep all): its agents stop, while its tabs, shells and room
seats stay.pal sleep <Pal|Pal#topic|#topic>, or--idlefor every idle pal, from the command
line. The result comes back as a toast. - Wake (resume topics) starts each topic's brain again in its own shell and resumes the
session it had, when that session is still the one it left; otherwise it starts fresh and says
why.pal wakefrom the command line. - It never stops work. Sleep refuses, and says why, when a pal is working, asking you
something, has text in its box, is being handed a message, or still runs work of its own (a
build it started, a helper's children). Only that topic's agent is stopped: a dev server or
editor in the tab is never touched, and only on this machine. Putting the head pal to sleep by
name needs your click. - Cards sent to an asleep pal wait on the Desk as held: asleep and are delivered once it's awake.
- Close pal (end its space) is the other way to rest one (it was "Put to sleep" before).
- A dead agy tab no longer looks awake: its leftover Herdr status is cleared.
- Thanks to goodboimax for the original sleep and wake (PR #4).
Install and uninstall
- Supported Herdr, stated and checked. Project Pals works with Herdr 0.1.8 or newer and
herdr-core 0.1.11 or newer, below 0.2 (tested on 0.1.8–0.1.14 and 0.1.11–0.1.19). The range is
inpals.json; the installer checks both versions and warns loudly outside it, andpal version
and About say so too. - Uninstall. About → Uninstall, or
./install.sh --uninstall(--dry-runto list,
--purgeto take your pals' data too). Everything the install added comes out, and your own
keys.json,~/.claude/settings.jsonand~/.gemini/config/hooks.jsongo back to how they
were.pal uninstallneeds your click; the approval gate holds a pal's
./install.sh --uninstall. - Uninstall is only yours, and never follows a link (Grok's review). Every way in needs your
click or you typinguninstallat your own terminal (not one with an agent in it or above it),
checked inside the uninstaller itself; the approval gate also holds the obvious wrappers
(expect,script, code importing the uninstaller). A symlinked Herdr home, folder or config
file is left alone and reported, and only what the install recorded placing is removed. These
stop mistakes, not a pal determined to get around them: pals run as you. - Your own hooks stay yours. Install, Roll back and uninstall touch only hook entries that are
exactly Project Pals' commands; a hook of yours that mentionscrew-hookwas rewritten before.
A config file that is a symlink (a dotfiles manager's) is no longer replaced with a plain file. - A crash in the Herdr version check is shown as a warning instead of passing silently.
Fixed
- A card from you that a pal passes on still shows as verified from you and says who passed
it, instead of turning "unverified"; a pass can move your words, never change them. - Dialogs and Home wrap full sentences instead of cutting them off (the "Updated to 0.4.0" dialog
stopped mid-sentence). - The profile dashboard no longer shows "This view could not be rendered" the first time a pal
shows. pal peekkeeps a permission option that wraps onto a second line whole.
Project Pals 0.4.0
Everything sent to a pal is now a card you can follow, Home is one page to come back to, and
messages reach busy pals without typing into their input box. 0.3.1 was never released: what it
held (topics, the new profile page, machines, the command bar, pal list looks) ships here too.
The Desk
- Every pal has a desk. Everything sent to a pal (a tell, a question, a task, how something
you asked went) is now a card with a status: queued, seen, working, done, held or needs you.
You see when a pal actually got it, and its result, instead of guessing from its screen. - The Desk view. The header's Desk button opens every desk at once: what waits on you, what
has no pal yet, what's held and why, then each pal and its topics. Move, raise, lower, close or
cancel any card with a click. - Drop a card from anywhere with Ctrl+Shift+D: type it, pick a pal or topic (or leave it in
To route), set how urgent it is, add images. Multi-line cards go on the task board too. - Auto finds the pal for you. Drop a card with Auto and a quick, cheap model (Claude Haiku,
else Antigravity CLI) picks the pal and topic it belongs to. If it isn't sure, the card waits in
To route for you to place it, with the reason. It runs in the background helper, at most 100
times a day; turn it off in Settings → Desk (orpal settings desk.triage off) to always place
cards yourself. - Claude Code pals get cards without typing. A Claude Code mod in each pal hands a card over
mid-step while the pal works, or starts a turn when it's idle. Whatever you've half-typed in its
box stays put, and a band above its prompt shows the topic's open cards (/desklists them).
It's loaded only in pals (with--plugin-dir), never in your other Claude Code sessions. - Codex pals can check their desk with a
desk_checktool (and close cards with
desk_done), given to them on their own command line. They don't get cards mid-step: they're
typed in when the pal is idle. pal deskfor pals (and you, in a shell): their cards,take,done "result",reply,
block,pass,send,sent. The shippedpal-deskskill teaches every pal how to use it.- Tasks and their cards stay in step. Finishing a task's card finishes the task, and the Tasks
dialog shows whether each new task has reached its pal yet ("not seen yet", "seen", or why it's
held). - Settings → Desk shows today's numbers and lets you turn triage off, change its daily cap,
when the head pal hears about held or quiet cards, and when closed cards are archived. - Cards are plain files in
data/crew-desk, readable in any editor. You can fix a card's title
or text by hand; its status and who sent it can't be changed that way.
Home
- One page to come back to. Click your head pal (or press Ctrl+Shift+H): one list of
everything that needs you, oldest first, with one-click Approve, Decline and answers, under one
line saying who's working and what shipped today; "All caught up" when there's nothing.
"What happened today" opens a drawer with what finished, got installed or was linked, who's
working, releases, and what you parked. Your head pal keeps its decisions, logins and links
there withpal home. - Decide one thing at a time. While anything needs you, Home shows one item full screen: who's
asking, the context (links, images, the command or diff), what each option does, and the asker's
recommendation with its why. Pick with a click or 1-9, Enter takes the recommendation, C opens a
chat with the asking pal's terminal, J/K move, L puts it off, Esc shows the list. - Your head pal is one key away. T (or "Talk to ") opens its terminal from Home, and
"Message " sits under All caught up.
MUSE, your idea partner
- Hire it from the hire dialog (Idea partner) or with
pal hire --partner, and riff with it in its
#ideas topic: half-formed ideas, screenshots. It asks sharp questions and turns them into clean
card drafts with the right pal suggested. Nothing goes out until you click Send (or Edit, or
Discard) in the Desk view's Drafts; then it's your own card. MUSE is a Claude Code pal on Sonnet.
Messages reach busy pals
- Messages between steps. A Claude Code or Antigravity CLI pal gets messages from other pals
while it works, between its tool calls, and as its turn ends, so a draft in its input box no
longer holds them up. Idle pals and other brains are still typed to, carefully. A pal with
nothing waiting pays nothing per step: the hooks start only when something is queued. pal askreaches busy pals mid-turn, and replies are read from the pal's session file
instead of its screen.- No grey suggestions in pals' input boxes. Claude Code pals start with prompt suggestions
off (on their own command line; your other Claude Code sessions keep them), so a suggestion
can't pass for unsent typing and hold messages. - Antigravity CLI (
agy) is a native brain: hire it, pick its model, its hooks, the approval
gate and shared skills.
Safer
- Only you speak as you. A message headed "[from you]" now needs your click in Project Pals
(Tasks, Review, Home). From a plain shell it says "not verified as you", and text inside a
message can't fake a header. A message file Project Pals didn't write itself (one a script put in
the queue) reaches the pal labelled "unverified", its header quoted, never as yours. - Your settings, updates and landings need your click too. Changing settings (owner, head pal,
bypass, Settings → Desk), installing or rolling back an update, landing a branch, renaming pals
and pruning the Desk's archive go through Project Pals' buttons. A pal, or a terminal Herdr doesn't
know, is refused. Reading settings still works from any shell. - What the approval gate holds in Claude Code and Antigravity CLI pals, for your click in the
Inbox:git push, package publishes, GitHub releases, PR merges and posts, deploys (fly, vercel
--prod, netlify --prod, wrangler, kubectl apply/delete), mail and chat webhooks,pal land, a
repo's release script, edits of a project's AGENTS.md or CLAUDE.md, and writes into Project Pals'
message queue, your click tokens and the Desk's cards. It matches the command as it runs, not as
it's spelled: behindnpx, a full path,envorgit -C; insidesh -c, a heredoc,
here-string orechopiped to a shell, or a string Python, Node, Perl, Ruby or PHP runs (os.system,
subprocess,child_process,system, backticks); and file writes from those languages
(open(…, "w"),mode="w",write_text,writeFileSync…) or an editor (ed,vim -es,
code…). Text that only mentions a command (a grep pattern, a quoted string,--help) isn't
held. If the gate itself fails, the command is stopped, not let through. - The gate catches mistakes, not a pal set on getting around it. A pal runs as you: one
determined to could build a command from pieces, write a script first and run it later, or edit
these files directly. Antigravity CLI pals are gated onrun_commandonly: their own file-edit
tools aren't checked yet, so an agy pal's edit of AGENTS.md isn't held. - Notebook paths stay in the pal's own project (and Project Pals' own config), not anywhere
under your projects folder, however the path is spelled (~,$HOME,${HOME}). - Roll back puts the previous version back cleanly: library files the newer version added go,
and so do its hooks (Antigravity CLI's too), with no empty hook lists left behind. Your own hooks
stay. A first install has nothing to roll back to.
Topics, profiles and the sidebar
- Channels are now topics. A pal's tabs are the topics it's working on, and everything you
see says so: the hero's Topics list and "+ New topic", the picker, the right-click menu, the
command bar, dialogs, the profile and Vault panels, the pal list ("3 topics"), help text and
the docs. The#stays, and so doesPal#topic.pal topicis the new command;
pal channeland--channelstill work, so older scripts and pals don't break. - A new profile page. The pal's pet on a stage lit in its state's colour, its state line,
name and mission, a "Give a task…" box, and four cards for the week: Shipped, In motion,
Needs you, Hiccups. In Full, the shown topic's live terminal sits beside it as a resizable
column. - Which computer a pal works on. The profile shows the pal's machine (laptop, desktop or
server, how Herdr reaches it, connected or not), and Change machine… moves it: pick or add a
machine, and the project folder is checked there (or cloned there). - The command bar. The header's search field (or Ctrl+Shift+Space) searches pals, topics,
open tasks, Vault notes and every command. - Inbox in the hero. The hero's first quick action is Inbox: it opens the sidebar's Inbox and
shows how many things need you, in amber. New topic is the last row of the hero's list, in the
command bar and in the right-click menu. - New topics on a sleeping pal start its brain.
pal topicon a pal with no agent running
used to open a plain shell. Now pals remember their brain while awake, and a topic (or waking a
pal) always starts one: its own, else the asking pal's, else Claude Code, and it says
which when it had to guess.pal topictells you if the
agent didn't come up. - Pick your working indicator. Project Pals settings → Working indicator: the classic dot or
one of 30 small animations (pixel spinners, shaded spheres, ASCII globes), with live previews. - Pick how your pals are listed. Project Pals settings → Pal list style: keep the big pets, or
pick one of nine compact looks with smaller pets, so the full name, the project folder, the
branch, the brain and topic and task counts fit. The dialog previews each one with your own
pals; a click applies it. - Trees. In any lo...
Project Pals 0.3.0
A new look and a simpler shape: pocket pets, terminal-first channels, and a profile panel with a
Vault for every pal.
- Pocket pets. Every pal is a little LED critter whose pose shows what it's doing: resting,
working, needs you, done, PR open, merged, closing or stuck. The Look dialog picks its species,
colour, what it wears and its eyes. The old folder faces are gone. - Terminal-first. A channel is its agent's terminal, with no card around it. Split it right or
down from the header or by right-clicking. The chat view is gone: you answer an agent's
questions in its terminal. - One layout. The channel tab strip and the inspector are gone: channels live in the sidebar,
and each pal's details in its profile panel. - The sidebar. The shown pal up top with its channels (pin them, reorder them, search them) and
quick actions, then every pal with its state in colour. Pals go in folders you name, pin to the
top, and drag into any order. - Tasks. One Tasks button per pal: write a task (with screenshots pasted, dropped or attached)
and the pal is told when its current turn ends, so it picks it up next. It's a real task on the
shared board, marked as from you. - Profiles. A panel per pal, opened from its header chip: Profile (facts, channels, memory,
routines, tasks; in Full, a dashboard with a Now / Next / Blocked / Done board and the shown
channel's live terminal), the Vault, and an AGENTS.md tool that lints what Claude Code loads and
writes a fix only after you've seen the diff and clicked, with backups. - The Vault. Each pal's notes as a vault: a Home note that writes itself as work lands (its
mission and focus, the channels working now, its tasks, today's journal, the week's hiccups and
lessons, the latest decisions and changes), with Mission, Journal and Brain beside it. Plain
markdown on disk, so it opens in Obsidian too. - Journal and the Dream loop. Each pal logs what it did, what got in the way and what it cost,
and what it learned (pal notebook); the week's lessons open each new session. Nightly, the
Dream loop groups hiccups across pals and proposes fixes; nothing changes until you approve it. - Missions. A pal proposes its mission (
pal mission propose) as an Inbox card; you accept it,
and every new session starts with it. - Dialogs share one calm look, with the pal's pet in the header of a pal's dialogs.
- A settings gear in the status bar: hire, new rooms and groups, the Inbox, rooms, routines,
theme and look, Herdr layouts, machines, Herdr settings, the command palette, updates and
Project Pals settings. - Updates you can see. A quiet "Update available" pill in the status bar when a new release
is out: click it for the highlights, then Update now (checked against the release's SHA256
sums, with Roll back) or Later. The gear menu has Check for updates. - One-paste install. The README's install command downloads the latest release, checks its
SHA256 sums and runs the installer. - Start-up memory. A pal always gets its pinned note, its main memory and what it knows about
you, whole, then the newest notes. - Safer approvals. A security pass on the approval gate and on your clicks in the Inbox and
the panel, with tests. - The git branch moved from the header into Claude Code's status line.
Fixed
- Updating no longer fails when Herdr's folder is outside your home folder (HERDR_APP_HOME).
- Roll back undoes the latest install, including one from
./install.sh(it used to go back to
the last update's files). - Claude Code's "Press up to edit queued messages" hint no longer counts as unsent text, so
messages to that pal go through; a finished hold leaves Waiting on.
Project Pals 0.2.3
- Approval gate: release scripts (
./release X.Y.Z,scripts/release.sh,make release) now need one Inbox click. Before, the push and publish inside them slipped past the gate. - Approvals that go unused for 30 minutes expire; running the command again asks again.
- Inbox cards show the approval ID, Decline and Approve sit at opposite ends of the card, and every approve/decline attempt is recorded (late ones are refused and logged).
- Messages are never typed over your unsent text: delivery waits while the input box has a draft, and callbacks label a draft as unsent instead of quoting it as a reply.
- About checks for updates when opened if the last check is over 10 minutes old.
Project Pals 0.2.2
pal peekshows what a blocked pal is waiting on: the pending prompt and its options, or Claude Code's "trust this folder?" question. Read-only: only you answer prompts.- Fix: the "Waiting on" line and head-pal note for the trust question now fire. In 0.2.1 they didn't, because the terminal is still named after its shell while Claude Code waits on that question.
- Every update and rollback attempt is logged to
data/crew-update.log(who, steps, errors), so a failed update leaves a trace.
Project Pals 0.2.1
Getting ready for the Herdr community.
- New pals no longer stall silently on Claude Code's "trust this folder?" question: you get a notice, a clickable toast and a "Waiting on" line. Pals never answer it for you.
- Clean install fixes:
pal teamwith zero pals, empty team list in errors, a false backup message. - README: correct install link, preview, tested harnesses (Claude Code, Codex), Linux-only stated, new "Hiring a pal into a new folder" section.
- AGENTS.md for contributors, and docs/mac-support.md (plan only, not built).
- Menu: shorter Forget confirmation.
Project Pals 0.2.0
Project Pals: first public release. Pals as folder faces, channels as colored tabs (pin, color, rename), hire on any harness with a model per pal, rooms, tasks, routines, memory, an approval gate, and an in-app updater.