Skip to content

OpenMuse 0.3.0

Choose a tag to compare

@lgy0404 lgy0404 released this 22 Sep 20:30
· 32 commits to main since this release

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 .ics file on disk, added from Connections → Calendar (the screen says where each provider hides the link) or openmuse 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 a calendar tool — agenda, search, free time inside working hours — and draft: an event it proposes is written as an .ics file 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 doctor reports the feeds.
  • Memory that stays tidy. A fact that changed is updated in place (remember takes replaces=<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 and openmuse memory changes show 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_tokens thinking 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 same length finish 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 a files.write with 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.