{"id":48641555,"url":"https://github.com/oxicrab/oxicrab","last_synced_at":"2026-04-27T05:00:49.983Z","repository":{"id":349914205,"uuid":"1152410416","full_name":"oxicrab/oxicrab","owner":"oxicrab","description":"Multi-channel AI agent, built in Rust.","archived":false,"fork":false,"pushed_at":"2026-04-25T23:53:25.000Z","size":7935,"stargazers_count":2,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-26T00:24:12.923Z","etag":null,"topics":["ai","ai-agents","ai-assistant","bot","chatbot","open-source","openclaw","rust"],"latest_commit_sha":null,"homepage":"https://oxicrab.dev/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oxicrab.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-07T20:46:40.000Z","updated_at":"2026-04-25T23:53:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"7d859979-1f40-4bed-a588-4111acd662a6","html_url":"https://github.com/oxicrab/oxicrab","commit_stats":null,"previous_names":["oxicrab/oxicrab"],"tags_count":42,"template":false,"template_full_name":null,"purl":"pkg:github/oxicrab/oxicrab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxicrab%2Foxicrab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxicrab%2Foxicrab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxicrab%2Foxicrab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxicrab%2Foxicrab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oxicrab","download_url":"https://codeload.github.com/oxicrab/oxicrab/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxicrab%2Foxicrab/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32323215,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-agents","ai-assistant","bot","chatbot","open-source","openclaw","rust"],"created_at":"2026-04-09T21:19:02.025Z","updated_at":"2026-04-27T05:00:49.975Z","avatar_url":"https://github.com/oxicrab.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/oxicrab.png\" alt=\"oxicrab\" width=\"200\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eOxicrab\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003eA high-performance Rust multi-channel AI assistant framework.\u003c/p\u003e\n\n**[Documentation](https://oxicrab.github.io/oxicrab/)** | [Config](https://oxicrab.github.io/oxicrab/config.html) | [Channel Setup](https://oxicrab.github.io/oxicrab/channels.html) | [Tool Reference](https://oxicrab.github.io/oxicrab/tools.html) | [CLI Reference](https://oxicrab.github.io/oxicrab/cli.html) | [Deployment](https://oxicrab.github.io/oxicrab/deploy.html)\n\n[![Coverage Status](https://coveralls.io/repos/github/oxicrab/oxicrab/badge.svg?branch=main)](https://coveralls.io/github/oxicrab/oxicrab?branch=main)\n\n## Motives\n\nThis is largely a personal toy with features I want or care about. For example, I only included channels that matter to me. The inspiration was playing with OpenClaw and deciding that Rust made more sense as a platform for this. I was also curious how easy it would be to harden the bot. So the normal caveats apply ... no warranties, no guarantees, etc. \n\n## Features\n\n- **Multi-channel**: Telegram, Discord (slash commands, embeds, buttons), Slack (Block Kit buttons, reaction lifecycle), WhatsApp, Twilio SMS/MMS — opt-in progressive streaming on Telegram/Discord/Slack via `stream = true`\n- **LLM providers**: Anthropic (Claude), OpenAI, Google (Gemini), plus 9 OpenAI-compatible providers (OpenRouter, DeepSeek, Groq, Ollama, MiniMax, etc.), with OAuth and local model fallback\n- **Model routing**: Per-task provider/model assignment with N-way fallback chains and complexity-aware per-message routing\n- **Prompt caching**: Automatic Anthropic `cache_control` injection for up to 90% input token cost reduction\n- **30 built-in tools**: Filesystem, shell, web, HTTP, browser, image generation, Google Workspace, GitHub, scheduling, memory, media, RSS reader, interactive buttons, structured collections, and more\n- **MCP support**: Connect external tool servers via the Model Context Protocol\n- **Subagents**: Background task execution with concurrency limiting and context injection\n- **Cron scheduling**: Recurring jobs, one-shot timers (absolute or relative delay), cron expressions, echo mode, multi-channel targeting\n- **Memory system**: SQLite-backed memory with FTS5 full-text search, optional hybrid vector+keyword search (local ONNX embeddings), configurable fusion strategy (weighted score or reciprocal rank fusion), automatic fact extraction, and quality gates\n- **Group chat isolation**: Personal memory automatically excluded from group chat contexts\n- **Session management**: Persistent sessions with automatic compaction and context summarization\n- **Voice transcription**: Local whisper.cpp with cloud API fallback\n- **Token logging**: Raw LLM token usage tracking per model in SQLite\n- **HTTP gateway**: REST API (`POST /api/chat`, `GET /api/health`) and named webhook receivers with HMAC-SHA256 validation, template formatting, and multi-channel delivery\n- **Gateway authentication**: Bearer token auth on API endpoints with constant-time comparison\n- **A2A protocol**: Agent-to-Agent interoperability via `/.well-known/agent.json` discovery and task endpoints\n- **Echo gateway mode**: Start all channels without an LLM provider for connectivity testing\n- **Rate limiting**: Per-IP token bucket on gateway endpoints\n- **Context providers**: Dynamic system prompt injection from external commands with caching and TTL\n- **Tool output stash**: In-memory LRU cache for recovering large tool outputs after truncation\n- **JSON mode**: Per-request structured output (JSON object and JSON schema) across all providers\n- **PDF/document support**: Native PDF document support in Anthropic, OpenAI, and Gemini providers\n- **Parallel tool execution**: Concurrency-classified wave execution (ReadOnly concurrent, SideEffect sequential, Exclusive alone)\n- **Auto-continue**: Automatic re-prompting when the agent stops mid-task after 3+ tool calls (up to 2 retries)\n- **Message queuing**: Per-session queuing (max 10) for messages arriving during an active agent run, coalesced on completion\n- **Pre-flight token estimation**: Trims oldest messages before LLM calls when estimated tokens exceed 80% of compaction threshold\n- **Slack thread tracking**: Bot remembers threads it participated in (24h TTL), responds without @mention in tracked threads\n- **Security**: Default-deny allowlists, DM pairing, bidirectional leak detection (inbound + outbound), DNS rebinding defense, kernel-level sandbox (Landlock/Seatbelt), shell AST analysis, prompt injection detection, capability-based filesystem confinement, skill file security scanning, interactive operator approval for mutating actions, config validation (minimum secret lengths, reserved header blocking), tool name shadowing prevention, atomic cron claiming\n\n## Installation\n\n### Pre-built binaries\n\nDownload from [GitHub Releases](https://github.com/oxicrab/oxicrab/releases/latest):\n\n| Platform | Archive |\n|----------|---------|\n| Linux x86_64 | `oxicrab-*-linux-x86_64.tar.gz` |\n| Linux ARM64 | `oxicrab-*-linux-arm64.tar.gz` |\n| macOS ARM64 | `oxicrab-*-macos-arm64.tar.gz` |\n| Debian/Ubuntu | `oxicrab_*_amd64.deb` / `oxicrab_*_arm64.deb` |\n| Fedora/RHEL | `oxicrab-*.x86_64.rpm` / `oxicrab-*.aarch64.rpm` |\n| macOS DMG | `oxicrab-*-arm64.dmg` |\n\n### Docker\n\n```bash\ndocker pull ghcr.io/oxicrab/oxicrab:latest\ndocker run -v ~/.oxicrab:/home/oxicrab/.oxicrab ghcr.io/oxicrab/oxicrab\n```\n\n### From source\n\n```bash\ncargo install --git https://github.com/oxicrab/oxicrab\n```\n\nRequires Rust stable (1.85+) and `cmake`.\n\n### Verifying downloads\n\nAll release artifacts are signed with [Sigstore cosign](https://docs.sigstore.dev/). Each artifact has a corresponding `.bundle` file containing the signature, certificate, and Rekor transparency log entry.\n\n```bash\n# Verify a binary archive\ncosign verify-blob \\\n  --bundle oxicrab-0.16.1-linux-x86_64.tar.gz.bundle \\\n  --certificate-identity-regexp \"https://github.com/oxicrab/oxicrab/.github/workflows/release.yml@refs/tags/v.*\" \\\n  --certificate-oidc-issuer \"https://token.actions.githubusercontent.com\" \\\n  oxicrab-0.16.1-linux-x86_64.tar.gz\n\n# Verify the Docker image\ncosign verify \\\n  --certificate-identity-regexp \"https://github.com/oxicrab/oxicrab/.github/workflows/release.yml@refs/tags/v.*\" \\\n  --certificate-oidc-issuer \"https://token.actions.githubusercontent.com\" \\\n  ghcr.io/oxicrab/oxicrab:latest\n```\n\n## Building\n\nEach channel is a Cargo feature flag for slim builds:\n\n```bash\n# Full build (all channels)\ncargo build --release\n\n# Slim build — only Telegram and Slack\ncargo build --release --no-default-features --features channel-telegram,channel-slack\n\n# No channels (agent CLI only)\ncargo build --release --no-default-features\n```\n\nFeatures: `channel-telegram`, `channel-discord`, `channel-slack`, `channel-whatsapp`, `channel-twilio`, `keyring-store`, `local-whisper`, `embeddings`, `tool-rss` (all default-on).\n\n## Quick Start\n\n```bash\n# First-time setup\noxicrab onboard\n\n# Start oxicrab\noxicrab gateway\n\n# Then message it in Slack / Telegram / Discord / WhatsApp\n# e.g. \"@oxicrab summarize my inbox\"\n```\n\nOther useful commands: `oxicrab doctor` (check config and dependencies), `oxicrab completion` (generate shell completions for bash/zsh/fish).\n\n\u003e **Full CLI reference:** [oxicrab.github.io/oxicrab/cli.html](https://oxicrab.github.io/oxicrab/cli.html)\n\n## Configuration\n\nConfiguration lives at `~/.oxicrab/config.toml`. Optional overlays are loaded from `~/.oxicrab/config.local.toml` and `~/.oxicrab/config.d/*.toml` in lexical order. Run `oxicrab onboard` for a complete starting config, or see the [full config reference](https://oxicrab.github.io/oxicrab/config.html).\n\nMinimal example:\n\n```toml\n[agents.defaults.modelRouting]\ndefault = \"claude-sonnet-4-5-20250929\"\n\n[providers.anthropic]\napiKey = \"sk-ant-...\"\n\n[channels.telegram]\nenabled = true\ntoken = \"your-bot-token\"\nallowFrom = [\"your-user-id\"]\n```\n\n### Credential Management\n\nResolution order: env vars (`OXICRAB_*`) \u003e credential helper (1Password, Bitwarden) \u003e OS keyring \u003e config.toml.\n\n```bash\noxicrab credentials set anthropic-api-key\noxicrab credentials list\noxicrab credentials import   # bulk-import credentials from config.toml to keyring\n```\n\n\u003e **Full credential reference:** [oxicrab.github.io/oxicrab/config.html#credentials](https://oxicrab.github.io/oxicrab/config.html#credentials)\n\n## Channels\n\n\u003e **Step-by-step setup guides:** [oxicrab.github.io/oxicrab/channels.html](https://oxicrab.github.io/oxicrab/channels.html)\n\n| Channel | What you need |\n|---------|--------------|\n| **Telegram** | Bot token from [@BotFather](https://t.me/botfather) + user ID |\n| **Discord** | Bot token + Message Content Intent + server invite |\n| **Slack** | Bot token (`xoxb-`) + Socket Mode app token (`xapp-`) |\n| **WhatsApp** | Just enable — scan QR code on first run |\n| **Twilio** | Account SID + Auth Token + phone number + webhook URL |\n\nAccess control: `allowFrom` (pre-authorized senders), `dmPolicy` (`\"allowlist\"`, `\"pairing\"`, or `\"open\"`). Empty `allowFrom` = deny all.\n\n## Tools\n\n\u003e **Full tool reference:** [oxicrab.github.io/oxicrab/tools.html](https://oxicrab.github.io/oxicrab/tools.html)\n\n34 built-in tools with timeout protection, panic isolation, result caching, and truncation middleware.\n\n**Core**: `read_file`, `write_file`, `edit_file`, `list_dir`, `exec`, `tmux`, `web_search`, `web_fetch`, `web_fetch_summary` — fetch a URL and return a small-model summary with 15-min cache, `http`, `spawn`, `subagent_control`, `cron`, `finish_cron` — explicit completion signal for scheduled jobs, `memory_search`, `claim` — structured assertions with confidence, status, evidence + contradiction lint, `query_activity` — search the activity journal by NL time expression, `reddit`, `rss` — RSS/Atom feed reader with adaptive learning (LinTS + LLM triage), `workspace`, `stash_retrieve`, `tool_search` — discover deferred/MCP tools by keyword, `add_buttons` — interactive buttons (Slack/Discord), `collections` — structured data with typed schemas and per-collection CRUD tools\n\n**Configurable**: `google_mail`, `google_calendar`, `google_tasks`, `github`, `weather`, `todoist`, `media`, `obsidian`, `browser`, `image_gen`\n\n**MCP**: Connect external tool servers via [Model Context Protocol](https://modelcontextprotocol.io/). See [MCP reference](https://oxicrab.github.io/oxicrab/tools.html#mcp).\n\n## Workspace\n\n```\n~/.oxicrab/\n├── config.toml              # Main configuration\n├── workspace/\n│   ├── AGENTS.md            # Bot identity and behavioral rules\n│   ├── USER.md              # User preferences\n│   ├── TOOLS.md             # Tool usage guide\n│   ├── memory/\n│   │   └── memory.sqlite3   # Memory database (FTS5, cron, pairing, tokens, logs)\n│   └── skills/              # Custom skills ({skill-name}.md per skill)\n├── models/                  # Whisper model files\n└── media/                   # Downloaded media files (auto-cleaned)\n```\n\n## Architecture\n\nSee [ARCHITECTURE.md](ARCHITECTURE.md) for detailed implementation documentation.\n\n```\nChannel → MessageBus → AgentLoop (LLM ↔ tools) → MessageBus → Channel\n```\n\n## Development\n\nRequires **Rust stable** and `cmake`. Voice transcription also requires `ffmpeg`.\n\n```bash\ncargo test --lib                    # unit tests\ncargo fmt -- --check                # formatting\ncargo clippy --all-targets --all-features -- -D warnings   # linting\n```\n\nSee [CLAUDE.md](CLAUDE.md) for development conventions.\n\n## Contributors\n\nThanks to these contributors:\n\n- [@denmat](https://github.com/denmat)\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxicrab%2Foxicrab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foxicrab%2Foxicrab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxicrab%2Foxicrab/lists"}