Skip to content
/

Sidecar

sidecar-marcus · marcus/sidecar · ★ 1.0k · last commit 2026-04-18

Primitive shape 17 total
Skills 17
00

Summary

Sidecar — Summary

Sidecar is a Go-based TUI (terminal user interface) application that runs alongside any coding agent in a split terminal pane, providing a unified development dashboard: git status with diff viewer, conversation history from 10+ agent CLIs (Claude Code, Codex, Gemini CLI, Cursor, Kiro, OpenCode, Amp Code, Pi Agent, Warp, Copilot CLI), a TD-based task monitor, file browser with syntax highlighting, and workspace management with worktree switching. The user runs the coding agent on the left and Sidecar on the right — as the agent works, Sidecar shows real-time file changes, task progress, and session history. Install via brew install marcus/tap/sidecar or a curl script; single Go binary, no runtime dependencies. With 1,018 stars and 18 contributors, Sidecar is the only terminal TUI "companion panel" in this batch. Compared to the seeds, Sidecar is closest to agent-os in its zero-prompt-injection philosophy (it reads files and displays state but does not modify agent behavior), but uniquely provides a unified conversation history view across all agent CLIs.

01

Overview

Sidecar — Overview

Origin

Personal project by marcus (Marcus Aurelius — GitHub username). 18 contributors. 1,018 stars. Go. MIT license. Last commit 2026-04-18. Companion to td (task management CLI for AI agents).

Philosophy

"You might never open your editor again."

"Split your terminal horizontally: run your coding agent (Claude Code, Cursor, etc.) on the left and sidecar on the right."

"This setup gives you visibility into what the agent is doing without interrupting your workflow. The entire dev loop—planning, monitoring, reviewing, committing—happens in the terminal while agents write the code."

Privacy

"Sidecar runs locally and makes no telemetry, analytics, or tracking requests. The only network calls are GitHub API version checks on startup (cached for 3 hours) and user-initiated changelog fetches."

TD Integration

Sidecar is tightly coupled with td — a task management system designed for AI agents working across context windows. TD helps agents track work, log progress, and maintain context across sessions. Sidecar's TD Monitor plugin shows the current focused task, activity log, and allows quick review submission.

Agent-Native Development

From AGENTS.md:

"Mandatory: use td usage --new-session to see open work and view tasks / epics." "Mandatory if the human does not provide an existing task for the work you've been asked to start, create a task or tasks with td first and use td to track progress."

02

Architecture

Sidecar — Architecture

Distribution

  • Homebrew: brew install marcus/tap/sidecar (builds from source, avoids Gatekeeper)
  • curl installer: curl -fsSL https://raw.githubusercontent.com/marcus/sidecar/main/scripts/setup.sh | bash
  • GitHub Releases (binary downloads)
  • Manual: go build ./...

Platform

  • macOS, Linux, WSL
  • Go binary — single executable, no runtime dependencies

Stack

  • Go 1.25.5
  • charmbracelet/bubbletea — TUI framework
  • charmbracelet/bubbles — UI components
  • charmbracelet/lipgloss — styling
  • charmbracelet/glamour — markdown rendering
  • SQLite (modernc.org/sqlite, mattn/go-sqlite3)
  • fsnotify — file system watching
  • github.com/marcus/td — task management integration

Directory Structure

cmd/sidecar/     — CLI entry point
internal/
  app/           — Application core, plugin registry
  config/        — ~/.config/sidecar/config.json
  features/      — TUI features
  keymap/        — Keyboard shortcut definitions
  markdown/      — Markdown rendering
  modal/         — Modal dialogs
  plugin/        — Plugin interface
  plugins/
    conversations/ — Multi-agent conversation history
    filebrowser/  — File tree + syntax highlighting
    gitstatus/    — Git diff viewer
    notes/        — Notes plugin
    tdmonitor/    — TD task monitor integration
    workspace/    — Workspace + worktree management
  styles/        — Theme system
  projectdir/    — Project directory detection
.claude/
  skills/        — 17 SKILL.md files
  settings.local.json
.codex/skills/   — Codex-compatible skills
.kiro/settings/  — Kiro settings
scripts/
  setup.sh
website/         — Documentation website

Config File

~/.config/sidecar/config.json:

