No description
  • TypeScript 71%
  • Python 17.6%
  • JavaScript 6.2%
  • Go 4.1%
  • Shell 0.7%
  • Other 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-16 11:22:50 -07:00
cli Allow routine packages and route scoped bare confirmations across cloud and CLI 2026-10-14 11:11:43 -07:00
config Add per-user userspace Tailscale enrollment and SSH computer setup 2026-10-06 14:21:01 -07:00
deploy Keep beta-verified Bing and Mojeek search engines 2026-10-15 09:15:25 -07:00
docs Add isolated optional xAI Grok Voice transport with offline lifecycle coverage 2026-10-16 11:22:50 -07:00
src Add isolated optional xAI Grok Voice transport with offline lifecycle coverage 2026-10-16 11:22:50 -07:00
test Add isolated optional xAI Grok Voice transport with offline lifecycle coverage 2026-10-16 11:22:50 -07:00
voice Add isolated optional xAI Grok Voice transport with offline lifecycle coverage 2026-10-16 11:22:50 -07:00
.dockerignore Replace named volumes with fail-closed per-user quota bind mounts 2026-10-06 14:27:21 -07:00
.env.advanced.example Add isolated optional xAI Grok Voice transport with offline lifecycle coverage 2026-10-16 11:22:50 -07:00
.env.example Apply Builder-only model metadata and token ceilings 2026-10-15 06:07:27 -07:00
.gitignore Restore shared Kama defaults and retain idle owner containers 2026-10-14 10:15:32 -07:00
.npmrc Add opt-in isolated Builder generation provider 2026-10-15 06:02:48 -07:00
compose.sqlite.yaml Verify SQLite fault isolation and split essential from optional advanced config 2026-10-14 01:46:05 -07:00
compose.whatsapp.yaml Add default-off core-only WhatsApp secret volume and admin deployment gates 2026-10-07 08:43:09 -07:00
compose.yaml Add optional private DuckDuckGo SearXNG search for every provider 2026-10-15 09:09:06 -07:00
Dockerfile Add opt-in isolated Builder generation provider 2026-10-15 06:02:48 -07:00
identity.json Restore shared Kama defaults and retain idle owner containers 2026-10-14 10:15:32 -07:00
package-lock.json Pin Builder SDK build from PR 3 source 6a9fde6 2026-10-15 08:36:06 -07:00
package.json Pin Builder SDK build from PR 3 source 6a9fde6 2026-10-15 08:36:06 -07:00
persona.md Restore shared Kama defaults and retain idle owner containers 2026-10-14 10:15:32 -07:00
README.md Add isolated optional xAI Grok Voice transport with offline lifecycle coverage 2026-10-16 11:22:50 -07:00
tsconfig.json Set up TypeScript project 2026-10-06 13:54:58 -07:00
update.sh Add opt-in core-only updater with immutable rollback and isolated fixtures 2026-10-14 00:19:35 -07:00

Kamakura

A self-hosted AI cat for Telegram, with optional WhatsApp and Discord owner DMs.

Features

  • Conversation history, facts and reminders.
  • Images, voice notes and bounded video inspection with separately configured providers.
  • Optional Discord DM voice with GPT Live or xAI Grok Voice 3.0, configured separately. See voice setup.
  • Private Linux boxes and an optional paired computer-use CLI.
  • Mongo storage by default, or SQLite without Mongo.

Prerequisites

Git and Docker Compose 2.24.4 or newer, a Telegram bot token, and independent main-model and embedding-provider credentials. Docker builds the runtime dependencies.

Use Docker Engine on Linux, OrbStack on macOS, or Docker Desktop with WSL2 on Windows. Follow the platform storage setup before starting; on WSL, keep the checkout in the Linux filesystem.

Quick start

git clone https://github.com/koboshcom/kamakura.git
cd kamakura
cp .env.example .env
# Add credentials and owner IDs; prepare storage using the setup guide.
docker compose --profile build build sandbox-image egress-image
docker compose config --quiet
docker compose up -d --build

Forgejo mirror.

Configuration

Channel access in .env: tokens for enabled channels and their owner IDs or allowlists. Main model in .env: model, base URL and API key. Embeddings in .env: independent model, base URL and API key. Storage and timezone in .env: STORAGE and DEFAULT_TIMEZONE.

For optional tuning, copy the root .env.advanced.example to .env.advanced. Tuning has sensible defaults; optional features may require their own credentials. See CONFIGURATION.md for all settings and precedence.

Mongo is the default. For SQLite, set STORAGE=sqlite in .env, then run

docker compose -f compose.yaml -f compose.sqlite.yaml up -d --build

This runs without Mongo. SQLite starts empty; existing data is not migrated.

Updates

Server updates for standard Linux Compose installs use ./update.sh. Update the stopped CLI connector with kamakura-cli update. Auto-updates stay off.

Wait for the chosen commit's CI to publish its GHCR image and CLI release before updating; a pushed commit alone does not mean either artifact is available. See update and rollback details.

Documentation

Optional Bing and Mojeek search works with every LLM provider. See search setup.