Skip to content

AgentOS 2026.8.28

Choose a tag to compare

@andreapn andreapn released this 27 Aug 17:02
· 222 commits to main since this release
c9553fa

A release about giving sessions a place to live. Chat sessions can now be grouped into projects that carry shared knowledge into every member session's prompt, and the cron parser stops arguing with operators about what a perfectly ordinary expression means.

Projects

Sessions can now be grouped into projects — and a project sits above agents, not inside one. Sessions of any agent can join the same project; the project's agent field is only the default for "New chat in project".

The part that does the work is knowledge: each project carries a free-form text that is injected into the system prompt of every member session, wrapped as an untrusted Project Knowledge block. It is re-read each turn, so editing a project's knowledge lands on the very next turn of every session in it — no restart, no new session.

The feature surfaces everywhere a session does:

  • A new Projects page in the Web UI — create, rename, edit knowledge, delete, "New chat in project", and a session list per project.
  • The Sessions page gets a project badge, a project filter, and "Move to project"; the chat header can move the current session between projects, and the chat session switcher groups by project tier.
  • An agentos projects CLI group: list / create / show / update / delete / move.
  • projects.* JSON-RPC methods, plus projectId on sessions.create / sessions.patch / sessions.list.
  • Agent-facing projects_* tools, and session_search scope=project so an agent can search its sibling sessions' transcripts within the same project.

Existing databases migrate automatically (V011). Old sessions come up project-less, and deleting a project detaches its sessions instead of deleting them. (#495)

The cron parser meets cron as it is written

Four scheduler fixes, all in the direction of accepting what every other cron implementation accepts and refusing what none of them mean:

  • Day-of-week 7 is Sunday. 0 0 * * 7 now schedules Sundays instead of being rejected — both 0 and 7 are Sunday, as in Vixie cron. (#478)
  • Reversed ranges in stepped fields are rejected. 30-20/5 used to parse into something no one asked for; it is now refused up front with a clear error instead of firing at surprise times. (#480)
  • Month and day-of-week names are case-insensitive. jan, JAN and Jan are the same month; sun/SUN the same day. (#482)
  • The timezone alias is honored on legacy expression schedules. A schedule written in the old expression form with a timezone alias now actually runs in that timezone rather than silently falling back. (#485)

Thanks to @Carlys17 for all four.