Repository navigation
Releases: smixs/pi-durable-telegram
Release list
v0.1.8
v0.1.7
Update
curl -fsSL https://raw.githubusercontent.com/smixs/pi-durable-telegram/main/install.sh | bashand restart the service.
What changed in 0.1.7
- Several questions in one message stay answerable. A tap used to disable every button of the message, so after answering one question the others could no longer be tapped. Now a tap marks ✅ and disables only its own button row; the other rows keep working, and a later tap in another row marks that row too. A button outside any row still disables all choices of the message.
Full list: CHANGELOG.
v0.1.6
Update
curl -fsSL https://raw.githubusercontent.com/smixs/pi-durable-telegram/main/install.sh | bashand restart the service.
What changed in 0.1.6
- No more lost messages after a bot change. When the bot token changed, Telegram started message ids again, and new messages whose ids matched old ones were dropped as duplicates without reaching the agent. Messages are now told apart by chat, id and send date; a redelivered update is still handled once.
- The log says why an update counts as a duplicate:
reason=redelivered(normal) orreason=other_update(a warning: a message may have been lost). /newno longer drops waiting messages silently: its reply says the running request was stopped and lists the first words of each message dropped without an answer.
Full list: CHANGELOG.
v0.1.5
Update
curl -fsSL https://raw.githubusercontent.com/smixs/pi-durable-telegram/main/install.sh | bashor npm install -g pi-durable-telegram@latest and restart the service.
What changed in 0.1.5
Helpers and reminders, two new built-in plugins. Switch them on in PI_PLUGINS, for example PI_PLUGINS=search,skills,helpers,reminders.
helpers: the agent hands a self-contained job to a helper agent with the same tools and gets its answer back. Several helpers can work at once (PI_HELPERS_MAX, default 4), optionally on a cheaper model (PI_HELPER_MODEL)./stopstops them together with the agent, and a restart resumes them without starting the job twice.reminders: "remind me in 2 hours", "every weekday at 9". When a reminder is due, it wakes the agent, which does the work and writes to you first. Each one fires exactly once, also across restarts; one missed while the server was down arrives once, marked late. Times usePI_TIMEZONE.
How to switch each on: docs/plugins.md.
Full list: CHANGELOG.
v0.1.4
Update
curl -fsSL https://raw.githubusercontent.com/smixs/pi-durable-telegram/main/install.sh | bashor npm install -g pi-durable-telegram@latest and restart the service.
What changed in 0.1.4
Plugins. The core stays small; extra powers are switched on with one line, for example PI_PLUGINS=search,skills.
search: the agent searches the web with your Tavily, Exa, Brave or Parallel key. Results reach the model marked as untrusted web data.mcp: tools from the MCP servers in.mcp.json(stdio and HTTP). A server that fails or hangs is reported, the others still work.skills: the agent sees the skills inskills/, in pi's own skills folder and inPI_SKILLS_DIRS, and reads one when a task matches.- Your own plugin can come from a folder or from npm. A broken plugin never stops the bot: it is skipped, you get one line in the chat, and
/statuslists what loaded.
How to switch each on and how to write your own: docs/plugins.md.
Full list: CHANGELOG.
v0.1.3
Update
curl -fsSL https://raw.githubusercontent.com/smixs/pi-durable-telegram/main/install.sh | bashor npm install -g pi-durable-telegram@latest and restart the service.
What changed in 0.1.3
Answers look like Telegram, and you can answer with a tap.
- Answers are Telegram rich messages: tables, task lists, headings and folds render natively. Long answers are split within Telegram's limits; if Telegram refuses a rich message, the answer goes out as HTML.
TELEGRAM_RICH=neverkeeps the old messages. - Buttons: the agent can end a question with buttons. A tap is simply your next message, and the pressed button is marked as chosen. Typing an answer instead works just as well.
- While the agent types, you see a live draft with a stop button that works like
/stop. - The engine is pi-durable 1.2.0 (with pi-ai and chord 1.2.0).
Full list: CHANGELOG.
v0.1.2
Update
curl -fsSL https://raw.githubusercontent.com/smixs/pi-durable-telegram/main/install.sh | bashWhat changed in 0.1.2
Nothing you send is refused any more. The agent gets everything and decides what to do with it.
- Videos, animations and stickers are saved and handed to the agent like photos and documents.
- A file over 20 MB, or one that fails to download, is reported to the agent with its name, size and the reason.
- A location, contact, poll or any other message without text or a file arrives as its own fields.
- A voice note without a transcript (no Deepgram key, or the speech service failed) is saved as an audio file with the reason.
Before this the bot answered "This kind of message is not supported" or "Voice messages are not configured" on its own.
Full list: CHANGELOG.
v0.1.1
Install or update with one command
curl -fsSL https://raw.githubusercontent.com/smixs/pi-durable-telegram/main/install.sh | bashWhat changed in 0.1.1
- One-command installer. It installs the official pi, opens it for
/login, connects your bot, finds your Telegram id from your first message, takes the model pi runs, installs the daemon and starts the service. Run it again to update. - The installer and the setup skill now write the provider and model into the settings. A fresh pi saves no default the daemon could read, and the service used to stop with "not logged in" for another provider.
- The systemd unit no longer restarts in a loop on configuration errors (exit codes 2, 3 and 4).
- README rewritten in plain language; the technical reference moved to
docs/.
Checked end to end on a clean Ubuntu 22.04 server: one command from curl to the bot's first answer.
Full list: CHANGELOG.
v0.1.0
First release of pi-durable telegram: an always-on, durable pi agent on your own server that you talk to in Telegram.
Get started in three steps
On your server:
- Install pi:
curl -fsSL https://pi.dev/install.sh | sh - Start
piand run/loginwith any provider pi supports. pi install git:github.com/smixs/pi-durable-telegram, then in pi:/skill:pi-durable-telegram.
The skill asks for a bot token from @Botfather, finds your Telegram id when you message the bot, installs the daemon from this release and checks that the bot answers.
Daemon only: npm install -g https://github.com/smixs/pi-durable-telegram/releases/latest/download/pi-durable-telegram.tgz
What is in 0.1.0
- One durable pi-durable conversation per allowed private chat in SQLite; an unfinished run resumes after a crash or restart and its answer is delivered once.
- Streaming answers, queueing while busy,
/new,/stop,/compact,/status,/help. - Photos, documents and voice notes (Deepgram) in, files back with
telegram_send_file. bash,read,write,edittools with secrets stripped from the shell environment.- Shares pi's login (
~/.pi/agent/auth.json, under pi's own lock) and pi's default provider, model and thinking level.
pi-durable is experimental; this release pins @earendil-works/pi-durable, pi-ai and chord 1.1.0. Full list: CHANGELOG.