opencrow
Health Pass
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 17 GitHub stars
Code Fail
- process.env — Environment variable access in src/agent/agent-sdk.test.ts
- Hardcoded secret — Potential hardcoded credential in src/agent/agent-sdk.test.ts
- process.env — Environment variable access in src/agent/agent-sdk.ts
- network request — Outbound network request in src/agent/alibaba-direct.ts
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Self-hosted multi-agent AI platform, orchestrate specialized agents across Telegram, WhatsApp, and web with 90+ tools, 15 autonomous scrapers, vector memory, and real-time market streaming
OpenCrow
A self-hosted multi-agent AI platform that orchestrates specialized agents across Telegram, WhatsApp, and a web dashboard — with 100+ tools, 16 autonomous data scrapers, vector memory, cron scheduling, and real-time market streaming.
What Can OpenCrow Do?
- Run AI agents on Telegram, WhatsApp, and web — each with its own persona, model, tools, and memory
- Scrape data sources autonomously — HackerNews, Reddit, GitHub, X/Twitter, App Store, Play Store, news, and more
- Remember everything — conversations, facts, and observations are indexed into vector memory and recalled across sessions
- Generate ideas — research agents collect signals, ideation agents synthesize them into product/crypto/AI startup ideas on a schedule
- Monitor markets — real-time crypto derivatives via Binance WebSocket (prices, liquidations, open interest, technical indicators)
- Automate with cron — schedule any agent to run at intervals, one-shot times, or cron expressions
- Self-manage — agents can deploy code, restart processes, manage other agents, and monitor system health
- Scale horizontally — each agent, scraper, and subsystem runs as an isolated process with crash recovery
Architecture
OpenCrow runs as a thin core process that spawns and supervises isolated child processes. Each subsystem (agents, scrapers, web, cron, markets) runs independently with crash-loop detection, exponential backoff, and automatic recovery.
core (orchestrator + internal API)
└── spawns:
├── cron (scheduled jobs + agent execution)
├── web (React dashboard + Hono API)
├── agent:default (Telegram + WhatsApp channels)
├── agent:<id> (per-agent Telegram/WhatsApp bots)
├── scraper:<id> (one per data source, isolated)
└── market (WebSocket hub + derivatives pipeline)
- Process isolation — Kill a scraper, everything else keeps running. Crash one agent, others are unaffected.
- Dynamic scaling — Agents and scrapers are added/removed via config. The orchestrator reconciles desired vs actual state every 5 seconds.
- Monolith mode — For development,
src/gateway.tsruns everything in a single process.
Stack
| Layer | Technology |
|---|---|
| Runtime | Bun |
| AI | Claude Agent SDK (@anthropic-ai/claude-agent-sdk) via MCP bridge |
| Web Framework | Hono |
| Frontend | React SPA (TSX + CSS bundled by Bun HTML imports) |
| Database | PostgreSQL (Bun.sql tagged templates) |
| Vector Search | Qdrant |
| Time Series | QuestDB |
| Telegram | grammY |
| Baileys | |
| Embeddings | OpenRouter (text-embedding-3-small, 512 dims) |
Agent System
Agents are the core of OpenCrow. Each agent is an AI persona with its own system prompt, model, tools, and channel connections.
How agents work
- Message arrives via Telegram/WhatsApp/Web
- Router checks authorization, resolves which agent handles the chat
- Agent SDK spawns a Claude Code subprocess with the agent's system prompt
- OpenCrow tools are exposed via an in-process MCP server (no network hop)
- Agent iterates: thinking → tool use → response, auto-continuing until done
- SDK session ID is captured and resumed on next message for conversational continuity
- Observations are extracted from the conversation and indexed into memory
Agent features
- Session resume — Conversations persist across messages via SDK session IDs
- Cross-session memory — Related memories and user preferences are injected into prompts
- Auto-continuation — Agents keep working when they have pending tool use, unlimited iterations
- Sub-agent spawning — Agents can spawn specialized sub-agents for complex tasks
- Activity logging — Real-time progress shown as an editable Telegram message with tool tracking
- Hot-reload — Agent configs stored in DB (
config_overridestable), reloaded every 30 seconds - Agent templates — Predefined templates (chatbot, researcher, coder, etc.) for quick agent creation
- Tool filtering — Per-agent allowlist/denylist controls which tools are available
- Intelligent tool routing — Tools are ranked by category match, recency, success rate, and keyword relevance
Built-in sub-agents
31 specialized agents for orchestrated workflows:
| Agent | Role |
|---|---|
| architect | System design and architectural decisions |
| planner | Implementation planning with risk assessment |
| backend | Backend implementation (Bun, Hono, PostgreSQL) |
| frontend | React SPA development |
| coder | General-purpose coding |
| reviewer | Code review for quality and maintainability |
| security-reviewer | OWASP Top 10, secrets, SSRF, injection detection |
| tdd-guide | Test-driven development enforcement |
| build-error-resolver | Fix build/type errors with minimal diffs |
| debugger | Root cause analysis and bug fixing |
| devops | Infrastructure and deployment |
| data-analyst | Data analysis and visualization |
| tool-creator | Build new OpenCrow tools |
| watchdog | Autonomous health monitoring (runs via cron) |
| prompt-engineer | Prompt optimization |
| product-strategist | Product direction and feature prioritization |
| researcher | Deep research and information gathering |
| writer | Technical writing and documentation |
| api-designer | REST/GraphQL API design |
| ux-advisor | UX review and recommendations |
| performance-engineer | Performance profiling and optimization |
| monitor | System monitoring and alerting |
| digest | Content summarization and digests |
| pipeline | Data pipeline design |
| portfolio | Portfolio analysis |
| crypto-analyst | Crypto market analysis |
| ai-idea-gen | AI startup idea generation |
| crypto-idea-gen | Crypto product idea generation |
| mobile-idea-gen | Mobile app idea generation |
| oss-idea-gen | Open source project idea generation |
| opencrow | Default general-purpose agent |
Orchestration workflow
TRIVIAL task → Agent answers directly
MODERATE task → Agent states plan, executes
COMPLEX task → Agent spawns sub-agents:
planner → user approval → backend/frontend → reviewer → security-reviewer
Tools (100+)
Every tool is a ToolDefinition with name, JSON Schema, and execute function. Tools are registered per-agent based on capabilities and exposed via MCP.
File Operations
| Tool | Description |
|---|---|
bash |
Execute shell commands with safety restrictions |
read_file |
Read file contents with optional line range |
write_file |
Write/create files with parent directory creation |
edit_file |
Surgical editing by replacing specific strings |
list_files |
List directory contents with recursive traversal |
grep |
Regex-based content search with file filtering |
glob |
Find files matching glob patterns |
Code Development
| Tool | Description |
|---|---|
run_tests |
Execute test suites (bun:test, jest, vitest, pytest, cargo, go) |
validate_code |
Run typecheck, lint, and test validation |
project_context |
Auto-detect project technology stack |
git_operations |
Git ops with protected branch guards (status, diff, log, commit, push, pull, branch, stash) |
deploy |
Smart deploy with path-based restart targeting (only restarts affected processes) |
Research & Data
| Tool | Description |
|---|---|
get_hn_digest / search_hn |
HackerNews front page stories + semantic search |
get_reddit_digest / search_reddit |
Reddit posts with subreddit filtering |
get_github_repos / search_github_repos |
Trending GitHub repos with language filters |
get_product_digest / search_products |
Product Hunt products and launches |
get_timeline_digest / search_x_timeline |
X/Twitter timeline and semantic search |
get_liked_tweets / get_x_analytics |
X/Twitter liked tweets and engagement analytics |
get_appstore_rankings / get_appstore_complaints / search_appstore_reviews |
App Store rankings, low-rated reviews, and semantic search |
get_playstore_rankings / get_playstore_complaints / search_playstore_reviews |
Play Store rankings, low-rated reviews, and semantic search |
get_news_digest / search_news |
Multi-source news articles |
get_calendar |
Economic calendar events with filtering |
cross_source_search |
Search across ALL 19 indexed source types in one call |
Markets & Trading
| Tool | Description |
|---|---|
get_price / market_summary |
Real-time crypto prices and 24h summaries |
get_candles |
OHLCV candlestick data with technical indicators |
technical_analysis |
Pre-computed trend, oscillator, and volume indicators |
market_snapshot |
Comprehensive market overview in one call |
futures_overview |
Open interest, long/short ratios, funding rates |
funding_rate / funding_summary |
Funding rate history with aggregation and stats |
liquidations |
Recent liquidation events and cascade summary |
Memory & Knowledge
| Tool | Description |
|---|---|
search_memory |
Semantic search over past conversations |
search_agent_observations |
Search knowledge extracted by other agents |
cross_agent_memory |
Cross-agent memory sharing |
use_skill / list_skills |
Load skill documents into context |
Ideas & Signals
| Tool | Description |
|---|---|
save_idea / get_ideas / get_idea_stats |
Idea management and retrieval |
save_signal / get_unconsumed_signals / consume_signals |
Research signal pipeline |
get_signal_themes |
Signal categorization and themes |
get_recent_idea_titles / get_rejected_ideas_feedback |
Idea deduplication and learning |
Analytics & Monitoring
| Tool | Description |
|---|---|
db_query |
Read-only SQL SELECT queries |
get_conversation_summaries |
Conversation analysis |
get_tool_usage / get_agent_performance |
Usage and performance metrics |
get_cost_summary |
Cost breakdown by agent/tool |
get_error_summary / error_analysis |
Error rates and patterns |
get_health_dashboard |
System health overview |
get_process_logs / search_logs |
Process log inspection |
get_routing_dashboard / get_routing_stats |
Message routing analytics |
get_failure_patterns / get_anti_recommendations |
Failure pattern analysis and anti-recommendations |
get_scraper_runs / get_subagent_runs |
Execution history |
get_memory_stats |
Memory/context storage statistics |
get_agent_capacity |
Agent load balancing and queue depth |
System & Automation
| Tool | Description |
|---|---|
process_manage |
Manage orchestrated processes (restart, stop, start, list) |
self_restart |
Restart own process with cooldown protection |
manage_agent |
CRUD operations for agents |
list_agents |
List available agents for sub-agent spawning |
agent_templates |
Predefined agent templates for quick creation |
cron / trigger_cron |
Manage and trigger scheduled jobs |
send_message |
Queue messages for async Telegram/WhatsApp delivery |
spawn_agent |
Execute sub-agents with task decomposition |
ask_user |
Pause and ask user questions with optional choices |
web_fetch |
HTTP client with SSRF prevention and rate limiting |
Data Scrapers
16 autonomous scrapers run as isolated processes, each with its own tick interval and error handling. Scraped data is stored in PostgreSQL and indexed into Qdrant for semantic search.
| Scraper | Interval | What it collects |
|---|---|---|
| HackerNews | 10 min | Front page stories (title, URL, points, comments) |
| 30 min | Posts from user feeds, multi-account support with cookies | |
| GitHub | 12 hrs | Daily + weekly trending repos (stars, forks, language) |
| Product Hunt | 10 min | Daily products (votes, topics, makers), multi-account |
| News | 15-120 min | CryptoPanic, Cointelegraph, Reuters, Investing.com (articles + economic calendar) |
| X/Twitter | varies | Timeline, bookmarks, auto-like, auto-follow via Playwright + GraphQL interception |
| App Store | 60 min | Top Free/Paid rankings + reviews for top 10 apps |
| Play Store | 60 min | Top Free rankings + reviews with full descriptions via gplay |
| Markets | real-time | Crypto derivatives via Binance WebSocket (prices, liquidations, open interest, technical indicators) |
Scraper features
Browser automation — X/Twitter and News use Playwright for JavaScript-heavy sites
Anti-detection — Stealth scripts, cookie auth, GraphQL API interception for X/Twitter
Multi-account — Reddit, Product Hunt support multiple accounts with separate cookies
Rate limiting — Per-source delays (App Store: 2s between calls)
X/Twitter automation
The X/Twitter scraper is a full automation suite:
- Timeline scraping — Capture tweets from your home timeline via GraphQL interception
- Bookmark sharing — Share bookmarked tweets to configured Telegram chats
- Auto-like — Automatically like tweets matching configured criteria
- Auto-follow — Follow users based on interaction patterns
- Interaction tracking — Track likes, retweets, replies across accounts
Memory & RAG
Hybrid search engine combining vector similarity and full-text search for long-term agent memory.
Search pipeline
- Query expansion — Semantic expansion with synonyms and related terms
- Parallel search — Vector (Qdrant) + full-text (PostgreSQL) run concurrently
- Score merging — 70% vector weight + 30% full-text weight
- Temporal decay — Per-kind half-life (observations decay faster than documents)
- MMR deduplication — Maximal marginal relevance to reduce redundancy
- Channel scoping — Conversation memories stay within their channel
Memory types
Source kinds, each with its own chunk profile and temporal decay: conversations, notes, documents, tweets, articles, products, stories, Reddit posts, GitHub repos, observations, ideas, app reviews, and app rankings.
Observation extraction
After each conversation, observations (facts, preferences, patterns) are automatically extracted and indexed. These are injected into future prompts for cross-session context.
Channels
Plugin-based channel system with a unified adapter interface.
Telegram
- grammY-based with serial polling (no runner — avoids 409 conflicts)
- Per-chat message queuing via sequentialize middleware
- Activity log: editable message showing real-time tool progress
- Smart message chunking for 4096 character limit
- HTML formatting with inline buttons
- Baileys (Web WhatsApp protocol)
- QR code / pairing code authentication
- Per-number and per-group sender filtering
- Media support (images, documents)
Web Chat
- Hono API route (
POST /api/chat) - Bearer token auth via
OPENCROW_WEB_TOKEN
Router
The message router handles authorization, agent selection, and response delivery:
- Authorization — Per-channel allowed senders (userIds for Telegram, numbers for WhatsApp)
- Agent selection — Explicit
/agentcommand > persistent routing rules > default agent - Commands —
/stop(abort),/clear(reset session),/status(health),/agent [id](switch) - Concurrency — One active message per chat, prevents overlapping processing
- Input validation — Per-agent max input length enforcement
Cron Scheduler
Agents can be triggered on schedules for autonomous work.
Schedule types
at— One-time execution at a specific timestampevery— Interval-based (e.g., every 6 hours)cron— Standard cron expressions via croner
Built-in jobs
- Idea generation — Research agents save signals, ideation agents synthesize them (every 6 hours)
- Watchdog — Health monitoring: processes, errors, cron success, costs, DB, scrapers (every 30 minutes)
- Digests — Scheduled content summaries
Execution
Jobs run agents with full tool access in isolation. Progress is tracked per-run with status, duration, and result summaries stored in the database.
Web Dashboard
React SPA served via Bun HTML imports with Hono API backend. 30+ views covering every subsystem.
Views
| View | What it shows |
|---|---|
| Overview | System health, active processes, recent activity |
| Agents | Create, edit, delete agents — configure prompts, models, tools, channels |
| Chat | Web-based conversation interface |
| Cron | Job management, manual triggering, execution history |
| Usage | Tool usage stats, agent performance, cost breakdown |
| Memory | Semantic search and inspection of stored memories |
| Ideas | Idea browser with filtering and stats |
| Processes | Live process tree with restart/stop controls |
| Logs | Real-time process log viewer |
| Markets | Crypto derivatives data visualization |
| Routing Rules | Message routing configuration |
| Failures | Failure pattern analysis |
| System Metrics | System-level metrics and health |
| Sessions | Conversation session browser |
| Skills | Skill document management |
| Tools | Tool registry inspection |
| HackerNews | Scraped stories browser |
| Reddit post browser with account management | |
| GitHub | Trending repos browser |
| News | News article browser |
| App Store | App rankings and reviews |
| X/Twitter | Timeline, bookmarks, auto-like, auto-follow management |
| Product Hunt | Product browser with account management |
Auth
OPENCROW_WEB_TOKEN environment variable → Bearer token in localStorage → 401 shows login modal.
Quick Start
curl -fsSL https://opencrow.dev/install.sh | bash
opencrow setup
The setup wizard handles everything: Docker containers, database, .env, Telegram/WhatsApp, and service installation.
opencrow doctor # Check system health
opencrow update # Pull latest + reinstall + restart
opencrow status # Show running service status
opencrow start # Start in foreground (monolith mode)
opencrow version # Show version info
Manual Setup
Prerequisites
- Bun runtime
- Docker (for PostgreSQL, Qdrant, QuestDB)
- Claude Agent SDK credentials (
~/.claude/.credentials.json)
Install
bun install
cp .env.example .env
Environment variables
# Required
OPENCROW_WEB_TOKEN=... # Web dashboard auth token
TELEGRAM_BOT_TOKEN=... # Telegram bot token from BotFather
OPENROUTER_API_KEY=... # For embeddings (text-embedding-3-small)
DATABASE_URL=postgres://opencrow:[email protected]:5432/opencrow
# Optional
QDRANT_URL=http://127.0.0.1:6333 # Vector search (defaults to this)
QUESTDB_ILP_URL=tcp::addr=127.0.0.1:9009 # Time series ingestion
QUESTDB_HTTP_URL=http://127.0.0.1:9000 # Time series queries
OPENCROW_WEB_HOST=127.0.0.1 # Web UI bind address
OPENCROW_WEB_PORT=48080 # Web UI port
Start services
docker compose up -d # PostgreSQL + Qdrant + QuestDB
Run
# Development (monolith, single process)
bun run dev
# Production (distributed, process tree)
bun run start
Development
bun run dev # Watch mode (monolith)
bun run dev:web # Web UI only
bun test # Run tests
bun run typecheck # TypeScript check
bun run tw # Tailwind CSS watch
bun run tw:build # Tailwind CSS build
Deployment
systemd
bun run service:install # Install opencrow.service
bun run service:start # Start
bun run service:stop # Stop
bun run service:restart # Restart
bun run service:status # Check health
Manual deploy
git push origin master
ssh <server> "cd ~/opencrow && git pull origin master"
sudo systemctl restart opencrow
Project Structure
src/
├── agent/ # Agent SDK integration, MCP bridge, streaming, sessions
├── agents/ # Agent registry and config resolution
├── channels/ # Telegram + WhatsApp plugins, registry, manager
├── config/ # Schema (Zod), loader, env overrides
├── cron/ # Scheduler, executor, job store, delivery poller
├── daemon/ # systemd + launchd service management
├── entries/ # Process entry points (core, agent, cron, scraper, market)
├── health/ # Checkpoint, rollback notifier
├── memory/ # RAG pipeline (indexer, search, embeddings, Qdrant, chunker)
├── process/ # Orchestrator, manifest, bootstrap, supervisor
├── prompts/ # Prompt loader
├── router/ # Message routing, activity logging
├── sources/ # 16 data scrapers (each in own directory)
├── store/ # Database init + migrations
├── tools/ # 100+ tool definitions (registry, types, factories)
├── web/ # Hono routes + React SPA
│ ├── routes/ # API endpoints (/api/*)
│ └── ui/ # React components, views, styles
├── worktree/ # Git worktree management for isolated agent work
├── cli.ts # CLI entry point
├── gateway.ts # Monolith mode (all-in-one)
├── index.ts # Default entry
├── logger.ts # Pino-based structured logging
└── web-index.ts # Web-only entry point
prompts/
├── SOUL.md # Core identity and values
├── TECH.md # Technical context and conventions
├── WORKFLOW.md # Decision and execution process
├── ORCHESTRATION.md # Sub-agent coordination rules
└── agents/ # 31 specialized agent prompts
skills/ # Reusable skill documents for agents
bin/ # Guardian scripts (crash-loop detection + rollback)
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found