ShellTime is a CLI and background daemon for tracking shell activity, syncing command history, and wiring AI coding tools into a shared telemetry stream. The public product and hosted service are ShellTime at shelltime.xyz.
The Go module path is github.com/malamtime/cli. That naming mismatch is intentional in this repo today; use ShellTime for product-facing docs and github.com/malamtime/cli for imports and module references.
brew install shelltime/tap/shelltimecurl -sSL https://shelltime.xyz/i | bashThe fastest setup path is:
shelltime initshelltime init authenticates the CLI, installs shell hooks, installs the daemon, and attempts to configure Claude Code and Codex OTEL integration.
If you prefer the manual flow:
shelltime auth
shelltime hooks install
shelltime daemon install
shelltime cc install
shelltime codex install- Tracks shell commands locally with masking and exclusion support.
- Syncs command history to ShellTime for search and analysis.
- Runs a background daemon for low-latency, non-blocking sync.
- Integrates with Claude Code and OpenAI Codex through OTEL forwarding.
- Shows live Claude Code statusline data for cost, quota, time, and context.
- Syncs supported dotfiles to and from the ShellTime service.
| Command | Description |
|---|---|
shelltime init |
Bootstrap auth, hooks, daemon, and AI-code integrations |
shelltime auth |
Authenticate with shelltime.xyz |
shelltime doctor |
Check installation and environment health |
shelltime web |
Open the ShellTime dashboard in a browser |
| Command | Description |
|---|---|
shelltime track |
Record a shell command event |
shelltime sync |
Manually sync pending local data |
shelltime ls |
List locally saved commands |
shelltime gc |
Clean internal storage and logs |
shelltime rg "pattern" |
Search synced command history |
| Command | Description |
|---|---|
shelltime query "prompt" |
Ask AI for a suggested shell command |
shelltime q "prompt" |
Alias for shelltime query |
shelltime cc install |
Install Claude Code OTEL shell configuration |
shelltime cc uninstall |
Remove Claude Code OTEL shell configuration |
shelltime cc statusline |
Emit statusline JSON for Claude Code |
shelltime codex install |
Add ShellTime OTEL config to ~/.codex/config.toml |
shelltime codex uninstall |
Remove ShellTime OTEL config from ~/.codex/config.toml |
| Command | Description |
|---|---|
shelltime hooks install |
Install shell hooks |
shelltime hooks uninstall |
Remove shell hooks |
shelltime daemon install |
Install the ShellTime daemon service |
shelltime daemon status |
Check daemon status |
shelltime daemon reinstall |
Reinstall the daemon service |
shelltime daemon uninstall |
Remove the daemon service |
shelltime alias import |
Import aliases from shell config files |
shelltime config view |
Show the merged current configuration |
shelltime schema |
Generate JSON schema for config autocompletion |
shelltime ios dl |
Open the ShellTime iOS App Store page |
| Command | Description |
|---|---|
shelltime dotfiles push |
Push supported dotfiles to the server |
shelltime dotfiles pull |
Pull supported dotfiles to local config |
ShellTime stores data under ~/.shelltime/.
- Main config:
~/.shelltime/config.yaml - Local overrides:
~/.shelltime/config.local.yaml - Also supported:
config.yml,config.toml,config.local.yml,config.local.toml - Generated schema:
~/.shelltime/config-schema.json
Minimal example:
token: "your-api-token"
flushCount: 10
gcTime: 14
dataMasking: true
exclude:
- ".*password.*"
- "^export .*"For the full configuration surface, defaults, OTEL settings, and AI options, see docs/CONFIG.md.
The daemon keeps tracking fast by buffering and syncing in the background.
| Mode | Latency | Network Blocking |
|---|---|---|
| Direct | ~100ms+ | Yes |
| Daemon | <8ms | No |
Use daemon mode if you want lower shell latency, retry handling, and background processing for sync and OTEL events.
ShellTime can provide a live statusline for Claude Code.
Add this to ~/.claude/settings.json:
{
"statusLine": {
"type": "command",
"command": "shelltime cc statusline"
}
}Example output:
🌿 main* | 🤖 Opus | 💰 $0.12 | 📊 $3.45 | 🚦 5h:23% 7d:12% | ⏱️ 5m30s | 📈 45%
For formatting details and platform notes, see docs/CC_STATUSLINE.md.
- Data masking can redact sensitive command content before upload.
- Exclusion patterns let you skip matching commands entirely.
- Optional end-to-end encryption is available for supported flows.
- Local config overrides can keep sensitive values out of the primary config file.
Common local commands:
go build -o shelltime ./cmd/cli/main.go
go build -o shelltime-daemon ./cmd/daemon/main.go
go test -timeout 3m -coverprofile=coverage.txt -covermode=atomic ./...
go fmt ./...
go vet ./...Copyright (c) 2026 ShellTime Team. All rights reserved.