sidecar

module
v0.74.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 19, 2026 License: MIT

README

Sidecar

You might never open your editor again.

Status: Ready for daily use. Please report any issues you encounter.

Documentation · Getting Started

Git Status

Overview

Sidecar puts your entire development workflow in one shell: plan tasks with td, chat with AI agents, review diffs, stage commits, review past conversations, and manage workspaces—all without leaving Sidecar.

Quick Install

brew install marcus/tap/sidecar

This builds from source and avoids macOS Gatekeeper warnings.

Linux / Other
curl -fsSL https://raw.githubusercontent.com/marcus/sidecar/main/scripts/setup.sh | bash

More options: Binary downloads · Manual install

Requirements

  • macOS, Linux, or WSL
  • Go 1.21+ (only if building from source)

Quick Start

After installation, run from any project directory:

sidecar

Suggested Use

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

┌─────────────────────────────┬─────────────────────┐
│                             │                     │
│   Claude Code / Cursor      │      Sidecar        │
│                             │                     │
│   $ claude                  │   [Git] [Files]     │
│   > fix the auth bug...     │   [Tasks] [Workspaces]│
│                             │                     │
└─────────────────────────────┴─────────────────────┘

Tip: You can run two sidecar instances side-by-side to create a dashboard view. For example, keep one on the [Tasks] plugin and the other on [Git] or [Workspaces] to monitor everything at once.

As the agent works, you can:

  • Watch tasks move through the workflow in TD Monitor
  • See files change in real-time in the Git plugin
  • Browse and edit code yourself in the File Browser
  • View and resume conversations across all supported agent adapters
  • Switch between built-in and community themes with live previews

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.

Usage

# Run from any project directory
sidecar

# Specify project root
sidecar --project /path/to/project

# Enable debug logging
sidecar --debug

# Check version
sidecar --version

Updates

Sidecar checks for updates on startup. When a new version is available, a toast notification appears. Press ! to open the diagnostics modal and see the update command.

Plugins

Git Status

View staged, modified, and untracked files with a split-pane interface. The sidebar shows files and recent commits; the main pane shows syntax-highlighted diffs. Full documentation →

Git Status with Diff

Features:

  • Stage/unstage files with s/u
  • View diffs inline or full-screen with d
  • Toggle side-by-side diff view with v
  • Browse commit history and view commit diffs
  • Auto-refresh on file system changes
Conversations

Browse session history from multiple AI coding agents with message content, token usage, and search. Supports Amp Code, Claude Code, Codex, Cursor CLI, Gemini CLI, Kiro, OpenCode, Pi Agent, and Warp. Full documentation →

Conversations

Features:

  • Unified view across all supported agents
  • View all sessions grouped by date
  • Search sessions with /
  • Expand messages to see full content
  • Track token usage per session
TD Monitor

Integration 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—essential for AI-assisted development where context windows reset between conversations. Full documentation →

TD Monitor

Features:

  • Current focused task display
  • Scrollable task list with status indicators
  • Activity log with session context
  • Quick review submission with r

See the TD repository for installation and CLI usage.

File Browser

Navigate project files with a tree view and syntax-highlighted preview. Full documentation →

File Browser

Features:

  • Collapsible directory tree
  • Code preview with syntax highlighting
  • Auto-refresh on file changes
Workspaces

Manage workspaces for parallel development with integrated agent support. Create isolated branches as sibling directories, link tasks from TD, and launch coding agents directly from sidecar. Full documentation →

Workspaces

Features:

  • Create and delete workspaces with n/D
  • Link TD tasks to workspaces for context tracking
  • Launch coding agents (Claude, Codex, Gemini, Cursor, OpenCode, Pi) with a
  • Merge workflow: commit, push, create PR, and cleanup with m
  • Auto-adds sidecar state files to .gitignore
  • Preview diffs and task details in split-pane view

Project Switcher

Press @ to switch between configured projects without restarting sidecar.

  1. Add projects to ~/.config/sidecar/config.json:
{
  "projects": {
    "list": [
      { "name": "sidecar", "path": "~/code/sidecar" },
      { "name": "td", "path": "~/code/td" },
      { "name": "my-app", "path": "~/projects/my-app" }
    ]
  }
}
  1. Press @ to open the project switcher modal
  2. Select with j/k or click, press Enter to switch

