Appearance
ahpd 0.11
The good stuff
Bots and automations are Markdown files you edit by hand, and a quiet session sleeps.
- Bots are Markdown: a bot is frontmatter and its instructions, reloaded on save.
- Automations are Markdown: an automation is its message, and it can wake on what a session does.
- Sessions sleep: a quiet session sleeps and wakes when something needs it.
- Usage keeps both costs: the provider's cost beside the charged one.
0.11.0 - 2026-10-11
Upgrading
- On first start, the daemon converts its stores to Markdown files and keeps each original with a
.migratedsuffix:- each bot in
<configDir>/bots/<slug>.jsonbecomes<slug>.md; automations.jsonbecomes one file per automation in<configDir>/automations/<id>.md, with run state inautomations-state.json.
- each bot in
- Plugins now declare
@ahpd/sdkwith an upper bound:>=0.10 <1, and>=0.8 <1fortunnel-devtunnel. @ahpd/botand@ahpd/pushare published to npm for the first time.
Bots
- A bot is a Markdown file: YAML frontmatter, with its instructions as the body. An edit to the file reaches the daemon without a restart. See docs/BOTS.md.
- Making a bot starts its session, and a bot can be watched.
- Bots have a catalogue, served as a channel.
- An admin can make a bot for any owner.
- A bot's colour is a name or a hex colour.
Automations
- An automation is a Markdown file, with its message as the body. A copy under a new name is a new automation, and an edit is reloaded at once. See docs/AUTOMATIONS.md.
- An automation can wake on what a session does, and can disable itself.
- An automation carries its template's client plugins.
Plugins
- Plugins keep records in the host's record store, written as Markdown files. A plugin also gets YAML from the host.
- A plugin can serve a channel, and is a client of its own host.
- A plugin is known by its id.
ahpd plugin installpicks the newest version that fits the daemon's sdk, andplugin update --forceinstalls each package on its own.
Sessions and VS Code parity
- A quiet session sleeps and wakes when something needs it.
- Stage, unstage, discard and commit take one file or the whole changeset. The working tree is the first changeset.
- A chat can be reordered, moved to another session, read or archived on its own. A peer chat survives a restart.
- A chat lists the shells and subagents running in its background, and an MCP server startup can be sent to the background.
- Attachments reach Claude, pi, ACP and cofold turns.
- The ACP bridge resumes without replay, forks where the server can, and asks the server's questions.
- Root config declares VS Code's keys and refuses the rest.
Daemon and API
- The host serves
x-commands; people, policies and computers are channels; usage is read through commands. - The API answers only the origins a deployment names.
- Each plugin config field can be overridden by a recorded flag.
Usage
- A usage record keeps the provider's cost beside the charged one, split into sent and received tokens.
- A usage list shows what a reader may read, by range and group.
- A reset conversation starts the cost baseline again.
Push
- A session's devices are told when it finishes a turn, as well as when it needs a person.