OrcBot’s autonomy system enables the agent to work proactively in the background, performing scheduled tasks, following up on conversations, and optimizing its own behavior based on productivity metrics.
# ~/.orcbot/orcbot.config.yaml# Enable autonomous operationautonomyEnabled: true# Heartbeat interval in milliseconds (5 minutes)autonomyInterval: 300000# Maximum number of tasks in backlog before pausing autonomyautonomyBacklogLimit: 10# Channels where agent can send proactive updatesautonomyAllowedChannels: - telegram - discord
action_type: follow_updescription: "Continue discussion about deployment strategy with Alice"context: - Last message: 2 hours ago - Topic: Kubernetes migration - Status: Waiting for Alice's decision
action_type: outreachdescription: "Check in with Bob about Q4 planning"context: - Last contact: 3 days ago - Pending: Q4 roadmap review - Relationship: regular collaborator
Only allowed on channels in autonomyAllowedChannels:
autonomyAllowedChannels: - telegram # ✅ Agent can message Telegram proactively - discord # ✅ Agent can message Discord proactively # WhatsApp not listed → ❌ Agent won't send unprompted messages
Example:
# Scheduled reminder (proactive)Bot (Telegram): "⏰ Reminder: Team standup in 15 minutes"✅ Allowed - Telegram is in autonomyAllowedChannels# Background insight (proactive) Bot (WhatsApp): "I noticed a pattern in your calendar..."❌ Blocked - WhatsApp not in autonomyAllowedChannels
schedule_task( when: "in 2 hours", task: "Send daily report to Frederick on Telegram")schedule_task( when: "2024-03-15 14:00", task: "Remind me to join the board meeting")
Supported formats:
Relative: "in 30 minutes", "in 2 hours", "in 3 days"
// Every weekday at 9 AMheartbeat_schedule( schedule: "0 9 * * 1-5", task: "Send morning briefing with news and calendar")// Every hourheartbeat_schedule( schedule: "0 * * * *", task: "Check server health metrics")// Every Monday at 10 AMheartbeat_schedule( schedule: "0 10 * * 1", task: "Weekly team sync reminder")
Cron format:minute hour day month weekday
# Every 5 minutes*/5 * * * *# Every hour at :3030 * * * *# Every day at 6 PM0 18 * * *# Every weekday at 9 AM0 9 * * 1-5# First day of month at midnight 0 0 1 * *
// User asks for researchUser: "Find the latest price of Bitcoin"// Agent performs web searchAction: web_search("Bitcoin price")Result: "$52,340 USD as of March 2024"// Agent tries to complete without sending resultAction: complete_task()// ❌ Blocked by audit systemAudit: "UNSENT_RESULTS - Search results not delivered to user"// Agent sends results firstAction: send_message("Bitcoin is currently $52,340 USD")// ✅ Now completion allowedAction: complete_task()
# Base heartbeat interval (milliseconds)autonomyInterval: 300000 # 5 minutes# Custom intervals for different scenariosautonomyIntervalWhenIdle: 600000 # 10 min when idleautonomyIntervalWhenBusy: 180000 # 3 min when busyautonomyMaxBackoffMultiplier: 8 # Max 8x base interval
# How much context to analyze during heartbeatautonomyContextLimit: 20 # Recent memories to reviewautonomyThreadContextLimit: 10 # Conversation threadsautonomyJournalContextLimit: 500 # Journal chars to consider
# Agent notices repeated topic mentionsTopic detected: "Rust programming language"Mentioned in: 4 conversations this week# Autonomous research actionAction: researchDescription: "Learn about Rust programming language and its use cases"# Agent performs web search, reads docs, updates learning# Later in conversationUser: "Should we use Rust for the new service?"Bot: Based on my research: Rust Strengths: - Memory safety without garbage collection - High performance (comparable to C++) - Strong concurrency support Trade-offs: - Steeper learning curve - Slower compilation times - Smaller ecosystem than Go/Node.js Recommendation: Good fit if performance and safety are critical. Consider Go if team velocity is priority.
# Morning conversationUser: "I need to decide on the cloud provider by Friday"Bot: "I'll help you research options. AWS, GCP, or Azure?"User: "Compare all three for our use case"Bot: "I'll prepare a comparison. Talk later!"# Autonomous follow-up (3 hours later)Action: follow_upContext: "User needs cloud provider decision by Friday (2 days away)"# Agent performs research# Proactive updateBot (Telegram): I've completed the cloud provider comparison you requested: [Sends detailed report with pricing, features, pros/cons] Based on your requirements, I recommend GCP: - 23% cheaper for your workload - Better Kubernetes integration - Simpler pricing structure Would you like me to prepare a migration plan?