{"id":47596177,"url":"https://github.com/flutterclaw/flutterclaw","last_synced_at":"2026-04-01T18:06:13.214Z","repository":{"id":344711102,"uuid":"1181280678","full_name":"flutterclaw/flutterclaw","owner":"flutterclaw","description":"FlutterClaw - Standalone AI assistant for iOS/Android (OpenClaw port)","archived":false,"fork":false,"pushed_at":"2026-03-31T16:53:28.000Z","size":32867,"stargazers_count":13,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-03-31T18:42:08.407Z","etag":null,"topics":["agents","ai","android","automation","discord","flutter","ios","mobile","openclaw","signal","telegram","whatsapp"],"latest_commit_sha":null,"homepage":"https://flutterclaw.ai","language":"Dart","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/flutterclaw.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"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":null,"dco":null,"cla":null}},"created_at":"2026-03-14T00:16:06.000Z","updated_at":"2026-03-30T09:22:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/flutterclaw/flutterclaw","commit_stats":null,"previous_names":["flutterclaw/flutterclaw"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/flutterclaw/flutterclaw","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flutterclaw%2Fflutterclaw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flutterclaw%2Fflutterclaw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flutterclaw%2Fflutterclaw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flutterclaw%2Fflutterclaw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flutterclaw","download_url":"https://codeload.github.com/flutterclaw/flutterclaw/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flutterclaw%2Fflutterclaw/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290749,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["agents","ai","android","automation","discord","flutter","ios","mobile","openclaw","signal","telegram","whatsapp"],"created_at":"2026-04-01T18:06:09.485Z","updated_at":"2026-04-01T18:06:13.200Z","avatar_url":"https://github.com/flutterclaw.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/logo.png\" alt=\"FlutterClaw\" width=\"400\" /\u003e\n\u003c/p\u003e\n\n# FlutterClaw\n\nStandalone AI assistant for Android and iOS — the full [OpenClaw](https://github.com/openclaw/openclaw) gateway and agent runtime, running entirely on your phone. Same gateway + agent as OpenClaw, not a thin client: the full runtime, multi-channel adapters, 40+ built-in tools (plus optional MCP servers), and agent orchestration run on the device.\n\n**Highlights**\n\n- **On-device** runtime with an embedded **WebSocket gateway** on `localhost:18789` (OpenClaw-compatible protocol and config)\n- **Multi-channel** messaging (Telegram, Discord, WebChat, WhatsApp, Slack, Signal) with per-channel sessions and DM policies\n- **Sandbox**: Alpine Linux–style environment on **Android** (PRoot) and **iOS** (embedded WASM / networking stack); agents can run shell commands in the sandbox where enabled\n\n---\n\n## Disclaimer\n\nFlutterClaw is currently in **early alpha**. This release is experimental: you may run into bugs, crashes, or unexpected behavior. The project is under **continuous iteration** and changes frequently—we're improving it day by day. If you hit an issue, please report it in the [GitHub Issues](https://github.com/flutterclaw/flutterclaw/issues) section; if you have a fix or improvement, a **pull request** is even better. Thank you for trying FlutterClaw and for your patience as we shape it.\n\n---\n\n## Table of contents\n\n- [Disclaimer](#disclaimer)\n- [Documentation](#documentation)\n- [Screenshots](#screenshots)\n- [Features](#features)\n- [Roadmap](#roadmap)\n- [Requirements](#requirements)\n- [Building](#building)\n- [Quick Start](#quick-start)\n- [Configuration](#configuration)\n- [Architecture](#architecture)\n- [Supported LLM Providers](#supported-llm-providers)\n- [Tools](#tools)\n- [Security](#security)\n- [Contact](#contact)\n- [License](#license)\n\n---\n\n## Documentation\n\n| Topic | Link |\n|--------|------|\n| Configuration (`config.json`, channels, models) | [docs/configuration.md](docs/configuration.md) |\n| Tool catalog | [docs/tools.md](docs/tools.md) |\n| Release builds, versioning, publishing | [docs/release.md](docs/release.md) |\n| iOS sandbox networking | [docs/ios-sandbox-networking.md](docs/ios-sandbox-networking.md) |\n\n---\n\n## Screenshots\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/screenshot-1.png\" width=\"200\" alt=\"Screenshot 1\" /\u003e\n  \u003cimg src=\"screenshots/screenshot-2.png\" width=\"200\" alt=\"Screenshot 2\" /\u003e\n  \u003cimg src=\"screenshots/screenshot-3.png\" width=\"200\" alt=\"Screenshot 3\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/screenshot-4.png\" width=\"200\" alt=\"Screenshot 4\" /\u003e\n  \u003cimg src=\"screenshots/screenshot-5.png\" width=\"200\" alt=\"Screenshot 5\" /\u003e\n  \u003cimg src=\"screenshots/screenshot-6.png\" width=\"200\" alt=\"Screenshot 6\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/screenshot-7.png\" width=\"200\" alt=\"Screenshot 7\" /\u003e\n  \u003cimg src=\"screenshots/screenshot-8.png\" width=\"200\" alt=\"Screenshot 8\" /\u003e\n  \u003cimg src=\"screenshots/screenshot-9.png\" width=\"200\" alt=\"Screenshot 9\" /\u003e\n\u003c/p\u003e\n\n---\n\n## Features\n\n### Core\n\n- **Standalone gateway + agent** running 24/7 in the background (Android foreground service, iOS background modes)\n- **100% API-compatible** with OpenClaw WebSocket protocol and config format\n- **Multi-provider LLM support**: OpenAI, Anthropic, AWS Bedrock, Groq, DeepSeek, Gemini, Zhipu, OpenRouter, Volcengine, Ollama, Qwen\n- **OpenRouter free models**: featured free models (MiMo-V2-Omni, MiMo-V2-Pro) with custom model ID support\n- **Streaming responses** with real-time UI updates (SSE for Anthropic, chunked for OpenAI-compatible)\n- **Embedded WebSocket server** on localhost for external tool/CLI access\n- **MCP**: connect MCP servers; tools are exposed dynamically to the agent (`mcp_*` naming)\n- **Secure storage** for API keys via platform keychain\n- **Guided onboarding** flow (provider setup, channels, permissions)\n- **18+ languages** supported via generated localizations\n\n### Multi-Agent System\n\n- **Create, switch, and delete agents** with isolated workspaces\n- **Agent profiles** with custom name, emoji, model, personality/vibe, and system prompt\n- **Subagent orchestration**: spawn child agents, yield turns, steer/kill running subagents\n- **Cross-session messaging**: send messages to any session and read transcripts\n- **ClawHub skills**: explore and install skills from ClawHub from within the app\n\n### Multimodal\n\n- **Vision**: send images from camera or gallery to vision-capable models\n- **Documents**: send PDF and TXT files to the chat for model context\n- **Voice (in-app chat)**: on-device speech recognition from the mic button (OS speech APIs on iOS/Android); final text is sent as a normal user message\n- **Voice (channels)**: when incoming voice messages are transcribed (optional Whisper/API-backed path in the channel router), replies can be synthesized to audio for supported channels\n\n### Channels\n\n- **Telegram** bot adapter (HTTP long polling)\n- **Discord** bot adapter (WebSocket gateway with session resume, rate limiting, reconnection)\n- **WebChat** built-in adapter (in-app UI)\n- **WhatsApp** adapter (linked device / auth directory workflow)\n- **Slack** Socket Mode adapter (bot + app tokens)\n- **Signal** adapter (via `signal-cli-rest-api`–style HTTP proxy)\n- **DM policies** per channel: open, disabled, allowlist, or pairing code\n- **Slash commands** across channel adapters\n\n### Device Integration\n\n**Mobile device tools** — agents can use native device capabilities via dedicated tools:\n\n- **Location (GPS)**: current coordinates with configurable accuracy (low/medium/high), altitude, speed, timestamp\n- **Health API**: HealthKit (iOS) / Health Connect (Android) — steps, heart rate, active calories, sleep (in bed / asleep), blood oxygen, weight; query by date range\n- **Camera**: take photos (base64 for vision models) and record video\n- **Contacts**: search device address book\n- **Calendar**: list and create events\n- **Clipboard**: read and write system clipboard\n- **Notifications**: local push notifications, scheduled reminders\n- **Media playback**: background audio with lock-screen controls\n- **Device status**: battery level, charging state, connectivity\n- **Share**: system share sheet to send content to other apps\n- **UI automation**: Android AccessibilityService (tap, swipe, type, find elements, screenshot, global actions); iOS screenshots\n- **iOS Shortcuts**: trigger Shortcuts app workflows via deep links; list installed shortcuts\n- **iOS Live Activities**: dynamic lock-screen status display\n\n### Scheduling\n\n- **Heartbeat**: periodic task execution from HEARTBEAT.md\n- **Cron**: 5-field cron expressions, interval-based, and one-shot scheduled tasks\n\n---\n\n## Roadmap\n\n- **More AI models**: broader LLM provider and model compatibility\n- **UI automation (Android)**: expanded and improved on-device automation (AccessibilityService)\n- **Sandbox and tools**: deeper Linux sandbox workflows and more tools built around it\n- **Audio**: richer voice-note flows, transcription options, and TTS coverage across surfaces\n\n---\n\n## Requirements\n\n- **Flutter**: current stable channel, compatible with **Dart SDK `^3.11.0`** as declared in [`pubspec.yaml`](pubspec.yaml) ([install Flutter](https://docs.flutter.dev/get-started/install))\n- **Dart**: `^3.11.0` (bundled with a matching Flutter SDK)\n- **Android**: **API 26+** (Android 8.0+); **JDK 17** for Gradle; Android Studio or command-line SDK\n- **iOS**: **iOS 15.0+** deployment target; **Xcode 15+** and CocoaPods; macOS required to build for iOS\n- **Tools**: `flutter doctor` should report no critical errors\n\nCheck your environment:\n\n```bash\nflutter doctor -v\n```\n\n---\n\n## Building\n\n### Contributor setup (Firebase)\n\nThe app links **Firebase** (e.g. Analytics). For local builds, copy [`.env.example`](.env.example) to `.env` and set the placeholder values. Do not commit `.env` or platform plist/json secrets. See [Security](#security).\n\n### Development (run on device or emulator)\n\n1. Clone the repository:\n\n   ```bash\n   git clone https://github.com/flutterclaw/flutterclaw.git\n   cd flutterclaw\n   ```\n\n2. Install dependencies:\n\n   ```bash\n   flutter pub get\n   ```\n\n3. Run the app:\n\n   ```bash\n   flutter run\n   ```\n\n   With a device connected or emulator running, Flutter will pick the target. To choose a specific one: `flutter run -d \u003cdevice_id\u003e` (list with `flutter devices`).\n\n### Release builds (scripted)\n\nFor maintained release artifacts (Android APK + AAB, iOS IPA), optional version bump, and prerequisites (PRoot for Android sandbox, signing), use:\n\n```bash\n./scripts/build-release.sh              # both platforms\n./scripts/build-release.sh android      # Android only\n./scripts/build-release.sh ios          # iOS only\n./scripts/build-release.sh --bump       # bump build number then build\n```\n\nSee [docs/release.md](docs/release.md) for versioning, changelogs, and publishing notes.\n\n### Release build (Flutter CLI only)\n\n**Android (APK):**\n\n```bash\nflutter build apk --release\n```\n\nThe APK is at `build/app/outputs/flutter-apk/app-release.apk`.\n\n**Android (App Bundle for Play Store):**\n\n```bash\nflutter build appbundle --release\n```\n\nOutput at `build/app/outputs/bundle/release/app-release.aab`.\n\n**iOS:**\n\nRequires macOS and Xcode. Open the project in Xcode or build from the command line:\n\n```bash\nflutter build ios --release\n```\n\nThen open `ios/Runner.xcworkspace` in Xcode to sign and upload to the App Store or install on device.\n\n### Verify before building\n\n```bash\nflutter pub get\nflutter analyze\nflutter test\n```\n\n---\n\n## Quick Start\n\n1. Install Flutter (stable, Dart `^3.11.0`–compatible) and verify with `flutter doctor -v`\n2. Clone the repo and `cd` into the folder\n3. Copy `.env.example` to `.env` if you need Firebase-backed local builds\n4. Run `flutter pub get` then `flutter run`\n\n---\n\n## Configuration\n\nConfiguration is stored in `{app_documents}/flutterclaw/config.json`. It defines agent defaults, the model list (LLM providers and API keys), and channel settings (Telegram, Discord, WebChat, WhatsApp, Slack, Signal, etc.).\n\n**[Configuration reference →](docs/configuration.md)**\n\n---\n\n## Architecture\n\n```\nFlutterClaw App\n├── Flutter UI (Chat, Settings, Agents, Channels, Sessions, Onboarding)\n├── Embedded Gateway (WebSocket server on localhost:18789)\n├── Agent Runtime (tool execution loop with streaming)\n│   ├── Provider Router (OpenAI-compatible + Anthropic + Bedrock with failover)\n│   ├── Tool Registry (40+ built-in tools; MCP-proxied tools when connected)\n│   └── Subagent Registry (in-process child agent orchestration)\n├── Channel Adapters\n│   ├── Telegram (HTTP long polling)\n│   ├── Discord (WebSocket gateway)\n│   ├── WebChat (in-app)\n│   ├── WhatsApp (linked auth)\n│   ├── Slack (Socket Mode)\n│   └── Signal (REST proxy)\n├── Sandbox (Alpine-style userland: PRoot on Android, WASM stack on iOS)\n├── Services\n│   ├── Background Service (Android foreground / iOS background)\n│   ├── Heartbeat Runner (periodic HEARTBEAT.md tasks)\n│   ├── Cron Service (scheduled task execution)\n│   ├── Notification Service (local push + reminders)\n│   ├── Audio Player Service (background playback + lock-screen)\n│   ├── UI Automation Service (native Accessibility bridge)\n│   ├── Live Activity Service (iOS dynamic island / lock screen)\n│   ├── Pairing Service (channel device authorization)\n│   ├── Deep Link Service (Shortcuts integration)\n│   └── Security Service (encrypted keychain storage)\n└── Localization (18+ languages)\n```\n\nHigh-level flow:\n\n```mermaid\nflowchart TB\n  subgraph ui [Flutter_UI]\n    Chat[Chat_and_Settings]\n  end\n  subgraph core [Agent_Core]\n    Loop[AgentLoop]\n    Tools[ToolRegistry]\n    Providers[ProviderRouter]\n  end\n  subgraph channels [Channel_Adapters]\n    TG[Telegram]\n    DC[Discord]\n    WA[WhatsApp]\n    SL[Slack]\n    SG[Signal]\n    WC[WebChat]\n  end\n  Chat --\u003e Loop\n  Loop --\u003e Tools\n  Loop --\u003e Providers\n  Loop --\u003e channels\n```\n\n---\n\n## Supported LLM Providers\n\n| Vendor | Protocol | Default API Base |\n|--------|----------|-----------------|\n| OpenAI | OpenAI Chat Completions | https://api.openai.com/v1 |\n| Anthropic | Anthropic Messages API | https://api.anthropic.com |\n| AWS Bedrock | Bedrock Runtime (SigV4 or configured auth) | `https://bedrock-runtime.{region}.amazonaws.com` |\n| Groq | OpenAI-compatible | https://api.groq.com/openai/v1 |\n| DeepSeek | OpenAI-compatible | https://api.deepseek.com/v1 |\n| Gemini | OpenAI-compatible | https://generativelanguage.googleapis.com/v1beta |\n| Zhipu | OpenAI-compatible | https://open.bigmodel.cn/api/paas/v4 |\n| OpenRouter | OpenAI-compatible | https://openrouter.ai/api/v1 |\n| Volcengine | OpenAI-compatible | https://ark.cn-beijing.volces.com/api/v3 |\n| Ollama | OpenAI-compatible | http://localhost:11434/v1 |\n| Qwen | OpenAI-compatible | https://dashscope.aliyuncs.com/compatible-mode/v1 |\n\nOpenRouter models are supported via the OpenRouter provider. Select featured free models (e.g. MiMo-V2-Omni, MiMo-V2-Pro) from the catalog or enter any model ID manually.\n\n---\n\n## Tools\n\nAgents have access to **40+ built-in tools** across categories: file system, web, memory, agent management, sessions and subagents, messaging, device (status, notifications, clipboard, share), camera and media, contacts, calendar, location, health, UI automation and shortcuts, sandbox shell, skills, MCP management, and scheduling. **MCP** servers add more tools at runtime (dynamic registration).\n\n**[Full tools reference →](docs/tools.md)**\n\n---\n\n## Security\n\nThis repository contains **no secrets, API keys, or credentials**. It is safe to make the repo public. All sensitive data (LLM API keys, ClawHub token, Telegram/Discord/Slack tokens, web search API keys, etc.) are entered by the user in the app and stored only on the device: API keys and the ClawHub token use the platform keychain (Flutter Secure Storage); channel and tool settings are stored in the app’s config directory (outside the repo).\n\nDo not commit `.env` files, `google-services.json`, `GoogleService-Info.plist`, or keystores—they are already listed in `.gitignore`. For local development, use `.env` from `.env.example` only on your machine. If you use CI (e.g. GitHub Actions), use the platform’s secrets (e.g. GitHub Secrets) and pass them as environment variables; do not put keys in the repository.\n\n---\n\n## Contact\n\n[contact@flutterclaw.ai](mailto:contact@flutterclaw.ai)\n\n---\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflutterclaw%2Fflutterclaw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflutterclaw%2Fflutterclaw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflutterclaw%2Fflutterclaw/lists"}