basecamp-cli

module
v0.8.0 Latest Latest
Warning

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

Go to latest
Published: Aug 3, 2026 License: MIT

README

Basecamp Basecamp CLI

basecamp is the official command-line interface for Basecamp. Manage projects, todos, messages, and more from your terminal or through AI agents.

  • Works standalone or with any AI agent (Claude, Codex, Copilot, Gemini)
  • JSON output with breadcrumbs for easy navigation
  • OAuth authentication with automatic token refresh
  • Includes agent skills plus native Claude Code and Codex plugins

Quick Start

macOS / Linux / WSL2

curl -fsSL https://basecamp.com/install-cli | bash

Windows (PowerShell)

irm https://raw.githubusercontent.com/basecamp/basecamp-cli/main/scripts/install.ps1 | iex

On Windows 11 with Smart App Control, see Troubleshooting if the install is blocked.

That's it. You now have full access to Basecamp from your terminal.

Other installation methods

Brew / macOS

brew install --cask basecamp/tap/basecamp-cli

Arch Linux / Omarchy (AUR):

yay -S basecamp-cli

Linux (deb/rpm/apk):

# Download from https://github.com/basecamp/basecamp-cli/releases/latest
sudo apt install ./basecamp-cli_*_linux_amd64.deb            # Debian/Ubuntu
sudo dnf install ./basecamp-cli_*_linux_amd64.rpm            # Fedora/RHEL
sudo apk add --allow-untrusted ./basecamp-cli_*_linux_amd64.apk  # Alpine

Arm64: substitute arm64 for amd64 in the filename. Verify the SHA-256 checksum from checksums.txt before installing unsigned Alpine packages.

Scoop (Windows):

scoop bucket add basecamp https://github.com/basecamp/homebrew-tap
scoop install basecamp-cli

Shell script (macOS / Linux / WSL2 / Git Bash):

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

Nix:

nix profile install github:basecamp/basecamp-cli

Go install:

go install github.com/basecamp/basecamp-cli/cmd/basecamp@latest

GitHub Release: download from Releases.

Usage

basecamp projects list                            # List projects
basecamp todos list --in 12345                    # Todos in a project
basecamp todos create "Fix bug" --in 12345        # Create todo
basecamp todos complete 67890                     # Complete todo
basecamp cards done 67890 --in 12345              # Complete card (move to Done)
basecamp search "authentication"                  # Search across projects
basecamp files list --in 12345                    # List docs & files
basecamp cards list --in 12345                    # List cards (Kanban)
basecamp chat post "Hello" --in 12345             # Post to chat
basecamp comments create 67890 "@Jane.Smith, done!"    # Comment with @mention
Output Formats
basecamp projects              # Styled output in terminal, JSON when piped
basecamp projects --json       # JSON with envelope and breadcrumbs
basecamp projects --quiet      # Raw JSON data only
JSON Envelope

Every command supports --json for structured output:

{
  "ok": true,
  "data": [...],
  "summary": "5 projects",
  "breadcrumbs": [{"action": "show", "cmd": "basecamp projects show <id>"}]
}

Breadcrumbs suggest next commands, making it easy for humans and agents to navigate.

Authentication

OAuth 2.1 with automatic token refresh. First login opens your browser. When the server advertises the OAuth device flow, login uses it automatically: you approve a short code in the browser instead of a redirect. Login falls back to Launchpad's authorization-code flow only when no modern OAuth issuer is advertised for the server; once a modern issuer is selected, login failures surface loudly rather than silently falling back.

basecamp auth login              # Authenticate with Basecamp
basecamp auth login --scope read # Read-only access (default; ignored by Launchpad)
basecamp auth login --scope full # Full read+write access (ignored by Launchpad)
basecamp auth token              # Print token for scripts
Multiple Identities

Use named profiles when the same machine or agent gateway needs more than one Basecamp identity. Each profile has its own stored OAuth credentials and can be selected per command:

