# Clawbolt

Messaging-first AI assistant for tradespeople: estimates, QuickBooks invoices and calendar from a text thread.

Mozilla.ai's self-hosted assistant that a contractor texts over Telegram, iMessage, RCS or SMS to log jobs, catalog photos, create QuickBooks Online estimates and invoices and schedule work. It runs on any LLM through any-llm. The surface an Adopter changes is the .env: provider, model, messaging channel, QuickBooks and Google credentials, heartbeat cadence.

Alternative to: Jobber, Housecall Pro

- Capabilities: adaptable
- Vertical: invoicing-finance
- Shape: agent-workflow
- Form factor: agent
- Execution model: hybrid
- Provenance: mixed (recorded, never ranked)
- Repo: https://github.com/mozilla-ai/clawbolt (Apache-2.0), 102 stars, last commit 2026-09-03
- Last activity: 2026-09-03
- Page: apps/mozilla-ai--clawbolt.html
- JSON: apps/mozilla-ai--clawbolt.json

## Use it when

- I run a trade business from my phone and want to text an assistant that raises QuickBooks estimates and books jobs
- I am an agency standing up a branded assistant for contractors and want to swap the model and channel without touching code

## Gotchas

- QuickBooks and Google Calendar integrations are marked experimental in the README
- Inbound webhooks need a public URL; the compose stack registers one through a Cloudflare Tunnel
- There is no agent-facing API or MCP: the assistant is driven by humans over messaging, so this is listed as Adaptable only

## Editions

- Free: Free, open source
  - source: https://github.com/mozilla-ai/clawbolt
  - container: cp .env.example .env && docker compose up --build

## Adaptable: make it yours

Effort: config-only (23 things to edit)

Copy .env.example, pick an LLM provider and model, wire one messaging channel (Telegram is the easy path; Linq, BlueBubbles or Twilio for iMessage/RCS/SMS), and optionally add QuickBooks Online and Google OAuth clients. Heartbeat cadence, context limits and multi-user mode are env knobs; docs/self-host/configuration.md documents every variable.

- Env vars: LLM_PROVIDER, LLM_MODEL, LLM_API_BASE, VISION_MODEL, MESSAGING_PROVIDER, TELEGRAM_BOT_TOKEN, TELEGRAM_ALLOWED_CHAT_ID, LINQ_API_TOKEN, TWILIO_ACCOUNT_SID, QUICKBOOKS_CLIENT_ID, QUICKBOOKS_CLIENT_SECRET, QUICKBOOKS_ENVIRONMENT, GOOGLE_DRIVE_CLIENT_ID, AUTH_MODE, JWT_SECRET, DATABASE_URL, HEARTBEAT_ENABLED, HEARTBEAT_DEFAULT_FREQUENCY, HEARTBEAT_MAX_DAILY_MESSAGES, APP_BASE_URL, ENCRYPTION_KEY
- Config files: .env, docker-compose.yml
- Prompt files: none
- Accounts you'll need: LLM provider account (or any-llm.ai key); Telegram bot from BotFather, or Linq / Twilio / BlueBubbles for iMessage and SMS; Intuit developer account for QuickBooks Online (optional); Google Cloud OAuth client for Drive and Calendar (optional)

## Code stack

- Languages: Python, TypeScript
- Frameworks: FastAPI, any-llm, React
- Package manager: uv/pip
- Database: PostgreSQL
- Hosting target: Docker Compose, Cloudflare Tunnel for webhooks

## Model stack

- Providers: any provider supported by any-llm (Anthropic, OpenAI, local through LLM_API_BASE)
- Models: none
- Keys you need (names only): LLM_PROVIDER, LLM_MODEL, ANY_LLM_KEY, LLM_API_BASE
- Prompts live in: none
- Tools: QuickBooks Online (experimental), Google Calendar (experimental), Google Drive, photo analysis, memory

## Skills

bundled: Clawbolt's backend agent loads SKILL.md files as its runtime integration definitions (QuickBooks, ServiceTitan, CompanyCam, calendar, AppFolio).
- Paths: backend/app/agent/skills/file/SKILL.md, backend/app/integrations/*/SKILL.md

## Evidence and confidence

- formFactor: long-running assistant with agent loop, heartbeat scheduler and messaging webhooks (configuration.md sections Agent loop, Heartbeat) (confidence 0.9)
- executionModel: fixed orchestration with tool calls, MAX_TOOL_ROUNDS, approval timeouts; model does bounded work (confidence 0.85)
- operability: backend/app/routers serve the web chat UI and admin; no documented MCP, SDK or public API for outside agents (confidence 0.7)
- effort: .env.example plus docs/self-host/configuration.md full variable reference (confidence 0.9)
- editions: Apache-2.0 source; no paid edition seen
- active: GitHub pushedAt 2026-09-03; Show HN 2026-03-03
- reach:  (confidence 0)

## Open questions

- Whether the per-user BOOTSTRAP.md under DATA_DIR is an editable system-prompt surface (would add a prompt file to the Customization surface)
- Triage scored Operable 2 on the messaging channels; this analysis treats human messaging as not an agent interface. Curator to decide.

## Sources

- https://github.com/mozilla-ai/clawbolt (sourcing:invoicing-finance:community)
- https://github.com/mozilla-ai/clawbolt/blob/main/docs/self-host/configuration.md (analysis:invoicing-finance)
