Skip to content

Autonomous personal assistant for your free time . While you work (or sleep), Beetlebot plans your fun. πŸͺ²

License

Notifications You must be signed in to change notification settings

richardsondx/beetlebot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

25 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸͺ² Beetlebot β€” Your Autonomous Life Agent

Beetlebot logo


IT DOESN'T SUGGEST PLANS. IT HANDLES THEM.

Build Release Discord License

Quickstart Β· How it works Β· CLI Β· Docs Β· The Colony Β· Discord


Beetlebot is an open-source AI agent that autonomously plans your social life, weekend adventures, travel, and downtime. It reads your calendar, watches the weather, understands the season, knows your budget, learns your taste β€” and acts. Not a chatbot you talk at. A personal assistant that works for you.

Other tools give you text. Beetlebot gives you your time back.

The first time you wake up to a fully planned weekend you didn't have to think about β€” that's the moment. This is what AI was supposed to feel like.

Highlights

  • Autonomous by default β€” Beetlebot doesn't wait for you to ask. It monitors your calendar, checks the forecast, and acts when the moment is right. You set the goal once β€” it takes it from there.
  • Autopilots β€” goal + trigger + action. "Empty Weekend + Rain" fires Friday at noon and books an indoor plan before you even open your phone.
  • Packs β€” community-built planning skills for your city. Toronto Date Night. Rainy Day Rescue. Cottage Weekend. Install a pack or build your own.
  • Modes β€” Auto picks the best planning type by default, or switch to Explore, Date Night, Family, Social, Travel, Relax, or Focus. Different priorities, different actions, same intelligence.
  • Memory β€” learns your preferences, remembers your history, and gets better over time. Local-first β€” your data never leaves your machine.
  • Multi-channel β€” talks to you on web chat, Telegram, WhatsApp. Meets you where you already are.
  • Soft-holds β€” proactively reserves time on your calendar, then follows through. No more "I should have booked that."
  • Smart guardrails β€” you control what runs on autopilot and what needs a thumbs-up. Full audit trail on every action.

How it works

   Telegram / WhatsApp / Web Chat
                β”‚
                β–Ό
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚       Beetlebot Runtime      β”‚
  β”‚     Next.js + TypeScript     β”‚
  β”‚    http://localhost:3000     β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                 β”‚
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚            β”‚                β”‚
    β–Ό            β–Ό                β–Ό
 Autopilot    Plan            Memory
  Engine     Compiler          Layer
    β”‚            β”‚                β”‚
    β”œβ”€β”€ Triggers β”œβ”€β”€ Packs        β”œβ”€β”€ Profile
    β”œβ”€β”€ Schedulerβ”œβ”€β”€ Modes        β”œβ”€β”€ Taste
    └── Runs     └── Soft-holds   β”œβ”€β”€ Logistics
                                  └── History
                 β”‚
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚            β”‚                β”‚
    β–Ό            β–Ό                β–Ό
 Calendar     Weather        Guardrails
 (Google)    (context)      (you control)

Quickstart

Runtime: Node >= 18.

git clone https://github.com/richardsondx/beetlebot.git
cd beetlebot
npm install
cp .env.example .env   # then fill in your keys (see below)
npm run db:push         # push schema to local SQLite
npm run dev

Open http://localhost:3000.

That's it. The beetle is alive.

Environment variables

Copy .env.example to .env and configure:

# Required for local dev and self-host
DATABASE_URL="file:./dev.db"
ENCRYPTION_KEY="<generate with: openssl rand -base64 32>"

# Required β€” at least one AI provider
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
OPENROUTER_API_KEY=sk-or-...

Only needed when you want public callbacks/webhooks (OAuth, WhatsApp, Telegram webhooks):

NEXT_PUBLIC_APP_URL="https://xxxx.ngrok-free.app"
BEETLEBOT_BASE_URL="https://xxxx.ngrok-free.app"

Self-hosting (private panel + public callbacks)

