Skip to content

joelmgallant/solidtime-cli

Repository files navigation

solidtime-cli

A command-line interface for solidtime — manage time entries, projects, tasks, and more from your terminal.

Built for both human operators and AI agents. Auto-detects TTY for output formatting, supports structured JSON for piping, and uses semantic exit codes.

Install

# From source
go install github.com/joelmgallant/solidtime-cli@latest

# Or build locally
git clone https://github.com/joelmgallant/solidtime-cli.git
cd solidtime-cli
make build

Quick Start

# Authenticate (creates ~/.config/solidtime/config.yaml)
solidtime-cli login
# Or pass token directly (useful for long JWT tokens in tmux/terminal multiplexers)
solidtime-cli login --token "your-api-token"

# Start tracking time
solidtime-cli start --project <id> --description "Working on feature X"

# Check what's running
solidtime-cli status

# Stop the timer
solidtime-cli stop

# List your projects
solidtime-cli projects list

# Get current user
solidtime-cli me

Commands

Time Tracking Shortcuts

solidtime-cli start [--project ID] [--task ID] [--description "..."] [--billable] [--tag ID]
solidtime-cli stop
solidtime-cli status

Resource Management

Every resource follows the same pattern:

solidtime-cli <resource> list [--page N] [--all]
solidtime-cli <resource> show <id>
solidtime-cli <resource> create <flags>
solidtime-cli <resource> update <id> <flags>
solidtime-cli <resource> delete <id>

Available resources: projects, clients, tags, tasks, time-entries, members, reports, project-members, invitations, charts, tokens, orgs, currencies

Additional Commands

solidtime-cli me                          # Current user info
solidtime-cli memberships                 # List your organizations
solidtime-cli login                       # Interactive authentication setup
solidtime-cli config get|set|path         # Manage configuration
solidtime-cli export                      # Export organization data
solidtime-cli import list-importers       # List available importers
solidtime-cli import run --type <key>     # Import data
solidtime-cli currencies                  # List all currencies
solidtime-cli version                     # Print CLI version

Time Entry Extras

solidtime-cli time-entries aggregate [--group day|week|month|...] [--filters]
solidtime-cli time-entries export [--format csv|xlsx|ods]
solidtime-cli time-entries aggregate-export [--format csv|xlsx|ods]
solidtime-cli time-entries bulk-update --ids <id1,id2,...> <flags>
solidtime-cli time-entries bulk-delete --ids <id1,id2,...>

Configuration

Config file: ~/.config/solidtime/config.yaml (respects $XDG_CONFIG_HOME)

url: https://app.solidtime.io/api
token: your-api-token
default_org: your-org-id
output: auto

Override Priority (highest first)

Setting Flag Env Var Config Key
API Token --token SOLIDTIME_TOKEN token
Base URL --url SOLIDTIME_URL url
Organization --org SOLIDTIME_ORG default_org

Global Flags

--org, -o     Organization ID
--url         API base URL (default: https://app.solidtime.io/api)
--output, -O  Output format: json|table|csv (default: auto-detect)
--token       API token
--quiet, -q   Suppress non-essential output
--no-color    Disable color output

AI Agent Usage

Designed for scripting and AI agent consumption:

  • Auto-detect output: TTY gets tables, pipes get JSON. Override with --output json.
  • Structured errors: JSON errors go to stderr, data goes to stdout.
  • Semantic exit codes: 0 success, 2 auth, 3 forbidden, 4 not found, 5 validation, 6 conflict.
  • Quiet mode: --quiet strips all human-friendly messages — just data.
  • Chainable: ID=$(solidtime-cli projects create --name "X" -O json -q | jq -r '.id')
  • Full pagination: --all fetches every page automatically.

Self-Hosted

Works with self-hosted solidtime instances:

solidtime-cli login                                    # Enter your custom URL during setup
# or
solidtime-cli --url https://solidtime.example.com/api  # Per-command override
# or
export SOLIDTIME_URL=https://solidtime.example.com/api  # Environment variable

Development

make build      # Build binary to bin/solidtime-cli
make test       # Run all tests
make generate   # Regenerate OpenAPI client from spec
make fmt        # Format code
make lint       # Run linter
make release    # Build release with goreleaser

License

MIT

About

CLI for the solidtime time tracking API

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors