{"id":48542939,"url":"https://github.com/adriannoes/shellclaw","last_synced_at":"2026-04-08T05:30:37.817Z","repository":{"id":342732810,"uuid":"1174136012","full_name":"adriannoes/shellclaw","owner":"adriannoes","description":"The first physical AI agent that participates in a global agentic marketplace, using asap protocol.","archived":false,"fork":false,"pushed_at":"2026-04-02T21:12:27.000Z","size":2770,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-03T07:55:54.263Z","etag":null,"topics":["ai-agents","c","iot","raspberry-pi"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":false,"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/adriannoes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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-06T05:26:42.000Z","updated_at":"2026-04-02T21:12:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/adriannoes/shellclaw","commit_stats":null,"previous_names":["adriannoes/shellclaw"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/adriannoes/shellclaw","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adriannoes%2Fshellclaw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adriannoes%2Fshellclaw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adriannoes%2Fshellclaw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adriannoes%2Fshellclaw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adriannoes","download_url":"https://codeload.github.com/adriannoes/shellclaw/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adriannoes%2Fshellclaw/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31542381,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"online","status_checked_at":"2026-04-08T02:00:06.127Z","response_time":54,"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-agents","c","iot","raspberry-pi"],"created_at":"2026-04-08T05:30:37.146Z","updated_at":"2026-04-08T05:30:37.793Z","avatar_url":"https://github.com/adriannoes.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ShellClaw\n\n**The first physical AI agent that participates in a global agent ecosystem.**\n\nA lightweight AI assistant written in C, designed to run on a Raspberry Pi Zero 2 W and communicate with other agents through the [agentic marketplace](https://asap-protocol.vercel.app/), using [ASAP Protocol](https://github.com/adriannoes/asap-protocol).\n\n**Roadmap (high level):**\n\n| Phase | Version | Status | Focus |\n|-------|---------|--------|-------|\n| 1: Foundation | v0.1.0 | ✅ Done | Core agent loop, CLI + Telegram, Anthropic/OpenAI, shell/search/file tools, SQLite memory \u0026 sessions, skill loading |\n| 2: Gateway | v0.2.0 | ✅ Done | HTTP server, embedded Web UI, WebSocket chat, cron scheduler, pairing auth, ASAP manifest, skill hot-reload |\n| 3: Protocol | v0.3.0 | — | ASAP client/server, registry, `asap_invoke` tool, process sandbox (namespaces + cgroups), Tavily search |\n| 4: Autonomy | v0.4.0 | — | Local inference (llama.cpp), provider fallback, Discord channel, systemd service, OTA updates |\n| 5: Hardware \u0026 Release | v1.0.0 | — | GPIO, I2C sensors, camera, Ed25519 signing, ASAP marketplace registration, security audit, full docs |\n\n## What makes ShellClaw different\n\nShellClaw is **not another OpenClaw clone** in a different language. It is a **hardware-native agent** that interacts with the physical world (GPIO, I2C sensors, camera) while collaborating with cloud-based agents through a standardized protocol.\n\n| Feature | ShellClaw |\n|---|---|\n| **Binary** | \u003c 2 MB |\n| **RAM** | \u003c 5 MB |\n| **Startup** | \u003c 1 second |\n| **Language** | C (~5,000 lines) |\n| **Hardware** | GPIO, I2C, SPI, Camera |\n| **Sandbox** | Native Linux namespaces |\n| **Web UI** | Embedded in binary |\n| **Offline** | llama.cpp fallback |\n| **Agent network** | ASAP Protocol |\n\n## Build and run\n\n**Build:** `make shellclaw` → binary at `build/shellclaw`. `make test` → builds and runs all tests in `build/`.\n\n**Run:** `./build/shellclaw`\n\n**Quality checks:**\n- `make static` — cppcheck on `src/` (requires cppcheck)\n- `make coverage` — coverage report; fails if core \u003c 80% (requires lcov)\n- CI enforces release binary \u003c 2 MB\n\n**Debug (macOS):** Symbols in `tests-dSYM/`. Use `lldb build/test_agent` then `settings set target.debug-file-search-path tests-dSYM`. Old `.dSYM` in repo root? Run `make clean-root-dsym`.\n\n## Thread Safety\n\nShellClaw uses a **single-threaded model**: all subsystems (memory, providers, channels, tools) keep state in `static` globals, initialized once at startup. Do not call `agent_run`, provider `chat`, or memory functions from multiple threads. If threaded operation is needed in the future, each subsystem's globals must be wrapped in a context struct or protected with mutexes.\n\n## Architecture\n\n```\nChannels (Telegram, Discord, WebChat)\n         │\n         ▼\n   ┌──────────────┐     ┌──────────────┐\n   │  Agent Loop  │────►│  LLM APIs    │\n   │  (ReAct)     │     │  (Claude,    │\n   │              │◄────│   OpenAI,    │\n   │              │     │   local)     │\n   └──────┬───────┘     └──────────────┘\n          │\n   ┌──────▼───────┐     ┌──────────────┐\n   │  Tools       │────►│  Hardware    │\n   │  (shell,     │     │  (GPIO, I2C, │\n   │   search,    │     │   camera)    │\n   │   cron,      │     └──────────────┘\n   │   file,      │\n   │   asap)      │     ┌──────────────┐\n   │              │────►│  ASAP Agent  │\n   └──────────────┘     │  Ecosystem   │\n                        └──────────────┘\n```\n\n## License\n\n[MIT](LICENSE) — permissive, simple and aligned with the ASAP ecosystem and similar agents. Use, modify and distribute freely; keep the copyright notice.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadriannoes%2Fshellclaw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadriannoes%2Fshellclaw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadriannoes%2Fshellclaw/lists"}