All plugins reinitialize with the new project context. State (active plugin, cursor positions) is remembered per project.

Worktree Switcher

Press W to switch between git worktrees within the current repository. When you switch away from a project and return later, sidecar remembers which worktree you were working in and restores it automatically.

Themes

Press # to open the theme switcher. Choose from built-in themes (default, dracula) or press Tab to browse 453 community color schemes derived from iTerm2-Color-Schemes.

The community browser supports search filtering, live preview as you navigate, and color swatches for each scheme. Press Enter to save a scheme as your active theme.

See Theme Creation Skill for custom theme creation and color palette reference.

Keyboard Shortcuts

Key Action
q, ctrl+c Quit
@ Open project switcher
W Open worktree switcher
# Open theme switcher
tab / shift+tab Navigate plugins
1-9 Focus plugin by number
j/k, ↓/↑ Navigate items
ctrl+d/u Page down/up in scrollable views
g/G Jump to top/bottom
enter Select
esc Back/close
r Refresh
? Toggle help
Git Status Shortcuts
Key Action
s Stage file
u Unstage file
d View diff (full-screen)
v Toggle side-by-side diff
h/l Switch sidebar/diff focus
c Commit staged changes
Workspace Shortcuts
Key Action
n Create new workspace
D Delete workspace
a Launch/attach agent
t Link/unlink TD task
m Start merge workflow
p Push branch
o Open in finder/terminal

Configuration

Config file: ~/.config/sidecar/config.json

{
  "plugins": {
    "git-status": { "enabled": true, "refreshInterval": "1s" },
    "td-monitor": { "enabled": true, "refreshInterval": "2s" },
    "conversations": { "enabled": true },
    "file-browser": { "enabled": true },
    "workspaces": { "enabled": true }
  },
  "ui": {
    "showClock": true,
    "theme": {
      "name": "default",
      "overrides": {}
    }
  }
}

Contributing

Development

make build        # Build to ./bin/sidecar
make test         # Run tests
make test-v       # Verbose test output
make install-dev  # Install with git version info
make fmt          # Format code
make fmt-check    # Verify formatting for changed Go files
make fmt-check-all # Verify formatting across full codebase
make lint         # Lint new issues only (merge-base with main)
make lint-all     # Lint entire codebase (includes legacy debt)
Go Lint Baseline
  • Formatting: changed Go files must be gofmt-clean (make fmt-check)
  • Correctness lint: errcheck, govet, ineffassign, staticcheck, unused
  • Enforcement: CI runs tests and blocks new lint issues on PRs (.github/workflows/go-ci.yml)
  • Debt tracking: run make lint-all to measure and burn down legacy lint debt

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. See PRIVACY.md for full details on data access, file reads/writes, and network behavior.

License

MIT

Directories

