Quickstart
Get Suitcase running in Docker, then configure from the setup dashboard.
Prerequisites
- Docker with Docker Compose V2
- Node.js 18+ — only needed for the first frontend build
- An LLM endpoint — defaults to OpenAI; any OpenAI-compatible endpoint works
1. Install (one command)
curl -fsSL https://raw.githubusercontent.com/achuthanmukundan00/Suitcase/main/scripts/install.sh | bashThis clones the repo, builds the frontend, creates .env, and starts Docker.
Flags:
./scripts/install.sh --fullincludes all powers../scripts/install.sh --dir ~/my-suitcasefor a custom directory.
Or install manually
git clone https://github.com/achuthanmukundan00/Suitcase.git
cd Suitcase
cp .env.example .envEdit .env and set your LLM. The file is organized in three tiers:
# ═══ REQUIRED — Chat won't work without these ═══
LLM_PROVIDER=openai # openai | openai-compatible | anthropic-compatible
LLM_BASE_URL=https://api.openai.com/v1
LLM_MODEL=gpt-4o
LLM_API_KEY=sk-your-key-here # ← set this
# ═══ RECOMMENDED — Better experience ═══
GITHUB_TOKEN= # for repo evidence
BRAVE_API_KEY= # for web search
# ═══ OPTIONAL — Everything else is commented out ═══OpenAI mode
When LLM_PROVIDER=openai, Suitcase auto-configures task-scoped models: gpt-4o for chat/trusted/vision and gpt-4o-mini for fast triage tasks. Switch to openai-compatible to use any provider with one model for everything.
2. Start (one command)
./start.shThis handles:
- Frontend build (
npm install && npm run build) — one time - Docker compose up with health checks
- Dependency checks (Docker, npm)
- Prints the URLs and next steps
Flags
./start.sh --skip-build skips the frontend build../start.sh --stop stops everything../start.sh --logs tails container logs.
3. Setup dashboard
Open http://localhost:8000/setup.
Two numbered steps:
Step 1 — Connect your LLM. Pick OpenAI (default, with auto-configured task models), OpenAI-compatible, or Anthropic-compatible. Enter your API key and click Save and verify.
Step 2 — Enable your toolkit. Toggle powers ON/OFF. Powers with missing binaries auto-install via apt-get. Powers requiring tokens (Discord, Telegram, Brave, GitHub) have inline input fields.
Powers are organized into collapsible categories:
| Category | Powers |
|---|---|
| Base | curl, jq, ripgrep, git, GitHub CLI, Brave Search |
| Documents | pandoc, poppler, tesseract, OCRmyPDF |
| Media | ffmpeg, sox, ImageMagick |
| Browser | Playwright |
| Cloud | rclone |
| Backups | restic |
| Secrets | pass |
| Messaging | Discord, Telegram |
| Location | GoPlaces, Geocode, Phone Location |
| Automation | Pulse, Command Logger, Session Memory |
| Runtime | Docker, Synax |
Once your LLM is connected, click Enter admin console to start chatting.
4. First chat (birth)
After entering the admin console:
- Open Chat from the navigation
- Suitcase introduces itself — this is the first-contact ritual
- The agent has bash access to all enabled CLIs and reads SKILL.md files for guidance
5. Configuring secrets from the UI
Powers that require tokens (Discord, Telegram, Brave, GitHub, Restic) show inline password fields in the setup dashboard. Type the value and click Save — it's stored server-side and never returned to the browser.
For custom env vars not in the UI, use .env or the Admin console's danger zone.
Managing Suitcase
./start.sh --stop # stop
./start.sh --logs # tail logs
docker compose down -v # stop + delete all data (destructive)Self-Updating
Suitcase can check for and apply its own updates. The agent's self_update tool detects new versions from inside a conversation.
./scripts/update.sh # git pull → rebuild → restart
./scripts/update.sh --check # check for updates only
./scripts/update.sh --full # include runtime-full profileWhen the agent finds an update, it says "I'll be right back" — you run the command, and Suitcase restarts with the new version. Your data is safe in Docker volumes.
Next Steps
- Full Setup Guide — detailed walkthrough for each provider and power
- LLM Providers — OpenAI, Anthropic, LM Studio, Ollama
- Architecture — how Suitcase works under the hood
- Configuration — all environment variables and settings