Repository navigation
v0.4.0
A bot that works like a coworker: it hands longer work to helpers in the background, remembers by itself as Claude Code does, sees each new message in its wake, and keeps the start of its requests the same, so the provider's prompt cache serves most of them.
Added
- Children: helpers for longer work. With its new
tasktool the bot starts children: agents that work in the background withread,write,edit,bashandscreen, on a brief the bot writes. The bot answers the person first and stays free to talk. A child's final message comes back to the bot once, also across crashes and restarts. The bot chooses each child's thinking level:high,xhighormax. New inbot.json:childModel,childThinking(xhighby default) andsettings.maxChildren(50 by default).pots childrenlists the children and stops them, andpots statusshows how many work. - Automatic memory, as in Claude Code. Each bot has a
memory/folder of markdown files with aMEMORY.mdindex, and the bots of one computer share~/.pots/memory/. The bot sees the indexes at the start of every page and saves what is worth keeping. After each piece of work, a pass in the background, continuing the same conversation, saves what it missed; once a day, after 5 changes, a dream tidies the memory up. Code lets these passes change nothing but the memory files."settings": {"autoMemory": false}inbot.jsonturns the memory off. - The
screentool.screenruns commands asbashdoes, with the screen's environment, and holds the screen for one agent at a time; another agent learns who has it and since when. On Linux, plainbashno longer getsDISPLAY,XAUTHORITYorWAYLAND_DISPLAY. On macOS and Windows the screen does not need those variables, so there only the prompt keeps agents toscreen. A bot that sets up its own desktop writes it intoscreenin itsbot.json. - Wakes carry the messages. Each wake has the text of each new message (and whether it was edited or deleted), the start of its thread, and its files. Pots downloads a message's files when the message comes, up to 10 MB each, into
files/tmp/in the bot's folder, and deletes them there 30 days later. A larger file, or one not saved within 10 seconds, is given by its URL. The message log keeps the URL of every file, so the bot can download it again. pots traceandpots contextshow the prompt cache: how much of the input the provider's cache served, and what the requests that missed it cost.thinkinginbot.jsonalso takesmax. A level the model does not have becomes the nearest one it has, as in pi.
Changed
- The judge is
offby default. A bot whosebot.jsonhas nojudgenow gets every message that does not mention it, and decides itself. It used to bemain. To keep that, set"judge": "main", or use a fast classifier such astypesafe/jev-latest. - The start of each request stays the same. The bot's own prompt sections keep their text for the whole page: a change, such as a new
settingsvalue, shows after the page turns, after pi compacts, or once after an upgrade. The bot's address in each channel is now in the wake, and the bot runssudo -n trueitself to learn whether sudo needs a password. - The messages of one place reach the bot in the order they came, also when an earlier one waits for its files.
Fixed
- A sign-in opens the page with
$BROWSERwhen it is set, on macOS and Windows too. On macOS it is read as xdg-open reads it, a list of commands split by:; on Windows as one program; on Linux xdg-open reads it, as before. The tests set it, so they no longer open real browser tabs on a Mac. pots initends when it is done, also after a browser sign-in. It printed "Start the gateway with pots start" and then did not end for minutes: pi's sign-in server left open a connection the browser had opened ahead of time. Now apotscommand ends when its work is done and its output is written.pots start,pots chatandpots service logs --followrun as before.
What's Changed
- Coworker: wakes carry the message, background children, a screen lease, automatic memory and a stable prefix by @Crokily in #10
- pots opens a sign-in page with $BROWSER when it is set, so the tests open no browser on macOS by @Crokily in #11
- A pots command ends when it is done, also when a sign-in left a connection open by @Crokily in #12
Full Changelog: v0.3.3...v0.4.0