Recommended model:

  • Keep Beetlebot private on the server (127.0.0.1:48653)
  • Expose only callback/webhook paths through a local edge (127.0.0.1:8787)
  • Tunnel the edge with ngrok (temporary or stable hostname)

This keeps the admin panel off the public internet while still enabling integrations like Google Calendar and WhatsApp.

For the full step-by-step setup (Caddy allowlist, ngrok config, systemd services, and verification), see:

Database

Beetlebot uses SQLite (via Prisma) β€” zero config, local-first.

npm run db:push        # Push schema to local SQLite
npm run prisma:generate # Generate Prisma client

Encryption

Sensitive integration credentials (OAuth tokens, API keys) are encrypted at rest in the database using AES-256-GCM. Generate your key once and keep it in .env:

openssl rand -base64 32
# paste the output as ENCRYPTION_KEY in .env

CLI

Beetlebot ships with a full CLI and interactive TUI.

npm run cli -- --help

Key commands

beetlebot tui                              # Interactive terminal UI
beetlebot dev                              # Dev mode
beetlebot autopilot list                   # List autopilots
beetlebot autopilot run <id>               # Run an autopilot
beetlebot pack list                        # List installed packs
beetlebot pack install <slug>              # Install a community pack
beetlebot approvals list                   # Pending approvals
beetlebot memory list --bucket taste       # Inspect memory
beetlebot integrations list                # Integration status
beetlebot integrations connect telegram    # Connect Telegram
beetlebot svc restart                      # Restart beetlebot systemd service
beetlebot svc status ngrok                 # Check ngrok systemd service status
beetlebot svc endpoint                     # Print active ngrok public URL(s)

TUI commands

Launch with beetlebot tui, then use:

Command Description
/help Show all commands
/status Session status
/model set <provider/model> Switch AI model
/autopilots List autopilots
/packs Browse packs
/runs Recent autopilot runs
/approvals Pending approvals
/memory [bucket] Inspect memory
/connect <provider> Connect integration
/new New conversation
/context show Toggle context overlay

TUI keys: Enter submit, Ctrl+K toggle context, Ctrl+L clear, Ctrl+C quit.

Core concepts

Autopilots

Tell the beetle what you care about. It figures out the when, the how, and the follow-through.

"Plan a date night when Saturday is open and weather is good"
  β†’ Goal:    Date night
  β†’ Trigger: Saturday free + clear forecast
  β†’ Action:  Generate plan, hold calendar, book restaurant
  β†’ Result:  You wake up Saturday with a plan ready to go

Trigger classes:

  • Time triggers β€” cron-backed schedules (e.g., every Friday at noon).
  • Context triggers β€” reacts to real-world changes (calendar opens up, weather shifts, budget resets).
  • Event triggers β€” lifecycle events (booking fail, RSVP, birthday windows).

Packs

Community-curated capability bundles for life planning.

{
  "slug": "cottage-weekend-pack",
  "name": "Cottage Weekend Pack",
  "city": "Muskoka",
  "modes": ["family", "relax"],
  "budgetRange": "$120-$380",
  "description": "Plans cottage weekends with weather fallback, drive buffers, and grocery stop reminders."
}

Every city deserves a local expert. Build a pack, share it with the Colony.

Memory

Beetlebot remembers everything β€” your preferences, your history, what worked and what didn't. The more you use it, the better it gets. All stored locally on your machine.

Bucket What the beetle learns
profile_memory Who you are, your relationships, hard constraints
taste_memory What you love, what you hate, your vibe
logistics_memory How far you'll drive, your timing, budget defaults
history_memory Past plans, outcomes, what landed and what flopped

You can inspect, correct, or wipe any memory at any time. Your data, your machine, your rules.

Soft-holds

The beetle proactively blocks time on your calendar when it spots an opportunity β€” then follows through with the full plan. No more "I should've booked that" moments.

Integrations

Google Calendar

Fully managed through the web UI β€” no env vars needed. Go to Settings, click Connect for Google Calendar, enter your OAuth client ID and secret, then sign in with Google. Beetlebot stores the credentials encrypted in the local database and handles token refresh automatically.