{
  "plugins": {
    "git-status": {"enabled": true, "refreshInterval": "1s"},
    "conversations": {"enabled": true},
    "file-browser": {"enabled": true},
    "td-monitor": {"enabled": true, "refreshInterval": "2s"},
    "workspaces": {"enabled": true}
  },
  "ui": {"showClock": true, "theme": {"name": "default"}},
  "projects": {"list": [{"name": "...", "path": "..."}]}
}

Target AI Tools

Read conversation history from: Claude Code, Codex, Gemini CLI, Cursor CLI, Kiro, OpenCode, Amp Code, GitHub Copilot CLI, Pi Agent, Warp

03

Components

Sidecar — Components

Plugins

Plugin Description
git-status Staged/modified/untracked files with split-pane diff viewer; commit history; auto-refresh on FS changes
conversations Unified session history from 10+ AI coding agents; search; token usage per session
td-monitor TD task manager integration: current task, scrollable task list, activity log, quick review
file-browser Tree view + syntax-highlighted preview; auto-refresh
workspaces Git worktree management, agent launch, TD task linking, merge workflow
notes Notes plugin (details unknown)

Claude Code Skills (.claude/skills/ — 17 skills)

Skill Purpose
create-theme Custom theme creation guide
create-adapter New agent adapter
create-modal Modal dialog creation
create-plugin Plugin creation
create-prompt Prompt creation
drag-pane Pane drag interaction
feature-flags Feature flag system
inline-editor Inline editor feature
keyboard-shortcuts Keyboard shortcut system
merge-strategy Merge workflow
profile-memory Memory profiling
project-switching Multi-project switching
release-sidecar Release automation
shell-integration Shell integration
sidecar-website Website management
ui-features UI features and keyboard parity
worktree-switching Worktree switching

CLI

Command Description
sidecar Start TUI from current directory
sidecar --project <path> Start with specific project root
sidecar --debug Enable debug logging
sidecar --version Check version

Keyboard Shortcuts (Selection)

Key Action
@ Open project switcher
W Open worktree switcher
# Open theme switcher (453 community themes)
tab/shift+tab Navigate plugins
s (git) Stage file
a (workspace) Launch/attach agent
m (workspace) Start merge workflow
r Refresh
? Toggle help

State Files Written by Sidecar

  • ~/.config/sidecar/config.json — configuration
  • .sidecar/ state files (per project, auto-added to .gitignore)
  • SQLite database (likely conversation/session storage — exact path from go.mod dependency)
05

Prompts

Sidecar — Prompts

Sidecar ships 17 SKILL.md files for its own development and 1 AGENTS.md file. The skills guide AI agents contributing to Sidecar itself, not coding practices for end users.

Excerpt 1: AGENTS.md — TD Task Mandate (Iron Law)

# Agents: Mandatory: use td usage --new-session to see open work and view tasks / epics.

# Agents: Mandatory if the human does not provide an existing task for the work you've been asked to start, 
create a task or tasks with td first and use td to track progress.

Prompting technique: Iron-law mandate — the word "Mandatory" appears twice in prominent position. Requires agents to use TD for task tracking before and during any work. This is a behavioral constraint, not a guideline.

Excerpt 2: .claude/skills/create-theme/SKILL.md — Configuration Guide

---
name: create-theme
description: >
  Create custom color themes for Sidecar, including base theme selection,
  color overrides, gradient borders, tab styles, per-project themes,
  community themes, and programmatic theme registration. Use when creating
  or modifying themes, adjusting UI appearance, or debugging color/style
  issues. See references/palette-reference.md for the full color palette
  with all keys and per-theme values.
---

# Create Theme

## Configuration Location

Themes are configured in `~/.config/sidecar/config.json`:
{
  "ui": {
    "theme": {
      "name": "default",
      "overrides": {
        "primary": "#FF5500"
      }
    }
  }
}

Prompting technique: YAML frontmatter + structured how-to — auto-activation skill (description says "Use when creating or modifying themes") with configuration examples. Standard Claude Code skill pattern.

Excerpt 3: AGENTS.md — Architecture Constraints

## Plugin View Rendering

**Critical: Always constrain plugin output height.** The app's header/footer are always visible - 
plugins must not exceed their allocated height or the header will scroll off-screen.

In View(width, height int):
1. Store dimensions: p.width, p.height = width, height
2. Calculate internal layout respecting height
3. Never rely on the app to truncate - it wraps with Height() but edge cases cause rendering bugs

This bug manifests as "top bar disappears" after state transitions.

