Skip to content

Full Setup Guide

Suitcase setup is a single dashboard page. Connect a model through Hamr, toggle the powers you want, and start chatting.

Install + guided setup

Only prerequisite: Docker Desktop, running. No Node.js — the image builds its own web UI.

bash
gh repo clone achuthanmukundan00/Suitcase   # or: git clone <url>
cd Suitcase
./scripts/setup.sh

setup.sh is guided and re-runnable: it checks Docker, auto-generates the Reactive Resume secrets, prompts you through the optional keys (Enter skips any), and starts Suitcase + self-hosted Reactive Resume. Then open http://localhost:8000/setup.

Once the repo is public, one line does everything:

bash
curl -fsSL https://raw.githubusercontent.com/achuthanmukundan00/Suitcase/main/scripts/install.sh | bash

Step 1 — Connect your model

The model is Suitcase's brain. The setup UI mirrors Hamr:

  • Login with OpenAI OAuth or Login with Claude OAuth when available.
  • Use a provider API key by selecting provider + key + model. No endpoint needed.
  • Custom OpenAI/Anthropic-compatible endpoint for LM Studio, Ollama-compatible proxies, private relays, or gateways.

OpenAI (default)

Suitcase auto-configures task-scoped models:

TaskModel
Chatgpt-4o
Fast (triage, extraction)gpt-4o-mini
Trusted (applications, reviews)gpt-4o
Vision (PDF review)gpt-4o

In provider API-key mode, select OpenAI, paste your key, choose a model, and save. No base URL is required.

OpenAI-compatible

Use the custom endpoint form for LM Studio, Ollama-compatible proxies, private relays, gateways, or any endpoint that is not handled by Hamr's provider catalog. You provide the base URL and model name. Local endpoints can leave the API key blank.

Anthropic-compatible

Use this for Anthropic's API directly or through a proxy.

Hamr provider auth

Provider API keys are saved in Hamr auth and then used by Suitcase's Hamr bridge. Custom endpoint keys are saved in Suitcase's local secret store.

Step 2 — Enable your toolkit

27 powers organized into collapsible categories. Each power card shows:

  • ON/OFF toggle — clicking ON on a power with missing binaries auto-runs apt-get install
  • Binary status — green ✓ or red ✗ for each required CLI
  • Env var status — green ✓ or red ✗ for each required token
  • Why? button — shows exact missing pieces and install guidance (only when not ready)
  • Inline input fields — for token-requiring powers (Discord, Telegram, Brave, GitHub, Restic)

Power Reference

PowerCategoryBinariesEnv Vars
curlBasecurl
jqBasejq
RipgrepBaserg
GitBasegit
GitHub CLIBaseghGITHUB_TOKEN
Brave SearchBasecurlBRAVE_API_KEY
PandocDocumentspandoc
PopplerDocumentspdftotext
Tesseract OCRDocumentstesseract
OCRmyPDFDocumentsocrmypdf
FFmpegMediaffmpeg
SoXMediasox
ImageMagickMediaconvert
PlaywrightBrowser
RcloneCloudrclone
ResticBackupsresticRESTIC_REPOSITORY, RESTIC_PASSWORD
PassSecretspass
DiscordMessagingDISCORD_BOT_TOKEN
TelegramMessagingTELEGRAM_BOT_TOKEN
GoPlacesLocationgoplaces
GeocodeLocationgeocode
Phone LocationLocationPHONE_LOCATION_WEBHOOK_SECRET
PulseAutomationSUITCASE_PULSE_INTERVAL
Command LoggerAutomation
Session MemoryAutomation
DockerRuntimedocker
HamrRuntimebun

Pulse Configuration

Below the model connection card, a Pulse Interval card lets you configure the autonomous wake-up worker:

OptionInterval
Disabled0
5 minutes300
15 minutes900
30 minutes1800
1 hour3600
4 hours14400
24 hours86400

The pulse worker checks for new leads, runs reflections, and proposes patches. It never messages you by default.

Command Logger

Enable the Command Logger power to write every tool call to suitcase_world/logs/commands.log (JSONL format, secrets redacted). Useful for auditing and debugging.

Session Memory

Enable the Session Memory power to persist each chat exchange to suitcase_world/memory/sessions/ as timestamped markdown files.

Set BRAVE_API_KEY via the inline input field or .env. The agent can then use the Brave Search API for web search:

bash
curl -s "https://api.search.brave.com/res/v1/web/search?q=QUERY" \
  -H "X-Subscription-Token: $BRAVE_API_KEY" | gunzip | jq

SKILL.md guidance enforces a 1-second rate limit between requests.

Phone Location

Set PHONE_LOCATION_WEBHOOK_SECRET to enable phone location webhooks. Use with OwnTracks, GPSLogger, or Tasker to send location updates to Suitcase.

After Setup

  1. Click Enter admin console
  2. Open Chat — Suitcase introduces itself (first-contact ritual)
  3. The agent has bash access to all enabled CLIs and reads SKILL.md files for guidance

Security Audit

Before trusting a new setup, run the security audit:

bash
./scripts/security_audit.sh             # baseline check
./scripts/security_audit.sh --deep      # deep scan for secrets
./scripts/security_audit.sh --fix       # auto-fix permissions

The audit checks network binding, channel DM policies, secret storage, file permissions, and Docker safety. Fix any critical or high findings before exposing Suitcase beyond localhost.

See Sandboxing & Security for the full security guidance.

Your private career copilot.