We're excited to announce MeshAgent 0.28 focused on agent session lifecycle, streaming reliability, OpenAI realtime support, room memory workflows, and cross-SDK alignment across Python, Dart, TypeScript, .NET, and Flutter.
The way agents manage context has been fundamentally improved. AgentSessionContext replaces AgentChatContext, and a new init_session / create_session API replaces the old chat-context initialization methods. Task and thread contexts now expose a .session property, creating a consistent surface across the entire agent lifecycle.
This change brings clarity to how agent state is created, passed, and closed, and makes it easier to build agents that handle long-running or multi-turn interactions cleanly.
MeshAgent now ships with a websocket-first integration for OpenAI's Responses API. Persistent sockets with ping/timeout handling are enabled by default, and the server and router include full websocket proxy support for realtime and response flows.
Voice agents can now use the OpenAI realtime model integration directly, with a configurable voice preset via --voice. Usage tracking and deduplication hooks keep your billing and event data accurate across long-lived connections.
0.28 introduces a full room memory stack. This is one of the most requested capabilities on the platform. Agents can now store, query, and reason over structured knowledge that persists across sessions.
Memory APIs include:
1. create, drop, list, inspect, query
2. upsert_table, upsert_nodes, upsert_relationships
3. ingest_text, ingest_image, ingest_file, ingest_from_table, ingest_from_storage
4. recall, optimize
Memory is surfaced through a new memory grant scope in participant tokens, a meshagent room memory ... CLI command suite, and extensive server/client test coverage. If you're building agents that need to learn and remember across conversations, this is the foundation.
Agents now support richer thread status signaling via thread.status.text.* and thread.status.mode.* events, giving you granular visibility into what a thread is doing at any moment. Codex turns are now cancellable, and task runner thread selection has moved to explicit threading modes: none, manual, and auto.
This makes it much easier to build responsive agent UIs, handle long-running tasks gracefully, and give users meaningful control over agent behavior.
Rooms can now carry annotations that control storage class (standard vs. ephemeral) and runtime limits (meshagent.room.max-runtime-seconds). This gives you fine-grained control over how rooms behave, keeping short-lived workloads cheap and ephemeral while ensuring durable rooms persist appropriately.
Stale and terminal job cleanup is also improved, along with stronger pod and job failure handling and PodDisruptionBudget support in Helm values and templates.
You can now inspect the live runtime state of any room service (including container ID, restart scheduling metadata, and last exit metadata) directly from the CLI, Studio, or SDK. Service restart operations are also now available, making it faster to recover from errors without tearing down a full room.
Webhook validation now covers a broader set of providers out of the box:
1.GitHub, Slack, Shopify, Twilio (existing)
2.Salesforce, Stripe, Zendesk (new in 0.28)
Each provider has dedicated validation logic and test coverage, so you can trust that incoming webhooks are authentic before your agents act on them.
You can now upload entire folders in a single operation from web and IO for MeshAgent Studio and Powerboards. Concurrent upload progress tracking has been improved to keep you informed when uploading multiple files at once.
Python, Dart, TypeScript, and .NET clients are all aligned for session, stream, threading, and runtime changes in 0.28. room_id fields have been added to mailbox and scheduled-task models, task-runner thread controls and naming behavior are available in the CLI and adapters, and SDK docs, snippets, and examples have been regenerated throughout.
- `AgentChatContext` replaced by `AgentSessionContext`.
- `create_chat_context` / `init_chat_context` moved to `create_session` / `init_session`.
- `TaskContext` and `ChatThreadContext` now expose `.session` (instead of `.chat`).
- `LLMAdapter.next(...)` no longer accepts `tool_adapter`.
- `PromptAgent` helper removed from Python agents package.
Dart:
- `ToolOutput` renamed to `ToolCallOutput`.
- `ContentTool.execute` now returns `ToolCallOutput`.
- `AgentsClient.toolCallResponseContents` removed.
- Task runner thread selection moved to explicit threading modes (`none`, `manual`, `auto`).
- Template/catalog naming switched from `developer` to `codex`.
`init_chat_context` is deprecated and now emits `DeprecationWarning`. Migrate to `init_session`.
1. Migrate custom agents from `init_chat_context` to `init_session`.
2. Replace `.chat` references with `.session` in task/thread contexts.
3. Remove `tool_adapter` usage from `LLMAdapter.next(...)`.
4. Update Dart integrations for `ToolCallOutput` and stream-close error semantics.
5. Move task runners to `--threading-mode` (`none`/`manual`/`auto`) and optional `--thread-dir`, `--thread-name-rule`.
6. Apply v0.28 DB migrations before rollout (scheduled tasks/mailboxes/room annotations changes).
7. Validate room annotations if adopting ephemeral storage/runtime limit controls.
8. Update service/template references from `developer` to `codex`.
9. Verify webhook validation method names match the supported validator set.
Join our Discord Server to stay up to date with MeshAgent releases, see full release notes, ask questions, and share feedback with our team.
Check out the MeshAgent documentation to start building today!
MeshAgent Studio, SDK, and Server give you everything to build, test, and deploy agentic applications, from development to production.