Prompting technique: Bug-prevention rule with visual symptom — describes not just what to do but what failure looks like if you don't ("top bar disappears"). Excellent specificity for agent-contributors working on UI code.

09

Uniqueness

Sidecar — Uniqueness

differs_from_seeds

Sidecar has no parallel in the 11 seeds. The seeds are all prompt frameworks, skill packs, or MCP servers — things that change what agents do. Sidecar is a passive TUI companion panel that makes agent work visible without modifying agent behavior. The closest seed in philosophy is agent-os (minimal, no prompt injection, read-file-based), but agent-os writes CLAUDE.md files to guide agents while Sidecar is entirely read-only from the agent's perspective. The Conversations plugin (unified history across 10+ agents) has no equivalent anywhere in the corpus — it's a cross-agent session browser that normalizes different storage formats into one view.

Positioning

Sidecar occupies the "terminal companion panel" niche. It is the only framework in this batch (and likely in the entire catalog) that aggregates conversation history from 10+ different AI coding agents into a single unified view. The TD task manager integration creates a closed loop: tasks defined in TD are worked by agents, and Sidecar shows the task progress alongside the git changes.

Observable Failure Modes

  1. Last commit 2026-04-18 — may be dormant (compare to other active projects)
  2. macOS/Linux only — no Windows native (WSL works)
  3. Read-only — Sidecar cannot send messages to agents; only observes
  4. TD dependency for full value — TD Monitor plugin requires td to be installed separately
  5. Agent adapter maintenance — 10+ agent conversation formats need ongoing maintenance as agents update their storage

What Is Genuinely Novel

  • Unified conversation history browser across 10+ AI coding agents in one TUI
  • 453 community theme schemes with live preview (the most comprehensive TUI theming in this batch)
  • Worktree switcher with per-project state memory
  • Plugin-to-plugin communication via bubbletea message bus (composable TUI architecture)
  • The release-sidecar skill — Sidecar ships its own release automation as a Claude Code skill
04

Workflow

Sidecar — Workflow

Normal Development Workflow

Terminal left half:  $ claude  (or codex, gemini, cursor...)
Terminal right half: $ sidecar
  1. Start agent on left side
  2. Start Sidecar on right side with sidecar
  3. Watch Git Status plugin: see file changes in real-time as agent edits
  4. Watch TD Monitor: see tasks move through workflow
  5. Browse Conversations: view full agent session history with token usage
  6. When agent finishes: stage files with s, view diff with d, commit with c

Multi-Project Workflow

  1. Configure projects in ~/.config/sidecar/config.json
  2. Press @ to open project switcher
  3. Select project → all plugins reinitialize with new project context
  4. State remembered per project

Workspace / Worktree Workflow

  1. Press W to open worktree switcher
  2. Switch to worktree → Sidecar remembers which worktree per project
  3. Create new workspace with n in Workspaces plugin
  4. Link TD task with t
  5. Launch agent with a (Claude, Codex, Gemini, Cursor, OpenCode, Pi)
  6. When ready: m → commit → push → create PR → cleanup

Git Commit Workflow

  1. s — stage file
  2. d — view diff (full-screen with d, side-by-side with v)
  3. c — commit staged changes (interactive)
  4. Auto-refresh shows changes applied

Phase → Artifact Map

Phase Artifact
Start ~/.config/sidecar/config.json
Session .sidecar/ state files
Git diff Real-time display (no file artifact)
Workspace create Git worktree at sibling directory
Merge workflow PR via gh
06

Memory Context

Sidecar — Memory & Context

Memory Architecture

Sidecar reads agent memory but does not create its own. The Conversations plugin reads conversation history from each agent's own storage format (Claude Code, Codex, Gemini, etc.) and displays it in a unified view.

State Storage

  • ~/.config/sidecar/config.json — User configuration (plugins, themes, project list)
  • .sidecar/ (per-project directory) — Project-specific state, auto-added to .gitignore
  • SQLite — From go.mod dependencies (mattn/go-sqlite3, modernc.org/sqlite); likely for conversation history caching or worktree state
  • Per-project worktree state: which worktree was active when switching away

What Sidecar Reads (From Agent Conversation History)

Sidecar reads session files from these agents:

  • Claude Code, Codex, Gemini CLI, Cursor CLI, Kiro, OpenCode, Amp Code, GitHub Copilot CLI, Pi Agent, Warp

Each agent stores conversations in different formats/locations; Sidecar implements adapters for each.

Context Injection

