Fronalabs dropped version 2026.5.5 of Frona, their self-hosted personal AI assistant, this week—and it's a substantial backend refresh that longtime users have been waiting for. The release centers on identity unification and task scheduling robustness, replacing the old username/slug fields across User, Agent, App, McpServer, and Channel entities with a new Handle newtype. If you've been running Frona in production, this is the migration that carries your install forward cleanly.
Identity Overhaul: Handles Replace Legacy Fields
The Handle newtype introduces sanitization rules and ships with a build-script-generated reserved-name list to prevent conflicts. User.username is now handle, Agent requires both user_id and handle, App gets its own handle field, and McpServer.slug becomes handle. All storage paths have switched to data/users/{handle}/{subsystem}, with per-channel storage keyed by these handles instead of arbitrary slugs or record literals. The Cedar schema UIDs are now formatted as Kind::"{user_handle}/{entity_handle}" under a User parent, which means policy enforcement is more predictable and the decision cache can actually work properly without stale lookups.
Task Scheduling Gets Serious
The CronRun crash-recovery race that haunted recurring tasks has been patched in this release. The fix narrows the orphan query and reorders resume_all to eliminate the window where concurrent processes could collide. More importantly, every task now requires a result_schema on creation—create_task and create_recurring_task both enforce it—which drives how cron and one-shot results render back into source chats. This schema validation means your researcher agent won't dump raw JSON into conversations anymore; instead, results are classified and rendered according to the authoring intent. The send_message permission is now restricted to the agent's heartbeat chat so task delivery always flows through complete_task.result as structured output.
Chat UI Finally Gets Scroll Pagination
On the frontend side, Frona now loads older messages on scroll-to-top and merges historical content with SSE-buffered ones when loading a chat room. Day separators and conversation gaps are visible, and hovering over any message reveals its timestamp—a small quality-of-life fix that makes long-running conversations actually navigable. The auth system has been refactored too: AuthGuard is gone, replaced by AppGate plus RequireAuth, with context splitting for auth, navigation, and session state.
Performance Wins Through Caching
Policy decisions are now cached with prefix-scoped invalidation, and per-agent permitted tool sets are cached to cut /api/agents from O(N·M²) down to O(N·M). For multi-agent deployments, this is a meaningful latency reduction on every policy check. The sandbox layer smooths tracked CPU via EWMA to absorb transient bursts and fills missing limits with server defaults during partial saves. Cache key alignment for sandbox_cache invalidation now properly keys off user_id instead of leaking between users.
Supported Channels
Frona v2026.5.5 supports Slack, Discord, Telegram, Signal, SMS, WhatsApp Cloud, and WhatsApp Personal as integration channels. Webhooks skip setWebhook calls when the URL already points to Frona's infrastructure, preventing redundant queue writes on stale registrations.
Key Takeaways
- Handle-based identity unification applies across all five entity types (User, Agent, App, McpServer, Channel)
- CronRun crash-recovery race fixed with narrowed orphan queries and reordered resume_all logic
- Result_schema requirement enforces structured output delivery for scheduled tasks back to source chats
- Policy decision cache plus tool set caching reduces /api/agents complexity from O(N·M²) to O(N·M)
- Chat UI now paginates history on scroll-up with day separators and per-message hover timestamps
The Bottom Line
This is a release that rewards careful readers—the real story isn't any single flashy feature but the systematic cleanup of implicit assumptions baked into Frona's architecture over time. If you're self-hosting, the handle migration cutover happens at 2026-05-24T00:00:00Z, so plan your upgrade accordingly. The caching improvements alone justify updating if you've been hitting policy check latency on multi-agent setups.