Quickstart
Go from zero to your first bot reply in about 15 minutes with Telegram and the Docker sandbox.
This guide gets a working bot replying to you in about 15 minutes. It uses Telegram because it needs only one token. You need Node.js 24.15 or later and Docker (Podman and nerdctl also work; see OCI sandbox). At the end, links point to the other platforms and to running mikan under PM2.
Prerequisites
Section titled “Prerequisites”- Node.js
>=24.15.0 - An Anthropic API key (or a key for another supported provider)
- A Telegram account
-
Install mikan:
Terminal window npm i -g @geminixiang/mikan -
Run the interactive setup:
Terminal window mikan onboardPicking Slack, mikan can create the Slack app for you from a Slack configuration token; see Slack Bot minimal setup guide. Three questions — chat adapter (with its tokens), LLM provider (with its API key), and sandbox image — produce
~/.mikan/settings.json,~/.mikan/mikan.env(0600), and~/.mikan/ecosystem.config.cjs. Pick the recommended image. A custom OpenAI-compatible endpoint (vLLM, a proxy) also writes~/.mikan/models.json. Non-interactive stdin writes the settings template only. See Configuration for every field.Keys can equally come from plain environment variables (
<PROVIDER>_API_KEY, e.g.ANTHROPIC_API_KEY); the env file is just a persistent home for them that the pm2 template loads.Onboarding does not write any office policy: visibility follows the platform conversation type. Telegram private chats are private offices, and the Docker sandbox keeps each office’s files to itself.
-
Create a Telegram bot. Message @BotFather, send
/newbot, follow the prompts, and copy the token it returns:Terminal window export TELEGRAM_BOT_TOKEN="123456:ABC-..." -
Start mikan in the foreground; it pulls the sandbox image on start:
Terminal window mikan --sandbox=ociThe image is about 900 MB, so the first start takes a few minutes. The working directory defaults to
~/.mikan/workspaceand is created automatically; pass a path after the flags to use a different one.Inside that workspace, each conversation gets its own office: a directory holding that conversation’s memory, attachments, session logs, skills, and working area. Office directories are named by office key (
v1-telegram-…) rather than by the raw chat id, somikan office listis the way to see which office belongs to which conversation.If startup fails, run
mikan env: it prints every variable mikan reads, grouped by platform and feature, with the current status of each. A missing platform token makes mikan exit with a message naming the variables to set;mikan --helplists all flags. -
Open a private chat with your bot on Telegram and send it a message. Private messages trigger the agent directly, so it should reply within a few seconds.
Where to go next
Section titled “Where to go next”- Slack, Discord, or GitHub instead of Telegram — each platform needs its own credentials; see the Slack minimal setup guide, Discord adapter, and GitHub adapter.
- Isolation for real use — pull the prebuilt sandbox image and start with
--sandbox=oci:...; see OCI sandbox. - Credentials for the agent’s tools —
/loginin a DM opens a vault portal for API keys and OAuth; see Vault. - Run it as a service — PM2 setup, upgrades, and health checks are covered in Deployment.
- All settings and commands — Configuration and Chat commands.
