Enhanced OpenCode Plugin with Receptionist Agent for Better UX and Cost Efficiency
Oh My OpenCode (OMO) is an excellent OpenCode plugin that provides powerful multi-agent orchestration capabilities. However, we identified two key issues during usage:
-
High Token Consumption: OMO uses Sisyphus (a top-tier reasoning model) as the default agent. While powerful, this leads to significant token costs even for simple interactions like "what is 2+2?".
-
Steep Learning Curve: OMO assumes users are experienced developers who can articulate their needs precisely. New users often struggle with vague requirements and don't know how to leverage the system effectively.
OMOPLUS introduces a "Programming Outsourcing Company" model:
User (Client)
↓
Receptionist (Front Desk) ← Default Agent, Low-Cost Model
↓
Sisyphus (Manager) ← Activated only when needed
↓
Prometheus (Consultant) ← Requirement Analysis
↓
Agent Team (Developers) ← Hephaestus, explore, librarian, etc.
↓
Secretary (Assistant) ← Result Aggregation, Exception Handling
↓
Sisyphus (Final Confirmation)
Design Philosophy: In OMO, users are immediately thrown into Sisyphus's complex orchestration system. This is overwhelming for newcomers who don't know what agents are available or how to phrase their requests effectively.
How Receptionist Helps:
- Guided Onboarding: Instead of a blank slate, users get a friendly greeting: "Hello! I'm the Receptionist. What would you like to work on today?"
- Complexity Assessment: Receptionist evaluates whether the task needs Sisyphus's orchestration or can be handled directly
- Smart Routing: Simple queries ("fix typo in README") go straight to execution; complex ones ("refactor authentication system") escalate to Sisyphus
- User Education: Receptionist explains what's happening: "This is a complex task. I'm handing it to our technical lead, Sisyphus."
UX Improvement: Users no longer feel lost. They have a clear entry point and understand the system's behavior.
Design Philosophy: In OMO, Sisyphus actively polls background tasks to check their status. This creates unnecessary token consumption and can feel "noisy" as Sisyphus frequently reports intermediate progress.
How Secretary Helps:
- Result Aggregation: Secretary collects outputs from all worker agents (explore, librarian, Hephaestus, etc.)
- Exception Detection: Identifies failed tasks, timeouts, and inconsistencies without bothering Sisyphus
- Structured Summaries: Presents clean, organized reports to Sisyphus only when all tasks complete or when intervention is needed
- Noise Reduction: Sisyphus no longer interrupts with "Task X is still running..." messages
UX Improvement: Users get cleaner, more focused interactions. Sisyphus appears only for meaningful decisions, not status updates.
| Aspect | OMO | OMOPLUS |
|---|---|---|
| First Interaction | Direct to Sisyphus (can be intimidating) | Receptionist guides you (friendly & approachable) |
| Simple Tasks | Full orchestration overhead | Direct execution, minimal ceremony |
| Background Tasks | Sisyphus polls repeatedly | Secretary aggregates silently |
| Status Updates | Frequent intermediate reports | Clean final summaries |
| Learning Curve | Steep (must understand all agents) | Gentle (Receptionist explains as needed) |
| Error Handling | Sisyphus handles all exceptions | Secretary triages and escalates only critical issues |
Key Benefits:
- 🎯 90% Cost Reduction: Low-cost models for routine interactions, premium models for complex decisions
- 🚀 Better UX: Guided requirement collection from vague ideas to clear plans
- 🔄 Smart Escalation: Automatic complexity detection and agent routing
We started by forking OMO v3.11.0 and understanding its architecture:
- 1268 TypeScript files, 160k+ lines of code
- 11 built-in agents with factory pattern
- 46 lifecycle hooks in 5 tiers
- 26 tools with sophisticated registration system
Key insight: OMO uses config-handler.ts to set default_agent = "sisyphus". This was our primary modification target.
Created two new agents following OMO's factory pattern:
Receptionist Agent (src/agents/receptionist.ts):
- Mode:
primary(can be default) - Role: First contact point, complexity assessment
- Cost: CHEAP (uses budget-friendly models)
Secretary Agent (src/agents/secretary.ts):
- Mode:
subagent(internal coordinator) - Role: Aggregate results, handle exceptions
- Prevents Sisyphus from polling repeatedly
Built secretary-queue feature module:
SecretaryQueueManager: Result queuing and aggregation- Exception detection and reporting
- Structured summary generation
Critical Decision: OMOPLUS needed its own configuration to coexist with OMO.
Changed all references:
| Original | OMOPLUS |
|---|---|
oh-my-opencode.json |
omoplus.json |
oh-my-opencode.log |
omoplus.log |
oh-my-opencode.schema.json |
omoplus.schema.json |
This allows users to run both plugins independently without conflicts.
- v0.0.1 (March 8, 2026): Initial release with Receptionist and Secretary
- v0.0.2 (March 8, 2026): Independent configuration system
OMOPLUS is a secondary development based on Oh My OpenCode by @code-yeongyu.
OMOPLUS inherits the same license as OMO: SUL-1.0 (Source Use License 1.0)
Key terms:
- ✅ Free to use, modify, and distribute
- ✅ Commercial use permitted
- ✅ Secondary development encouraged
- ❌ No warranty provided
- ❌ Must retain original license and attribution
- Added two new agents:
receptionistandsecretary - Created
secretary-queuefeature module - Changed default agent from
sisyphustoreceptionist - Renamed configuration files for independence
- Updated package branding to OMOPLUS
All core functionality (hooks, tools, MCPs, other agents) remains from OMO.
npm install omoplus
# or
bun add omoplusAdd to your ~/.config/opencode/opencode.json:
{
"plugin": ["omoplus"]
}Create ~/.config/opencode/omoplus.json:
{
"$schema": "https://raw.githubusercontent.com/jcy321/OMOPLUS/main/assets/omoplus.schema.json",
"agents": {
"receptionist": {
"model": "anthropic/claude-haiku-4-5",
"temperature": 0.3,
"description": "Front desk agent - first contact point for user interactions"
},
"secretary": {
"model": "anthropic/claude-sonnet-4-5",
"temperature": 0.2,
"description": "Secretary agent - aggregates results and handles exceptions"
},
"sisyphus": {
"model": "anthropic/claude-opus-4-5",
"temperature": 0.3,
"description": "Main orchestrator - activated for complex tasks"
}
}
}| Field | Type | Description |
|---|---|---|
model |
string | Model ID in format provider/model |
temperature |
number | Sampling temperature (0-2) |
description |
string | Agent description shown in UI |
variant |
string | Model variant (e.g., "high", "medium") |
prompt_append |
string | Additional instructions appended to system prompt |
The Receptionist agent determines task complexity and routes accordingly:
{
"agents": {
"receptionist": {
"model": "your-preferred-model",
"temperature": 0.3,
"prompt_append": "Additional domain-specific instructions..."
}
}
}The Secretary aggregates results from worker agents:
{
"agents": {
"secretary": {
"model": "your-preferred-model",
"temperature": 0.2
}
}
}You can also create .opencode/omoplus.json in your project directory for project-specific settings:
{
"agents": {
"receptionist": {
"model": "project-specific-model"
}
}
}To disable the Receptionist and use Sisyphus as default:
{
"disabled_agents": ["receptionist"]
}{
"$schema": "https://raw.githubusercontent.com/jcy321/OMOPLUS/main/assets/omoplus.schema.json",
"sisyphus_agent": {
"disabled": false,
"default_builder_enabled": true,
"planner_enabled": true
},
"agents": {
"receptionist": {
"model": "anthropic/claude-haiku-4-5",
"temperature": 0.3,
"description": "Front desk agent - first contact point"
},
"secretary": {
"model": "anthropic/claude-sonnet-4-5",
"temperature": 0.2,
"description": "Secretary - result aggregation"
},
"sisyphus": {
"model": "anthropic/claude-opus-4-5",
"temperature": 0.3
},
"oracle": {
"model": "openai/gpt-5.2",
"temperature": 0.2
},
"librarian": {
"model": "google/gemini-3-flash",
"temperature": 0.3
},
"explore": {
"model": "xai/grok-code-fast-1",
"temperature": 0.3
}
},
"categories": {
"quick": {
"model": "anthropic/claude-haiku-4-5",
"temperature": 0.3,
"description": "Simple tasks"
},
"ultrabrain": {
"model": "anthropic/claude-opus-4-5",
"temperature": 0.2,
"description": "Complex reasoning tasks"
}
}
}We extend our deepest gratitude to:
- @code-yeongyu - Creator of Oh My OpenCode, whose excellent architecture made this secondary development possible
- The OpenCode Team - For building an extensible, powerful AI coding assistant
- The Open Source Community - For the tools, libraries, and inspiration
We forked OMO not because it was lacking, but because we saw an opportunity to:
- Reduce costs for budget-conscious users
- Improve the onboarding experience for new users
- Explore different design philosophies in agent orchestration
We welcome contributions from the community!
Ways to contribute:
- 🐛 Report bugs via GitHub Issues
- 💡 Suggest features or improvements
- 🔧 Submit pull requests
- 📖 Improve documentation
- 🌍 Help with translations
Getting started:
git clone https://github.com/jcy321/OMOPLUS.git
cd OMOPLUS
bun install
bun run buildDevelopment commands:
bun run typecheck # Type checking
bun run build # Build the project
bun test # Run tests- GitHub: jcy321/OMOPLUS
- npm: omoplus
We plan to implement remote development capabilities:
- Telegram/Discord bot integration for remote commands
- Natural language to development task translation
- Real-time progress updates via messaging platforms
Example workflow:
User (Telegram): "Fix the bug in auth.ts that's causing login failures"
Bot: "Starting analysis... Found 3 potential issues. Creating fix..."
Bot: "PR created: https://github.com/..."
A visualization dashboard for monitoring:
- Active sessions and their status
- Agent utilization and model usage
- Token consumption analytics
- Background task queue visualization
Features:
- Real-time session monitoring
- Agent activity timeline
- Cost tracking and budgeting
- Historical analytics
Automatic model selection based on:
- Task complexity analysis
- Budget constraints
- Time requirements
- Historical performance
Expand the Receptionist's natural language understanding:
- Support for non-English queries
- Cultural context awareness
- Localized error messages
Enable community extensions:
- Custom agent templates
- Domain-specific skills
- Integration with external services
SUL-1.0 - See LICENSE.md for details.
OMOPLUS - Making AI-assisted development more accessible and cost-effective.
Built with ❤️ on top of Oh My OpenCode