Operon v3.1.0 is an early public beta. It is feature-rich and well-tested (1,896 passing tests), but a few architectural improvements are intentionally deferred to keep the beta stable rather than risk a last-minute rewrite.
The command dispatcher (handle_command) and the agent loop live in a single
large module.
Done (v3.1.x): Introduced the cmd_handlers/ package with a
CommandContext + dispatch registry. handle_command now consults the modular
dispatch first and falls back to the legacy elif-chain for anything not yet
migrated. Read-only commands (/clear, /undo, /history, /compress,
/tools, /usage, /cost, /models, /config, /soul) are extracted into
cmd_handlers/info.py, cmd_handlers/session_cmds.py, and
cmd_handlers/config_cmds.py. The first stateful command, /macro, is now
extracted into cmd_handlers/macro_cmds.py — it owns the lazy
main._macros singleton through the live main module, proving the pattern
for migrating global-state commands without a circular import. Covered by
tests/test_cmd_handlers.py and tests/test_macro_cmds.py.
Remaining: Migrate the rest of the global-state-mutating commands
(/gateway, /dashboard, /approve, /mcp, /webhook, /rag, /secrets,
/heartbeat, /goal, /plugin, /curator) using the same live-module
pattern. Then move the agent loop into its own module.
Target: v3.2.0
Tool calls run synchronously, so one slow network tool blocks the turn.
Plan: Move the tool-dispatch layer in run_agent_loop() to asyncio, using
asyncio.gather() for independent parallel tool calls.
Target: v3.2.0
Discord, Telegram, and Slack integrations are functional but lighter than dedicated bots (no full thread/voice/embed parity).
Plan: Deepen each channel incrementally based on beta feedback.
Target: v3.3.0
Several of the originally post-beta items have already shipped in v3.1.x:
- Background (non-blocking) context compression wired into the main loop
(
main._background_compact+BackgroundCompressor). - Unified memory facade over FTS5 + vector + Obsidian backends
(
core/memory_facade.py). - Streaming real-time voice over Deepgram WebSocket
(
CloudStreamingTranscriberincore/voice_pipeline.py). - Plugin marketplace with seed community plugins (
plugins/examples/). - LSP / static-analysis integration in the SWE agent
(
StaticAnalyzerincore/swe_agent.py). - Supply-chain dependency scanning in
/doctor(core/dep_audit.py).
Still ahead:
- Deepen Telegram + Discord to match the expanded Slack toolset (threads, scheduled messages, pin/topic parity).
- Move the agent loop out of
main.pyinto its own module.
Open a feature request or start a GitHub Discussion. Beta feedback directly shapes priorities.