AgentOS 2026.8.28
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 projectsCLI group:list/create/show/update/delete/move. projects.*JSON-RPC methods, plusprojectIdonsessions.create/sessions.patch/sessions.list.- Agent-facing
projects_*tools, andsession_search scope=projectso 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 * * 7now 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/5used 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,JANandJanare the same month;sun/SUNthe 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.