None — Sidecar is read-only with respect to agent sessions. It does not inject context into running agents.

Cross-Session Handoff

Yes for project state (worktree position, active plugin remembered per project). No for agent sessions (Sidecar can view history but doesn't hand context to new sessions).

TD Integration

The TD task manager stores its own state separately. Sidecar's TD Monitor plugin reads TD state via the td CLI binary. TD provides the cross-session context for AI agents working across context windows.

07

Orchestration

Sidecar — Orchestration

Multi-Agent Support

Passive yes — Sidecar can display history from multiple agents simultaneously. The Workspaces plugin can launch any supported agent (Claude, Codex, Gemini, Cursor, OpenCode, Pi). But Sidecar does not coordinate agents.

Orchestration Pattern

None. Sidecar is a visibility tool, not an orchestration tool.

Execution Mode

Continuous TUI (runs as long as the terminal is open).

Isolation Mechanism

Git worktrees — the Workspaces plugin creates and manages git worktrees as sibling directories. Each workspace = one worktree = one independent branch.

Multi-Model Support

No. Sidecar is model-agnostic; it just launches and monitors agents.

Consensus Mechanism

None.

Prompt Chaining

No.

Notable Design: Inter-Plugin Communication

From AGENTS.md:

// Plugins communicate via tea.Msg broadcast — all plugins receive all messages
func (p *Plugin) openInFileBrowser(path string) tea.Cmd {
    return tea.Batch(
        app.FocusPlugin("file-browser"),
        func() tea.Msg { return filebrowser.NavigateToFileMsg{Path: path} },
    )
}

The TUI uses a message bus for plugin-to-plugin communication. When Git Status plugin detects a changed file, it can navigate the File Browser to that file via a broadcast message.

08

Ui Cli Surface

Sidecar — UI & CLI Surface

CLI Binary

  • Name: sidecar
  • Type: Own runtime TUI app (not a wrapper)
  • Flags: --project <path>, --debug, --version
  • Built with Go; single static binary

Local UI

  • Type: Terminal TUI (charmbracelet/bubbletea)
  • Features:
    • Plugin tabs (Git Status, Conversations, TD Monitor, File Browser, Workspaces)
    • Split-pane diff viewer (side-by-side and unified)
    • Syntax-highlighted file preview (charmbracelet/glamour)
    • Theme switcher with 453 community color schemes + live preview
    • Project switcher (@)
    • Worktree switcher (W)
    • Update check on startup (toast notification → ! for update command)
    • Auto-refresh on filesystem changes (fsnotify)

Keyboard Navigation

All operations are keyboard-driven. Notable shortcuts:

  • tab/shift+tab — navigate plugins
  • @ — project switcher
  • W — worktree switcher
  • # — theme switcher
  • j/k — navigate lists
  • ctrl+d/u — page down/up
  • g/G — jump top/bottom
  • ? — toggle help

IDE Integration

  • .claude/skills/ — 17 SKILL.md files for Claude Code contributions
  • .codex/skills/ — Codex-compatible skills
  • .kiro/settings/ — Kiro agent settings
  • No dedicated IDE extension

Observability

  • Auto-refresh on file changes (fsnotify)
  • Debug mode (--debug)
  • SQLite-backed conversation history
  • Privacy: no telemetry, network calls limited to GitHub API version check (cached 3h)

Cross-Tool Portability

High — reads conversation history from 10+ agents; launches any supported agent from Workspaces plugin.

Related frameworks

same archetype · same primary tool · same memory type

claude-mem (thedotmack) ★ 78k

Background worker service captures every tool call as an observation, AI-compresses sessions, and auto-injects relevant past…

pi (badlogic/earendil) ★ 55k

A minimal, hackable, multi-provider terminal coding agent that adapts to your workflows via npm-installable TypeScript Extensions…

Agent Skills (Addy Osmani) ★ 46k

Encodes senior-engineer software development lifecycle as 23 auto-routed skills and 7 slash commands for any AI coding agent.

wshobson/agents Plugin Marketplace ★ 36k

Single Markdown source for 83 domain-specialized plugins that auto-generates idiomatic artifacts for five AI coding harnesses.

TabbyML/Tabby ★ 34k

Self-hosted AI coding assistant server (alternative to GitHub Copilot) with admin dashboard, RAG-based completions, and multi-IDE…

Compound Engineering ★ 17k

Make each unit of engineering work compound into easier future work via brainstorm→plan→execute→review→learn cycles.