Building an Agent Your Whole Team Can Use
Building an Agent Your Whole Team Can Use
Most AI tools are single-player. One person, one chat window, one conversation. That's fine for personal use, but teams need more.
Ryvos runs as a daemon — always on, always listening, across every channel your team uses. Here's how to set it up.
One Agent, Every Channel
Ryvos supports 4 messaging platforms simultaneously:
- Telegram — via Bot API (long-polling, no webhooks needed)
- Discord — via Gateway (real-time, supports interactive buttons)
- Slack — via Socket Mode (no public URL required)
- WhatsApp — via Cloud API (webhooks)
Plus the built-in Web UI, CLI, and API gateway for programmatic access.
All channels share the same agent, the same memory, the same tools. A conversation started on Slack can reference context from a Telegram chat.
Setting It Up
[channels.telegram]
bot_token = "${TELEGRAM_BOT_TOKEN}"
dm_policy = "allowlist"
allowed_users = [123456789]
[channels.discord]
bot_token = "${DISCORD_BOT_TOKEN}"
dm_policy = "allowlist"
allowed_users = [987654321]
[channels.slack]
bot_token = "${SLACK_BOT_TOKEN}"
app_token = "${SLACK_APP_TOKEN}"
dm_policy = "open"Run ryvos daemon --gateway and your agent is live on all three platforms plus the web UI.
Access Control
Not everyone should have the same level of access. Each channel has its own DM policy:
- Allowlist — only specific users can interact (default, safest)
- Open — anyone can talk to the agent
- Disabled — channel is configured but not active
You can also set per-channel user lists, so your DevOps team on Discord has different access than your marketing team on Slack.
Tool Approvals Across Channels
When the agent needs to do something sensitive — like deleting a file or sending an email — it can ask for human approval. The approval prompt appears on whatever channel the request came from, with native interactive buttons:
- Telegram: inline keyboard buttons
- Discord: action row buttons
- Slack: Block Kit buttons
You can also approve via text: /approve abc123 or /deny abc123 too risky.
Heartbeat Monitoring
Set up periodic health checks that report to a specific channel:
[heartbeat]
enabled = true
interval_secs = 1800
target_channel = "telegram"
active_hours = { start_hour = 9, end_hour = 22, utc_offset = -5 }Every 30 minutes during business hours, your agent checks in. If everything's fine, it stays quiet. If something needs attention, it sends an alert to your Telegram.
Cron Jobs With Channel Routing
Schedule tasks and route the results to the right team:
[[cron.jobs]]
name = "morning-briefing"
schedule = "0 9 * * 1-5"
prompt = "Summarize overnight alerts, open PRs, and today's calendar."
channel = "slack"
[[cron.jobs]]
name = "weekly-report"
schedule = "0 17 * * 5"
prompt = "Generate a weekly summary of completed tasks and metrics."
channel = "discord"Your Monday-Friday morning briefing goes to Slack. The weekly report goes to Discord. All automatic.
Ryvos Cloud: Even Easier
With Ryvos Cloud, you get all of this without managing a server. Your agent runs on managed infrastructure with:
- Channel configuration from the dashboard (no TOML editing)
- Team management with roles (owner, admin, member, viewer)
- Usage tracking per channel
- Budget controls per team
We're building the team agent platform we wished existed. One agent that speaks every language your team uses, runs 24/7, and gets smarter over time.
Get started: ryvos init and select your channels, or join the Cloud waitlist.