Getting Started
This guide gets a repository to the point where LocalCI runs checks after each commit.
Set up a repository
Install LocalCI
LocalCI runs Mise tasks, so make sure Mise is installed before you configure a repository.
With brew
With mise
If you want everyone working in a repository to use the same LocalCI toolchain, install LocalCI through mise's GitHub backend:
Start the daemon
Read docs in the terminal
Use localci docs --plain when you want plain text for scripts, pagers, or agents.
Install the hook
From the repository root:
After each commit, the hook enqueues checks and prints commands for status and waiting.
Define tasks
LocalCI executes all tasks with localci: in their name, and always executes localci:setup first.
[tasks."localci:setup"]
description = "Install dependencies for LocalCI runs"
run = [
# 'mise trust' is run automatically, so you can usually just install dependencies immediately
"mise install",
]
[tasks."localci:test"]
description = "go test"
run = "go test ./..."
Commit the setup
Commit the LocalCI task definitions so the post-commit hook can enqueue checks for the new revision:
Run checks
Follow the latest run
The normal workflow is post-commit: the hook queues work after each commit, and you inspect the daemon's latest run.
Wait in the terminal:
Show a bounded status summary without waiting:
Open the same run in a browser or terminal UI:
After localci postcommit enqueues tasks, use the wait command it prints:
To inspect an existing no-clone run:
Run an ad hoc daemon check
Use run when you explicitly want to queue a manual daemon-managed run outside the post-commit path.
To test uncommitted changes through the daemon queue, use --no-clone:
No-clone runs are labeled with a trailing *. They intentionally see unstaged files and local edits.
Use invoke only when you want to run checks directly in the current terminal instead of through the daemon.
Inspect results
Check status
Show the latest run for the current repository:
Show one task:
Show a specific run:
Non-interactive commands print bounded summaries. They do not dump full logs.
Find artifact paths
Print artifact paths for the latest run:
Print the primary artifact for failed tasks:
For shell scripts and agents, print only paths:
Then read the file directly:
Browse history
Show recent runs:
Show recent results for a task across commits:
Show recent failed runs:
Open UIs
Open the web UI
Open the latest run for the current repository:
Open a specific task:
Task artifact pages show full artifact paths and include copy/open actions.
Use the terminal UI
Open the all-repos dashboard:
Open a specific task:
The terminal UI supports the same run, task, retry, cancel, and artifact views as the web UI. On artifact views, use e to edit the selected artifact with $VISUAL or $EDITOR, o to open it with the platform opener, and f on macOS to reveal it in Finder through the daemon.
Manage queued work
Cancel work
Cancel the active task:
Cancel a specific task: