OpenMuse 0.3.0
Your calendar, and a memory that stays tidy. The agent reads any calendar with a private .ics link, knows what is on today, finds free time and proposes events as cards you add with a tap; memories are updated instead of duplicated and tidied up periodically, every change with an undo. Plus fixes for reasoning models that think past their token budget and for cut-off tool calls.
Added
- Calendar connector. Any calendar with a private iCalendar link — Google, Outlook, iCloud, Fastmail, Nextcloud — or an
.icsfile on disk, added from Connections → Calendar (the screen says where each provider hides the link) oropenmuse calendar add NAME URL; the link is kept in the vault. Feeds are read on the spot and refreshed in the background; recurring events, exceptions and moved instances are expanded per RFC 5545. The agent gets acalendartool — agenda, search, free time inside working hours — and draft: an event it proposes is written as an.icsfile and shown as a card with Add to calendar; it never writes to the calendar itself. Today's and tomorrow's events are in the system prompt; the Feed shows them under Today.openmuse calendar agenda | free | feeds | add | remove;openmuse doctorreports the feeds. - Memory that stays tidy. A fact that changed is updated in place (
remembertakesreplaces=<id>, and a line that says the same thing in other words replaces the old one on its own) instead of piling up next to the old version. A periodic tidy-up — after every eight new lines or weekly, and Memory → Tidy up on demand,openmuse memory tidy [--dry-run]from the CLI — merges lines that say the same thing, keeps the newer fact when two contradict, and drops one-off requests that were never facts about the user. The model proposes; OpenMuse checks: a merged line may add no words that were not there (checked by character for Chinese), nothing the user wrote themselves is dropped, at most a fifth of the store changes per pass. Every merge, drop and update is logged with the text it replaced — Memory → Recent changes andopenmuse memory changesshow them, each with an undo (memory restore <id>). A tidy-up that changed something is one line in the Feed and the chat. - Recall weighs rare words: a word that is in half the memories no longer decides which one is meant.
Fixed
- A reasoning model that spends the whole
max_tokensthinking and returns nothing is asked once more with four times the budget — in the agent loop, for Ideas and for the memory tidy-up. The Responses API's "incomplete" is reported as the samelengthfinish as the Chat API's. - A file the agent made is tappable in a reply even when it is named in plain prose ("saved as packing-list.html"), not only in backticks or a link.
- A tool call whose arguments were cut off in transit is shown as such ("files: arguments cut off (4120 chars)") and handed straight back as a failure, instead of appearing as
files. .and going through Sentinel — where afiles.writewith no path could even ask for approval. - The 简体中文 app translates the labels the server puts on background work (Working on your goal, Check-in, Reminder, Routine, Tidied memory) in the Feed and on quiet lines; the memory tidy-up's chat summary is written in 中文 when that is the reply language, or when the memories themselves are.
pip install -U openmuse · uv tool upgrade openmuse · docker pull ghcr.io/openmuseagent/openmuse:0.3.0. Full list of changes: CHANGELOG.md.