This repository runs a Telegram-driven Kapybara environment inside Docker. The
container mounts data/fs, so your bot
token, launcher script, and agent config all live there on the host.
- Docker and Docker Compose
- A Telegram bot token
- Create
data/fs/.envfromdata/fs/.env.exampleand set your Telegram token. Recommended:
TELEGRAM_BOT_TOKEN="your-telegram-bot-token"
# JINA_AI_KEY="optional"- Create
data/fs/start.shfromdata/fs/start.example.sh. By default, the example includes a--chat_idwatchlist with placeholder values. Replace those with real trusted chat IDs, or remove--chat_identirely to accept updates from all chats.
Warning: removing --chat_id means the bot will accept updates from every chat
it can see. Only run that mode if you intentionally want an unrestricted bot,
and prefer a trusted allowlist for normal usage.
- Create
data/fs/.kapybara/config.tomlfromdata/fs/.kapybara/config.example.tomland configure the default model used byagent_run. Recommended Google AI Studio settings:
[agent_run]
provider = "google"
model_name = "gemini-3-flash-preview"
google_api_key = "your-google-ai-studio-api-key"
# google_base_url = "https://generativelanguage.googleapis.com"If you use Logfire, add it as an optional section in config.toml:
[logfire]
token = "your-logfire-token"Run Docker Compose from the docker
directory so the compose file resolves relative paths correctly:
cd docker
export PUID="$(id -u)" PGID="$(id -g)"
docker compose up -dCheck status:
docker compose ps
docker compose logs -fStop the stack:
docker compose downIf you do want NVIDIA GPU reservation, add the override file:
cd docker
export PUID="$(id -u)" PGID="$(id -g)"
docker compose \
-f docker-compose.yaml \
-f docker-compose.gpu.yaml \
up -d- The container mounts
data/fsto/home/k. start.shis launched by Supervisor inside the container.K_CONFIG_BASEdefaults to/home/k/.kapybara.