Path Synopsis
cmd
sidecar command
Sidecar is a TUI dashboard for AI coding agents.
Sidecar is a TUI dashboard for AI coding agents.
internal
adapter
Package adapter defines the pluggable interface for AI session data sources, including the core Adapter, Session, Message, and Event types shared by all provider implementations.
Package adapter defines the pluggable interface for AI session data sources, including the core Adapter, Session, Message, and Event types shared by all provider implementations.
adapter/amp
Package amp provides an adapter for Amp Code that reads thread JSON files from ~/.local/share/amp/threads/.
Package amp provides an adapter for Amp Code that reads thread JSON files from ~/.local/share/amp/threads/.
adapter/cache
Package cache provides a generic thread-safe LRU cache with file-metadata invalidation, along with incremental, tail, and head JSONL readers that share pooled scanner buffers.
Package cache provides a generic thread-safe LRU cache with file-metadata invalidation, along with incremental, tail, and head JSONL readers that share pooled scanner buffers.
adapter/claudecode
Package claudecode provides an adapter for Claude Code (Anthropic's CLI) that parses JSONL session files to display conversations and token usage.
Package claudecode provides an adapter for Claude Code (Anthropic's CLI) that parses JSONL session files to display conversations and token usage.
adapter/codex
Package codex provides an adapter for Codex CLI that reads session files with two-pass parsing optimization for large conversation files.
Package codex provides an adapter for Codex CLI that reads session files with two-pass parsing optimization for large conversation files.
adapter/cursor
Package cursor provides an adapter for Cursor that reads SQLite databases to extract conversation history with workspace-based organization.
Package cursor provides an adapter for Cursor that reads SQLite databases to extract conversation history with workspace-based organization.
adapter/geminicli
Package geminicli provides an adapter for Gemini CLI that parses JSON session files with project-specific conversation tracking.
Package geminicli provides an adapter for Gemini CLI that parses JSON session files with project-specific conversation tracking.
adapter/kiro
Package kiro provides an adapter for Kiro CLI (kiro-cli from AWS) that queries its SQLite database for conversation history filtered by working directory.
Package kiro provides an adapter for Kiro CLI (kiro-cli from AWS) that queries its SQLite database for conversation history filtered by working directory.
adapter/opencode
Package opencode provides an adapter for OpenCode that reads sessions with project indexing and session metadata caching.
Package opencode provides an adapter for OpenCode that reads sessions with project indexing and session metadata caching.
adapter/pi
Package pi provides an adapter for Pi AI agent sessions (embedded in OpenClaw).
Package pi provides an adapter for Pi AI agent sessions (embedded in OpenClaw).
adapter/piagent
Package piagent implements an adapter for standalone Pi Agent sessions.
Package piagent implements an adapter for standalone Pi Agent sessions.
adapter/testutil
Package testutil provides fixture generators for adapter testing and benchmarking, producing realistic JSONL session files in Claude Code and Codex formats.
Package testutil provides fixture generators for adapter testing and benchmarking, producing realistic JSONL session files in Claude Code and Codex formats.
adapter/tieredwatcher
Package tieredwatcher implements tiered file watching with a HOT tier using real-time fsnotify and a COLD tier using periodic polling, reducing file descriptor usage while keeping recently active sessions responsive.
Package tieredwatcher implements tiered file watching with a HOT tier using real-time fsnotify and a COLD tier using periodic polling, reducing file descriptor usage while keeping recently active sessions responsive.
adapter/warp
Package warp provides an adapter for Warp terminal AI that queries its SQLite database for conversation history filtered by working directory.
Package warp provides an adapter for Warp terminal AI that queries its SQLite database for conversation history filtered by working directory.
app
Package app implements the root Bubble Tea application model, orchestrating plugins, modals, project switching, themes, and global keyboard bindings.
Package app implements the root Bubble Tea application model, orchestrating plugins, modals, project switching, themes, and global keyboard bindings.
community
Package community imports and converts community color schemes from Windows Terminal JSON format into sidecar theme overrides.
Package community imports and converts community color schemes from Windows Terminal JSON format into sidecar theme overrides.
config
Package config handles loading, saving, and validating user configuration from JSON files, including project settings, plugin options, keymaps, and UI preferences.
Package config handles loading, saving, and validating user configuration from JSON files, including project settings, plugin options, keymaps, and UI preferences.
event
Package event defines typed event structures for system-wide event bus communication including file changes, git updates, and UI refresh notifications.
Package event defines typed event structures for system-wide event bus communication including file changes, git updates, and UI refresh notifications.
fdmonitor
Package fdmonitor monitors open file descriptor counts for the current process and logs warnings when configurable thresholds are exceeded.
Package fdmonitor monitors open file descriptor counts for the current process and logs warnings when configurable thresholds are exceeded.
features
Package features provides a feature flag system for gating experimental functionality, with priority resolution from CLI overrides, config file values, and compiled-in defaults.
Package features provides a feature flag system for gating experimental functionality, with priority resolution from CLI overrides, config file values, and compiled-in defaults.
image
Package image handles terminal image preview rendering using the Halfblocks protocol, with LRU caching and graphics protocol detection.
Package image handles terminal image preview rendering using the Halfblocks protocol, with LRU caching and graphics protocol detection.
keymap
Package keymap manages centralized keyboard shortcut registration, multi-key sequence handling, context-aware binding resolution, and user-configurable key overrides.
Package keymap manages centralized keyboard shortcut registration, multi-key sequence handling, context-aware binding resolution, and user-configurable key overrides.
markdown
Package markdown wraps Glamour for cached markdown-to-ANSI rendering with width-based revalidation, falling back to plain text wrapping for narrow terminals.
Package markdown wraps Glamour for cached markdown-to-ANSI rendering with width-based revalidation, falling back to plain text wrapping for narrow terminals.
modal
Package modal provides declarative modal dialog components with automatic hit region management, focus handling, scrolling, and keyboard/mouse interaction.
Package modal provides declarative modal dialog components with automatic hit region management, focus handling, scrolling, and keyboard/mouse interaction.
mouse
Package mouse provides mouse interaction infrastructure with hit region testing, click/double-click detection, drag tracking, and scroll event handling for TUI components.
Package mouse provides mouse interaction infrastructure with hit region testing, click/double-click detection, drag tracking, and scroll event handling for TUI components.
msg
Package msg defines common Bubble Tea message types shared across packages, including toast notifications for temporary status displays.
Package msg defines common Bubble Tea message types shared across packages, including toast notifications for temporary status displays.
palette
Package palette implements the command palette UI for fuzzy searching and executing commands, with support for context filtering and keybinding display.
Package palette implements the command palette UI for fuzzy searching and executing commands, with support for context filtering and keybinding display.
plugin
Package plugin defines the plugin system interface and registry for registering, managing, and coordinating sidecar plugins with shared context.
Package plugin defines the plugin system interface and registry for registering, managing, and coordinating sidecar plugins with shared context.
plugins/conversations
Package conversations provides the content search functionality for cross-conversation search (searching message content across sessions).
Package conversations provides the content search functionality for cross-conversation search (searching message content across sessions).
plugins/filebrowser
Package filebrowser implements the file browser plugin with tree navigation, file preview, quick open, search, git integration, and file operations.
Package filebrowser implements the file browser plugin with tree navigation, file preview, quick open, search, git integration, and file operations.
plugins/gitstatus
Package gitstatus implements the git status plugin with staging/unstaging, diff viewing, commit history, branch management, and conflict resolution.
Package gitstatus implements the git status plugin with staging/unstaging, diff viewing, commit history, branch management, and conflict resolution.
plugins/tdmonitor
Package tdmonitor embeds the td task manager monitor TUI as a sidecar plugin, providing task/issue tracking with kanban boards and setup flows.
Package tdmonitor embeds the td task manager monitor TUI as a sidecar plugin, providing task/issue tracking with kanban boards and setup flows.
plugins/workspace
Package workspace manages git worktrees and tmux sessions for parallel development workflows, with AI agent orchestration, PR fetching, and interactive shell access.
Package workspace manages git worktrees and tmux sessions for parallel development workflows, with AI agent orchestration, PR fetching, and interactive shell access.
state
Package state manages persistent user state such as diff mode preferences, pane widths, and plugin-specific state per working directory across sessions.
Package state manages persistent user state such as diff mode preferences, pane widths, and plugin-specific state per working directory across sessions.
styles
Package styles defines the visual design system including color palettes, lipgloss styles, gradient tabs, and theme application for consistent UI rendering.
Package styles defines the visual design system including color palettes, lipgloss styles, gradient tabs, and theme application for consistent UI rendering.
tdroot
Package tdroot provides utilities for resolving td's root directory and database paths.
Package tdroot provides utilities for resolving td's root directory and database paths.
theme
Package theme resolves and applies themes with precedence (project-specific > global > default), supporting both built-in and community color schemes with user overrides.
Package theme resolves and applies themes with precedence (project-specific > global > default), supporting both built-in and community color schemes with user overrides.
tty
Package tty provides an embeddable interactive tmux component for sending keystrokes, mouse events, and clipboard paste to a tmux pane while capturing and rendering its output.
Package tty provides an embeddable interactive tmux component for sending keystrokes, mouse events, and clipboard paste to a tmux pane while capturing and rendering its output.
ui
Package ui provides reusable TUI components including modals, buttons, scrollbars, skeleton loaders, overlays, and text utilities.
Package ui provides reusable TUI components including modals, buttons, scrollbars, skeleton loaders, overlays, and text utilities.
version
Package version checks GitHub for latest releases, compares semantic versions, and manages update workflows for the sidecar and td binaries.
Package version checks GitHub for latest releases, compares semantic versions, and manages update workflows for the sidecar and td binaries.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL