Some checks failed
Update token count / update-tokens (push) Has been cancelled
- Interactive setup wizard: deps check, env config, WhatsApp auth, daemon install, health check - CLI entry point via yargs with bin registration (regolith onboard) - Flags: --install-daemon, --non-interactive, --pairing-code, --json, --skip-* - launchd (macOS) and systemd (Linux) service installation - Refactored whatsapp-auth.ts to export authenticate() for programmatic use - 72 tests across 6 test files - Updated README.md and CLAUDE.md with onboard CLI docs
3.1 KiB
3.1 KiB
Regolith
Personal AI assistant with multi-channel support (WhatsApp + Discord) and multi-runtime backends (Claude Agent SDK + OpenCode). See README.md for setup.
Quick Context
Single Node.js process that connects to WhatsApp and/or Discord, routes messages to Claude Agent SDK (in containers) or OpenCode runtime. Each group has isolated filesystem and memory.
Key Files
| File | Purpose |
|---|---|
src/cli/index.ts |
CLI entry point (regolith onboard) |
src/cli/wizard-runner.ts |
Onboard wizard step orchestrator |
src/cli/steps/*.ts |
Individual wizard steps (deps, env, whatsapp, daemon, health) |
src/cli/display.ts |
Progress indicators and summary output |
src/cli/types.ts |
Wizard types (WizardFlags, StepResult, WizardContext) |
src/index.ts |
Orchestrator: multi-channel setup, state, message loop, agent invocation |
src/channels/whatsapp.ts |
WhatsApp connection, auth, send/receive |
src/channels/discord.ts |
Discord bot connection, mention handling, attachments, reply context |
src/channels/chunk-text.ts |
Message chunking (2000-char Discord limit) |
src/router.ts |
Message formatting, outbound routing, findChannel |
src/config.ts |
Trigger pattern, paths, intervals, Discord/OpenCode config |
src/opencode/runtime.ts |
OpenCode AI backend (CLI + SDK modes) |
src/opencode/session-store.ts |
SQLite session persistence for OpenCode |
src/opencode/live-sessions.ts |
In-memory session manager with idle cleanup |
src/opencode/types.ts |
OpenCode type definitions |
src/container-runner.ts |
Spawns agent containers with mounts |
src/task-scheduler.ts |
Runs scheduled tasks |
src/db.ts |
SQLite operations |
groups/{name}/CLAUDE.md |
Per-group memory (isolated) |
Configuration
| Variable | Default | Purpose |
|---|---|---|
ASSISTANT_NAME |
Andy | Trigger word for the bot |
DISCORD_BOT_TOKEN |
(empty) | Discord bot token; set to enable Discord |
DISCORD_ONLY |
false | Skip WhatsApp when true |
AGENT_BACKEND |
container | Agent backend: "container" or "opencode" |
OPENCODE_MODE |
cli | OpenCode mode: "cli" or "sdk" |
OPENCODE_MODEL |
(unset) | Model name for OpenCode |
OPENCODE_TIMEOUT |
120 | Timeout in seconds |
OPENCODE_SESSION_TTL_HOURS |
24 | Session TTL in hours |
Onboard CLI
regolith onboard # Interactive setup wizard
regolith onboard --install-daemon # Include daemon installation
regolith onboard --non-interactive # Use defaults, no prompts
regolith onboard --json # Output JSON summary
regolith onboard --skip-deps --skip-whatsapp # Skip specific steps
Skills
| Skill | When to Use |
|---|---|
/setup |
First-time installation, authentication, service configuration |
/customize |
Adding channels, integrations, changing behavior |
/debug |
Container issues, logs, troubleshooting |
Development
npm run dev # Run with hot reload
npm run build # Compile TypeScript
npm test # Run tests
npm run typecheck # Type check without emitting
regolith onboard # Run the setup wizard