Sidekick is a unified assistant monorepo combining CLI, TUI, and WebUI in one installable package. This repo replaces the historical split between separate agent and webui repositories.
irm https://raw.githubusercontent.com/Loggableim/sidekick-agent/master/install.ps1 | iexAfter install:
sidekick doctor # Health check (works without API key)
sidekick dashboard # Open WebUI at http://127.0.0.1:9119Key facts:
- ⚠ Windows installer requires Administrator (UAC) by default — installs under
%LOCALAPPDATA%\sidekick\ - 🏠 Desktop shortcut —
Sidekick.lnkstarts the dashboard - 🌐 WebUI opens automatically in your default browser
- 🔄 Update by running the same command again (idempotent)
- 🔑 No API key required to start — configure via
sidekick setup - 📖 Troubleshooting — common install issues
- 💼 Portable mode available for no-admin installs (see below)
Ports:
- Windows launcher/installer uses port 9119
- CLI default is 8787 — use
--port 9119to match the launcher:sidekick dashboard --port 9119 # Same port used by Windows launcher sidekick dashboard # Uses CLI default (8787)
- Override with
SIDEKICK_WEBUI_PORTenv var or--portflag
If you cannot get admin rights or prefer not to elevate, use Portable mode:
# 1. Download the installer script
Invoke-WebRequest -UseBasicParsing `
https://raw.githubusercontent.com/Loggableim/sidekick-agent/master/install.ps1 `
-OutFile install.ps1
# 2. Run in Portable mode (no UAC prompt)
.\install.ps1 -Mode Portable -Surface Browser -NoPrompt -SkipOptionalToolsPortable mode skips: UAC elevation, hosts alias, machine-wide env vars, optional toolchain installers. For full details see docs/troubleshooting.md.
# Re-run the installer (idempotent — updates to latest version)
irm https://raw.githubusercontent.com/Loggableim/sidekick-agent/master/install.ps1 | iex
# Or if already downloaded:
.\install.ps1 -UpdateOnly# Remove Sidekick (keeps ~/.sidekick config)
.\uninstall.ps1
# Remove everything including user data
.\uninstall.ps1 -RemoveUserDatagit clone https://github.com/Loggableim/sidekick-agent.git
cd sidekick-agent
python -m pip install -e .
sidekick --help
sidekick doctorsidekick # Interactive REPL
sidekick --tui # Terminal UI mode
sidekick dashboard # WebUI at http://127.0.0.1:9119hermes --help # Same binary as sidekick| View | Screenshot |
|---|---|
| Dashboard — chat interface with session list and action buttons | ![]() |
| Session — active conversation with message history | ![]() |
| Appstore — browse and install tools/apps | ![]() |
| Settings — theme, skin, TTS, language preferences | ![]() |
| Agents — manage agent profiles and configurations | ![]() |
| Skills — browse installed and available skills | ![]() |
| Memory — memory provider status and configuration | ![]() |
| Insights — usage analytics and session statistics | ![]() |
| Kanban — multi-agent collaboration board | ![]() |
| CLI Doctor — full console output | doctor-output.txt |
┌─────────────────────────────────────────────────────────┐
│ 🩺 Sidekick Doctor │
└─────────────────────────────────────────────────────────┘
◆ Python Environment ✓ Python 3.12.10
◆ Required Packages ✓ OpenAI SDK ✓ Rich ✓ PyYAML
◆ Configuration Files ✓ .env ✓ config.yaml
◆ Auth Providers ✓ OpenAI Codex ⚠ Nous Portal
Known working: /health (200), session CRUD, workspace browsing,
streaming chat, static asset serving, SSE heartbeats (5s interval), TUI import.
sidekick --tui starts the prompt_toolkit-based terminal interface.
Import-verified via smoke test (19/19 green). Interactive testing requires
a terminal with curses support.
sidekick/
├── cli/ Command-line interface (REPL, TUI, auth, config, setup)
├── runtime/ Agent runtime (providers, memory, cron, gateway, compat)
├── web/ WebUI server (48 API modules + 113 static assets)
├── shared/ Config, paths, sessions, logging, utility functions
├── tools/ ~100 tool implementations (registry, file ops, browser...)
├── docs/ Releases, roadmaps, audits, troubleshooting
├── tests/ Smoke tests and HTTP smoke checks
├── sidekick_app/ Package entrypoint with legacy-import bootstrap
└── sidekick_cli/ Legacy package forwarder (transition layer)
| Command | Description |
|---|---|
sidekick |
Interactive chat with the agent |
sidekick doctor |
System health check |
sidekick doctor -p |
Doctor + provider connectivity check |
sidekick dashboard |
Start the WebUI (http://127.0.0.1:9119) |
sidekick setup |
Interactive setup wizard |
sidekick --tui |
Terminal UI (TUI) mode |
sidekick status |
Show component status |
sidekick model |
Select default model/provider |
sidekick login |
Authenticate with an inference provider |
sidekick cron |
Cron job management |
sidekick gateway |
Messaging gateway management |
sidekick --help |
Full command reference (38+ subcommands) |
| Surface | Status |
|---|---|
| CLI | ✅ sidekick --help, sidekick, sidekick doctor (exit codes 0/1/2) |
| TUI | ✅ sidekick --tui (prompt_toolkit + curses, import verified) |
| WebUI | ✅ sidekick dashboard, /health, session CRUD, SSE streaming |
| Runtime | ✅ AIAgent (15K LOC), 76 registered tools, provider integrations |
| Cron | ✅ Scheduler + job management |
| Gateway | ✅ Messaging platform runner (0 import warnings) |
| Smoke | ✅ full smoke suite plus WebUI HTTP smoke, all green |
| CI | ✅ Linux full + macOS/Windows smoke, Python 3.12-3.14 on Linux |
Config lives under ~/.sidekick/ (or $SIDEKICK_HOME / $HERMES_HOME):
~/.sidekick/config.yaml— Settings~/.sidekick/.env— API keys~/.sidekick/skills/— Installed skills~/.sidekick/state/webui/sessions/— Session files (JSON)~/.sidekick/logs/— Log files (agent.log, errors.log, gateway.log)
Home directory resolution:
$SIDEKICK_HOME→~/.sidekick/(canonical)$HERMES_HOME→~/.hermes/(legacy fallback)- Default →
~/.sidekick/
Reference docs:
docs/architecture.md- repo and runtime architecturedocs/config-reference.md- config tree and env-var summarydocs/consolidation.md- current consolidation state and legacy naming
All entry points work without any API key configured:
| Command | Without API key | With API key |
|---|---|---|
sidekick --help |
✅ Full help | ✅ Full help |
sidekick --version |
✅ Version info | ✅ Version info |
sidekick doctor |
✅ Shows what's missing | ✅ Full diagnostics |
sidekick doctor -p |
⚠ Skips provider checks | ✅ Connectivity test |
sidekick dashboard |
✅ Server starts, UI loads | ✅ + chat works |
sidekick |
⚠ Shows setup instructions | ✅ Interactive chat |
HERMES_HOME, HERMES_STATE_DIR, HERMES_WEBUI_HOST, HERMES_WEBUI_PORT,
HERMES_OPTIONAL_SKILLS, HERMES_LANGUAGE, HERMES_ACCEPT_HOOKS,
HERMES_YOLO_MODE, HERMES_QUIET
# Minimal (CLI only)
python -m pip install -e .
# With WebUI extras
python -m pip install -e ".[web]"
# Everything (recommended for development)
python -m pip install -e ".[all]"See docs/known-issues.md for the full list.
Key items:
- Gateway warnings (2 non-blocking,
print_config_warnings/warn_deprecated_cwd_env_vars) - Session layer:
shared.sessionsandweb.api.models.Sessionstill use different data models, but round-tripping now preserves WebUI-only metadata - CLI help text still references
HERMES_*env vars (legacy compat — intentional) - Windows CI active (Linux full + macOS/Windows smoke)
| Version | Tag | Focus |
|---|---|---|
| v0.1.0-monorepo | v0.1.0-monorepo |
First monorepo baseline, all code merged |
| v0.2.0 | v0.2.0 |
Rebrand: CLI help, localStorage, audit |
| v0.3.0 | v0.3.0 |
Session contract, gateway warnings, CI smoke |
| v0.4.0 | v0.4.0 |
Error handling, doctor exit codes, troubleshooting |
| v0.5.0 | v0.5.0 |
Doctor --check-providers, macOS CI, streaming stability |
| v0.8.2 | v0.8.2 |
Windows installer portable mode finalization |
| v0.8.4 | v0.8.4 |
WebUI first-run onboarding fix: FastAPI routes, path detection, frontend field name |
| v0.8.5 | v0.8.5 |
WebUI API proxy: auto-start stdlib backend, proxy all missing /api/* routes |
See docs/troubleshooting.md for:
- Installation / Fresh Clone
- Missing API keys
- Provider/Credentials
- WebUI doesn't start
- Sessions/State paths
- Legacy
HERMES_*aliases - Migration from
~/.hermesto~/.sidekick - Logs and diagnostics
- Smoke tests








