Terminal-first Jira Tempo worklog logger with MCP support for Claude, Codex, OpenCode, and compatible clients.
logit installs three binaries:
logit: CLI for logging time, stats, aliases, and setuplogit-mcp: MCP server for Claude, Codex, OpenCode, and compatible clientscli-tempo: compatibility name for the main CLI
All three share the same local config, secrets, profiles, aliases, and cache.
Before first setup, have these ready:
- Tempo API token
- Jira base URL, for example
https://your-company.atlassian.net - Jira account email
- Jira API token
logit setup validates those credentials before saving anything.
Install from the latest GitHub Release with PowerShell:
powershell -ExecutionPolicy Bypass -c "irm https://github.com/kytmanov/logit/releases/latest/download/logit-installer.ps1 | iex"What this installs:
logit.exelogit-mcp.execli-tempo.exe
Notes:
- open a new terminal window after install so the updated
PATHis picked up - if you prefer not to use the installer script, download the Windows
.zipfrom GitHub Releases and place the binaries somewhere on yourPATH
Recommended:
brew install kytmanov/tap/logitUpgrade later with:
brew upgrade logitRequirements:
- Rust stable toolchain
Build:
git clone https://github.com/kytmanov/logit.git
cd logit
cargo build --releaseBuilt binaries:
target/release/logittarget/release/logit-mcptarget/release/cli-tempo
Install all three with Cargo:
cargo install --path .On Windows, Cargo installs:
logit.exelogit-mcp.execli-tempo.exe
logit setupSetup prompts for:
- Jira URL
- Jira email
- Jira API token
- Tempo API token
- timezone
- working hours
- working days
- time format
On success, logit stores:
- config in the config directory
- secrets in the data directory
- cache in the cache directory
Check where those paths are on your machine:
logit doctor
logit config pathTry a safe read-only command first:
logit statIf you want to preview a worklog without sending it:
logit --dry-run 1h TK-1234Issue first:
logit TK-1234 8h
logit TK-1234 1h 30mDuration first:
logit 8h TK-1234
logit 45m TK-1234
logit 1h 15m standup
logit 1h15m standupCompact mixed-unit durations like 1h15m work in both issue-first and duration-first forms.
With a message:
logit 1h TK-1234 -m "fixed flaky test"For a specific date:
logit 30m TK-1234 --date 2026-04-01
logit 3h TK-1234 2026-05-11
logit 3h TK-1234 yesterday
logit standup yesterdayDated duration logs use the configured work_hours.end for that day as the end time, then subtract the duration.
For an explicit time range:
logit 04/01/2026 0812 - 04/01/2026 1700 TK-1234Stats selectors also accept yesterday, for example:
logit stat yesterdayIf you want to use logit from Claude, Codex, OpenCode, or another MCP client, do this after logit setup.
Read-only by default:
doctorconfig_pathlist_aliasesget_statspreview_log_time
Optional write mode:
log_time
Write access is off by default. Enable it only if you want the MCP client to create real Tempo worklogs.
logit can install client config for:
- Claude
- Codex
- OpenCode
Commands:
logit mcp install claude
logit mcp install codex
logit mcp install opencodeWrite-enabled install:
logit mcp --enable-write-tools install claudeWhat each one does:
claude: runsclaude mcp addin local scope for the current projectcodex: updates~/.codex/config.tomlorCODEX_HOME/config.tomlopencode: updates~/.config/opencode/opencode.jsonorOPENCODE_CONFIG
Notes:
- run
logit setupfirst, or the installed MCP server will exist but cannot make real API calls yet - rerun the same install command later if you want to switch to write-enabled mode
- existing matching installs are left alone
- installs do not overwrite a different existing
logitMCP entry - OpenCode auto-install only supports strict JSON config files, not JSONC with comments
Claude in the current project:
logit setup
logit mcp install claudeCodex user-level config:
logit setup
logit mcp install codexOpenCode user-level config:
logit setup
logit mcp install opencodeIf your client is unsupported, or you want full control, point it at logit-mcp directly.
Basic server:
logit-mcpWrite-enabled server:
logit-mcp --enable-write-toolsManual OpenCode config:
{
"mcp": {
"logit": {
"type": "local",
"command": ["/absolute/path/to/logit-mcp"]
}
}
}Manual Claude Code config:
{
"projects": {
"/absolute/path/to/project": {
"mcpServers": {
"logit": {
"command": "/absolute/path/to/logit-mcp"
}
}
}
}
}Manual Codex config:
[mcp_servers.logit]
command = "/absolute/path/to/logit-mcp"
args = ["--config-dir", "/path/to/config", "--data-dir", "/path/to/data", "--cache-dir", "/path/to/cache"]If you need a specific profile or write access, add the relevant args.
Example:
{
"mcpServers": {
"logit": {
"command": "/absolute/path/to/logit-mcp",
"args": ["--profile", "work", "--enable-write-tools"]
}
}
}logit stat
logit stat --details
logit stat today
logit stat 2026-04-01
logit stat week
logit stat week --details
logit stat last week
logit stat April
logit stat May 2026
logit stat 2026Create an alias:
logit alias standup TK-1234 --default-duration 30m -m "daily standup"Use it:
logit standup
logit 1h standup -m "longer today"List aliases:
logit alias listDelete an alias:
logit alias delete standupSkip Jira validation when creating an alias:
logit alias standup TK-1234 --no-validatelogit cache clearlogit config path
logit doctor
logit config editlogit supports multiple profiles. Most people only need the default profile.
Use a named profile:
logit --profile work stat
LOGIT_PROFILE=work logit statIf you install MCP for a non-default profile, include --profile when you run the install command so the client points at the right profile.
Example:
logit --profile work mcp install codexOverride config, data, and cache directories with flags:
logit --config-dir /path/to/config --data-dir /path/to/data --cache-dir /path/to/cache statOr with environment variables:
export LOGIT_CONFIG_DIR=/path/to/config
export LOGIT_DATA_DIR=/path/to/data
export LOGIT_CACHE_DIR=/path/to/cacheImportant: keep data and cache outside the config directory. logit refuses to run if secrets would end up under the config tree.
Run:
logit setuplogit doctor
logit config pathlogit --help
logit-mcp --helpIf logit config edit saves invalid TOML or an unsupported schema, the invalid file is preserved as config.toml.invalid.
Tempo token rejected: invalid Tempo API tokenJira credentials rejected: invalid Jira email or Jira API tokenunknown issue key or alias: typo in issue key or alias name
Useful local checks:
cargo fmt --check
cargo clippy -- -D warnings
cargo test