basecamp profile create design-agent
basecamp profile create ops-agent
basecamp --profile design-agent todo "Fix bug" --in 12345 --list 67890

Set a default with basecamp profile set-default <name>, or set BASECAMP_PROFILE=<name> for a process. Actions are posted as the authenticated user for the selected profile.

Custom OAuth Credentials

To use your own OAuth app (e.g., a custom Launchpad integration):

Variable Purpose
BASECAMP_OAUTH_CLIENT_ID OAuth client ID
BASECAMP_OAUTH_CLIENT_SECRET OAuth client secret
BASECAMP_OAUTH_REDIRECT_URI Redirect URI (must be http:// loopback with explicit port)

Both BASECAMP_OAUTH_CLIENT_ID and BASECAMP_OAUTH_CLIENT_SECRET must be set together.

AI Agent Integration

basecamp works with any AI agent that can run shell commands.

Both plugins require the basecamp CLI installed and on your PATH.

Claude Code: basecamp setup claude — installs the plugin with skills and agent workflow support.

Codex: basecamp setup codex — registers the 37signals marketplace and installs the native plugin with Basecamp skills and diagnostics. Start a new Codex thread afterward to load the skills.

Manual Codex installation uses the same marketplace:

codex plugin marketplace add basecamp/claude-plugins
codex plugin add basecamp@37signals

To pick up a newer plugin version later, refresh the marketplace with codex plugin marketplace upgrade 37signals (or re-run basecamp setup codex).

Other agents: Point your agent at skills/basecamp/SKILL.md for Basecamp workflow coverage.

Agent discovery: Every command supports --help --agent for structured JSON output (flags, gotchas, subcommands). Use basecamp commands --json for the full catalog.

See install.md for step-by-step setup instructions.

Configuration

~/.config/basecamp/           # Your Basecamp identity
├── credentials.json          #   OAuth tokens (fallback when keyring unavailable)
└── config.json               #   Global preferences

~/.config/basecamp/theme/     # Tool display (optional)
└── colors.toml               #   TUI color scheme

~/.cache/basecamp/            # Ephemeral tool data
├── completion.json           #   Tab completion cache
└── resilience/               #   Circuit breaker state

.basecamp/                    # Per-repo (committed to git)
└── config.json               #   Project, account defaults

A leftover ~/.config/basecamp/client.json (from the removed development client-registration flow) is obsolete and safe to delete.

Troubleshooting

basecamp doctor              # Check CLI health and diagnose issues
basecamp doctor --verbose    # Verbose output with details
basecamp doctor --json       # Structured checks, including Claude and Codex
Windows: Smart App Control and SmartScreen

Releases up to v0.8.0-rc.1 ship an unsigned basecamp.exe. To check whether your installed binary is signed:

Get-AuthenticodeSignature (Get-Command basecamp).Source

Smart App Control (Windows 11) blocks unsigned executables no matter where they were downloaded from, and it has no per-app exceptions — this applies to the PowerShell installer, Scoop installs, and manual downloads alike. If it blocks an unsigned basecamp.exe, two options:

  1. Use WSL2 (preferred). Install the Linux build inside WSL2 — Smart App Control doesn't apply there and your Windows security setup is untouched: wsl --install, then inside the WSL terminal: curl -fsSL https://basecamp.com/install-cli | bash
  2. Turn Smart App Control off (Windows Security → App & browser control → Smart App Control settings) and leave it off while using the unsigned build. Because there are no per-app exceptions, turning it back on re-blocks basecamp.exe on its next run — only re-enable after upgrading to a signed build. Windows 11 with the March/April 2026 updates can re-enable Smart App Control from Windows Security without a reset; on older builds re-enabling requires resetting Windows, so prefer WSL2 there.

SmartScreen (without Smart App Control) may warn on first run of an unrecognized executable — choose "More info" → "Run anyway" if you downloaded the release from this repository.

Development

make build            # Build binary
make test             # Run Go tests
make test-e2e         # Run e2e tests
make lint             # Run linter
make check            # All checks (fmt-check, vet, lint, test, test-e2e)

See CONTRIBUTING.md for development setup.

License

MIT

Directories

Path Synopsis
cmd
basecamp command
Package main is the entry point for the basecamp CLI.
Package main is the entry point for the basecamp CLI.
e2e
recorder command
internal
appctx
Package appctx provides application context helpers.
Package appctx provides application context helpers.
auth
Package auth provides OAuth 2.1 authentication for Basecamp.
Package auth provides OAuth 2.1 authentication for Basecamp.
cli
commands
Package commands implements the CLI commands.
Package commands implements the CLI commands.
completion
Package completion provides tab completion support for the basecamp CLI.
Package completion provides tab completion support for the basecamp CLI.
config
Package config provides layered configuration loading.
Package config provides layered configuration loading.
dateparse
Package dateparse provides natural language date parsing.
Package dateparse provides natural language date parsing.
editor
Package editor provides $EDITOR integration for composing content.
Package editor provides $EDITOR integration for composing content.
harness
Package harness detects and checks AI agent integration health.
Package harness detects and checks AI agent integration health.
hostutil
Package hostutil provides shared utilities for host URL handling.
Package hostutil provides shared utilities for host URL handling.
models
Package models provides canonical type definitions for Basecamp API entities.
Package models provides canonical type definitions for Basecamp API entities.
names
Package names provides name resolution for projects, people, and todolists.
Package names provides name resolution for projects, people, and todolists.
observability
Package observability provides metrics collection and tracing for CLI operations.
Package observability provides metrics collection and tracing for CLI operations.
output
Package output provides JSON/Markdown output formatting and error handling.
Package output provides JSON/Markdown output formatting and error handling.
presenter
Package presenter provides schema-aware rendering for Basecamp entities.
Package presenter provides schema-aware rendering for Basecamp entities.
resilience
Package resilience provides cross-process state management for long-running CLI operations.
Package resilience provides cross-process state management for long-running CLI operations.
richtext
Package richtext provides utilities for converting between Markdown and HTML.
Package richtext provides utilities for converting between Markdown and HTML.
sdk
Package sdk provides core SDK interfaces for the Basecamp API client.
Package sdk provides core SDK interfaces for the Basecamp API client.
sdk/errors
Package errors provides SDK error types without CLI-specific hints.
Package errors provides SDK error types without CLI-specific hints.
tui
Package tui provides terminal user interface components.
Package tui provides terminal user interface components.
tui/empty
Package empty provides empty state messages for TUI components.
Package empty provides empty state messages for TUI components.
tui/format
Package format provides formatting helpers for TUI components.
Package format provides formatting helpers for TUI components.
tui/recents
Package recents provides a store for tracking recently used items.
Package recents provides a store for tracking recently used items.
tui/resolve
Package resolve provides interactive prompts for resolving missing CLI options.
Package resolve provides interactive prompts for resolving missing CLI options.
tui/workspace
Package workspace provides the persistent TUI application.
Package workspace provides the persistent TUI application.
tui/workspace/chrome
Package chrome provides always-visible shell components for the workspace.
Package chrome provides always-visible shell components for the workspace.
tui/workspace/views
Package views provides the individual screens for the workspace TUI.
Package views provides the individual screens for the workspace TUI.
tui/workspace/widget
Package widget provides reusable TUI components.
Package widget provides reusable TUI components.
urlarg
Package urlarg provides utilities for parsing Basecamp URLs into IDs.
Package urlarg provides utilities for parsing Basecamp URLs into IDs.
version
Package version provides build-time version information.
Package version provides build-time version information.
Package skills embeds the skill files in the binary.
Package skills embeds the skill files in the binary.

Jump to

Keyboard shortcuts

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