Skip to content

adriannoes/shellclaw

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

138 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ShellClaw

The first physical AI agent in a global agent ecosystem β€” and the only one that scales from a $15 Raspberry Pi to a $249 NVIDIA Jetson with the same C-native binary.

A lightweight AI assistant written in C that runs on NVIDIA Jetson Orin Nano Super (8 GB, 67 TOPS, CUDA-accelerated local LLM) for the edge-AI maker / researcher persona, and on Raspberry Pi Zero 2 W (~$15, smallest viable Linux SBC) for the hobbyist persona β€” from a single aarch64 binary with runtime board detection. It communicates with other agents through the agentic marketplace, using ASAP Protocol.

Two personas, one binary (see DR-015, DR-016):

Persona Hardware Headline capability
Edge-AI maker / researcher Jetson Orin Nano Super 8 GB Dev Kit Local Llama-3.1-8B Q4 @ 14–18 tok/s or Phi-3-mini Q4 @ 25–35 tok/s via CUDA; GPIO/I2C/CSI camera; NVMe boot
Hobbyist / IoT tinkerer Raspberry Pi Zero 2 W < 5 MB RAM, < 500 KB binary on the cheapest viable Linux SBC; GPIO/I2C/CSI camera; cloud LLM primary with TinyLlama emergency fallback

Roadmap (high level):

Phase Version Status Focus
1: Foundation v0.1.0 βœ… Done Core agent loop, CLI + Telegram, Anthropic/OpenAI, shell/search/file tools, SQLite memory & sessions, skill loading
2: Gateway v0.2.0 βœ… Done HTTP server, embedded Web UI, WebSocket chat, cron scheduler, pairing auth, ASAP manifest, skill hot-reload
3: Protocol v0.3.0 βœ… Done ASAP client/server, registry, asap_invoke tool, process sandbox (namespaces + cgroups), Tavily search, /asap + /api/asap/log, rate limits
4: Autonomy v0.4.0 βœ… Done Local inference (llama.cpp), provider fallback, Discord channel, systemd service, OTA updates, context tool, dashboard
5: Edge AI Hardware & Release v1.0.0 β€” Jetson Orin Nano Super primary target: GPIO/I2C/camera, CUDA-accelerated local LLM, Ed25519 signing, ASAP marketplace registration, security audit, full docs
6: Hobbyist Portability v1.1.0 β€” Raspberry Pi Zero 2 W validation: same binary, RPi-specific install + benchmarks + docs, optional pre-built SD image

What makes ShellClaw different

ShellClaw is not another OpenClaw clone in a different language. It is a hardware-native, dual-persona agent: it interacts with the physical world (GPIO, I2C sensors, camera) on both ends of the SBC spectrum, runs production-grade local LLMs on edge-AI hardware (CUDA on Jetson), and collaborates with cloud agents through a standardized protocol β€” all from a single C source tree and a single aarch64 binary.

Feature ShellClaw
Binary < 500 KB base, < 600 KB with hardware backends
Agent RAM < 5 MB idle, < 15 MB active (on both boards)
Startup < 1 s on Jetson, < 2 s on RPi Zero 2 W
Language C (~5,500 lines target after Phase 5)
Hardware GPIO, I2C, CSI/USB Camera (single abstraction, per-board backends)
Sandbox Native Linux namespaces + cgroups v2
Web UI Embedded in binary
Local inference CUDA llama-server on Jetson (14–35 tok/s); CPU llama-server on RPi (emergency)
Agent network ASAP Protocol (first non-Python + first edge-AI ASAP agent)
Hardware range Same binary runs on a $15 RPi Zero 2 W and a $249 Jetson Orin Nano Super

Build and run

Build: make shellclaw β†’ binary at build/shellclaw. make test β†’ builds and runs all tests in build/.

Run: ./build/shellclaw

Quality checks:

  • make static β€” cppcheck on src/ (requires cppcheck)
  • make coverage β€” coverage report; fails if core < 80% (requires lcov)
  • CI enforces release binary < 2 MB; optional asap-compliance when the Python package is available
  • Before opening a PR: run CI=true make clean && CI=true make test (matches Linux CI with -Werror), or on a machine with the same apt deps as .github/workflows/ci.yml: chmod +x scripts/ci-local.sh && ./scripts/ci-local.sh

Phase 3 configuration (optional): registry and revocation URLs, Tavily API key name, and sandbox-related keys are documented in .env.example. Install libwebsockets (pkg-config must find it) to build the gateway and run GATEWAY=1 make test_gateway_http.

Phase 5 (v1.0.0, planned): edge-AI release on Jetson Orin Nano Super β€” hardware tools (GPIO/I2C/camera), CUDA-accelerated local inference, Ed25519 manifest signing, ASAP marketplace registration, security audit, full documentation.

Phase 6 (v1.1.0, planned): Raspberry Pi Zero 2 W portability β€” same binary validated and benchmarked on the $15 hobbyist board, with RPi-specific install script and side-by-side docs.

WebSocket auth (breaking vs early gateway builds): browsers cannot send Authorization on WebSocket; use subprotocol bearer.<pairing-token> when opening /ws (see web/js/app.js).

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.

Thread Safety

The main agent loop is single-threaded: memory, providers, channels and tools keep much of their state in process-wide data initialized at startup. Inbound HTTP/WebSocket paths (for example ASAP POST /asap and the WebSocket chat dispatcher) may run on libwebsockets worker threads.

Those code paths must call agent_lock() before agent_run() and agent_unlock() afterward so only one agent_run uses shared session/memory state at a time. Do not call agent_run, provider chat, or memory functions from arbitrary new threads without the same discipline.

Architecture

Channels (Telegram, Discord, WebChat)
         β”‚
         β–Ό
   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   β”‚  Agent Loop  │────►│  LLM APIs                   β”‚
   β”‚  (ReAct)     β”‚     β”‚  Claude Β· OpenAI Β· local    β”‚
   β”‚              │◄────│  (local = llama-server      β”‚
   β”‚              β”‚     β”‚   CUDA on Jetson /          β”‚
   β”‚              β”‚     β”‚   CPU on RPi)               β”‚
   β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚
   β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   β”‚  Tools       │────►│  Hardware                   β”‚
   β”‚  (shell,     β”‚     β”‚  GPIO Β· I2C Β· CSI/USB cam   β”‚
   β”‚   search,    β”‚     β”‚  (libgpiod + per-board      β”‚
   β”‚   cron,      β”‚     β”‚   backends, runtime         β”‚
   β”‚   file,      β”‚     β”‚   board detection)          β”‚
   β”‚   asap)      β”‚     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
   β”‚              β”‚
   β”‚              β”‚     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   β”‚              │────►│  ASAP Agent Ecosystem       β”‚
   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚  (marketplace + peers)      β”‚
                        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

One source tree, one aarch64 binary, two hardware personas. The agent reads /proc/device-tree/compatible at startup and selects the right hardware backends (Jetson tegra234-gpio / nvarguscamerasrc vs RPi bcm2835-gpio / libcamera-still). The architecture above is identical on both boards; only the leaf backends and the local LLM throughput differ.

License

MIT β€” permissive, simple and aligned with the ASAP ecosystem and similar agents. Use, modify and distribute freely; keep the copyright notice.

About

🦞 The first physical AI agent that participates in a global agentic marketplace, using asap protocol.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Contributors