A Pinned tab in the Desktop sidebar that files your pinned chats into nested folders: drag to order and nest, folder colors, right-click menus (including Unpin), unread/working badges on collapsed folders, a filter box, open-folder-as-tabs, and layout export/import via the clipboard. Layout stays local to the app; pins belong to the backend. SDK-only build (desktop/plugin.js); no network.
DesktopAgent-owned workflow graphs for Hermes — a background runner executes a JSON DAG of agent nodes, fan-outs (quorum) and human/machine gates with fingerprint replay-skip resume, cooperative steer, typed failure events and compact status payloads; ships a desktop DAG view, an inline transcript card and the authoring skill with measured budget recipes. Stock Hermes; no patched core required. Disclosure — every workflow run spawns a detached background runner (wf.py run <id>) that survives session end, gateway restart and plugin disable until the graph reaches a boundary or workflow stop; each agent node is a child hermes chat --query-file … --oneshot -Q … inheriting the runner's environment, and a node with profile set runs as that named profile (with its own credentials) only if the target's workflow_team.json lists the launcher; a gate's wait.until_argv runs an agent-authored argv directly from the runner, outside Hermes' tool-approval gate (the engine uses no shell, but the shipped machine-watch and incident-response templates use it to run a shell line read from a fixed-name handoff file under $HERMES_HOME, and release-lifecycle one read from a per-run handoff file in the run dir); the runner makes itself the subreaper of its children and SIGTERM/SIGKILLs any process a node leaves running (its own descendants plus pids registered in the run's .proctree_sidecar.jsonl) when the node finishes, retries or the run stops; run and amend send a one-token ping through Hermes' configured providers to check pinned model routes; at gate.held/run.done/run.failed the runner reads the API server key from config.yaml and POSTs a wake turn to the local Hermes API server — the gate.held wake only relays the gate to the human, but the run.done wake tells the woken session to turn the run's findings into tracked work and dispatch follow-up work (as PRs) before the turn ends, and the run.failed wake to apply one corrective amend/repair/resume; a transform_llm_output hook appends a ::workflow{id} card line to replies for runs the session launched in the last 30 minutes; the runner reads WORKFLOW_MAX_SEATS (that key only) from $HERMES_HOME/.env and the active profile's .env; state.db is read read-only, including every profile's session ids and profile names, and status/wait can read runs in sibling profiles' workflows dirs; state lives under $HERMES_HOME/workflows/ (or a configured runs_root). No other network of its own.
AutomationNative Beads (bd) work-graph plugin: fixed-argv adapter, scoped ready frontier, claim with read-back, guarded writes. Six tools over an explicit store path + actor; honest exit-code map incl. stale-13; plain bd stays fully sufficient (escape hatch). No desktop pane ships yet.
ToolsRich, evidence-backed answer cards — tables, charts, metrics, timelines, sources — rendered inline in the desktop transcript Disclosure — Image and ImageGallery cards load agent-supplied https image URLs (up to 8 per gallery) from any host when the card renders in Desktop
Desktop