The OAuth callback URL is <your-base-url>/api/integrations/google-calendar/callback β€” register this in your Google Cloud Console.

# Or via CLI
beetlebot integrations connect google_calendar

Telegram

beetlebot integrations connect telegram --bot-token <TOKEN>
# Or in TUI: /connect telegram botToken=<TOKEN>

WhatsApp (Meta Cloud API)

beetlebot integrations connect whatsapp --access-token <TOKEN> --phone-number-id <ID>

API routes

Full REST API for building on top of Beetlebot.

Area Endpoints
Chat POST /api/chat
Autopilots GET/POST /api/autopilots, PATCH/DELETE /api/autopilots/:id, POST .../preview, POST .../run
Packs GET/POST /api/packs, POST /api/packs/install
Calendar GET /api/calendar/availability, POST/PATCH/DELETE /api/calendar/soft-holds
Memory GET /api/memory, POST /api/memory/upsert, POST /api/memory/forget
Approvals GET /api/approvals, POST /api/approvals/:id/approve|reject
Weather GET /api/weather/context
Integrations GET/POST /api/integrations/:provider/connect|disconnect|test
Scheduler GET /api/scheduler/jobs, POST /api/scheduler/reconcile
Audit GET /api/audit, GET /api/debug/traces

Stack

Layer Tech
Framework Next.js 16 (App Router)
Language TypeScript
Styling Tailwind CSS v4
Database SQLite via Prisma
AI OpenAI / Anthropic (configurable)
Tests Vitest
CLI Commander + tsx
Validation Zod

Project structure

beetlebot/
β”œβ”€β”€ app/                    # Next.js app (pages + API routes)
β”‚   β”œβ”€β”€ (app)/              # App pages (chat, autopilots, calendar, packs, settings)
β”‚   └── api/                # REST API routes
β”œβ”€β”€ components/             # React components
β”œβ”€β”€ lib/                    # Core runtime modules
β”‚   β”œβ”€β”€ chat/               # Chat engine, safety, research loop
β”‚   β”œβ”€β”€ runtime/            # Autopilot runner + scheduler
β”‚   β”œβ”€β”€ repositories/       # Data access layer
β”‚   β”œβ”€β”€ tools/              # Tool registry (weather, calendar, OpenTable)
β”‚   β”œβ”€β”€ integrations/       # Channel adapters (Telegram, WhatsApp, Google)
β”‚   └── weather/            # Weather service
β”œβ”€β”€ packages/
β”‚   β”œβ”€β”€ cli/                # CLI + TUI package
β”‚   └── travel-cli/         # Travel planning CLI (Go)
β”œβ”€β”€ prisma/                 # Database schema
β”œβ”€β”€ docs/                   # Architecture + spec docs
└── tests/                  # Test suites

Development

npm run dev          # Start dev server
npm run build        # Production build
npm run test         # Run tests
npm run lint         # Lint
npm run typecheck    # Type-check
npm run db:push      # Push Prisma schema

Docs

Deep reference docs live in docs/:

The Colony πŸͺ²πŸͺ²πŸͺ²

Beetlebot isn't a product with a waitlist. It's a movement with a repo.

The Colony is the community building the autonomous life agent they actually want to use. No corporate roadmap. No feature gates. Just people who believe AI should handle the boring parts of life so you can live the interesting parts.

How to contribute

  • Build Packs β€” create planning skills for your city. Share local knowledge globally. Every city deserves a local expert.
  • Shape the roadmap β€” the best features come from real people with real weekends. Open issues, open PRs, open conversations.
  • Fork it. Own it. β€” open source means your agent, your rules. Self-host it, extend it, make it yours. No vendor lock-in. Ever.

See CONTRIBUTING.md for guidelines.

Community channels

AI/vibe-coded PRs welcome.

Author

Built by Richardson Dackam (@richardsondx) while Beetlebot handled his weekends.

License

MIT β€” the beetle is free. Always.

About

Autonomous personal assistant for your free time . While you work (or sleep), Beetlebot plans your fun. πŸͺ²

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages