A fast, local-first CI engine.
Project description
Locci (Local CI)
Locci is a fast, local-first CI preflight tool that runs the safe parts of your CI on your machine before you push. It uses an embedded DAG engine, content-hash caching, GitHub Actions-aware parsing, and clear skip reporting for unsafe or unsupported work.
Locci is intentionally host-native for the MVP: it does not claim to replace your hosted CI runner or Docker-isolate production deploys. Instead, it catches the common lint/test/build failures locally and tells you what still needs remote CI.
Security Caveats
⚠️ Local Safety Heuristics are Best-Effort Locci uses a keyword-based heuristic (looking for words like "deploy", "publish", "release") to identify and skip unsafe side-effect jobs. This is not a security boundary. A job that modifies production state without using these specific keywords will still execute locally.
⚠️ Remote Cache Supply Chain Risk
When using the --remote-cache s3://... feature, Locci pulls and restores cache artifacts directly into your workspace. There is currently no cryptographic signature or authenticity verification on these artifacts. Anyone with write access to the shared cache bucket could plant a malicious payload or falsify a test outcome. Use shared remote caching with trusted teams only.
Why Python?
Locci is distributed via pip and written in Python 3.9+. While traditional tools often aim for a single static binary to avoid runtime dependencies, we deliberately chose Python to make installation ubiquitous across all OSes via PyPI, and to allow for rapid iteration and community-driven plugins.
The Tradeoff: You will need a Python 3.9+ runtime to use Locci, even if your project is written in Node.js, Go, or Rust.
Recommendation: We strongly recommend installing Locci globally via pipx to isolate its dependencies from your system Python:
pipx install locci
This gives you a globally available locci command that feels exactly like a static binary, without cluttering your environment.
Usage
# First-time setup in a repo
locci setup
# Daily local CI check
locci check
# Affected pre-push check
locci preflight
# Watch for file changes and incrementally rerun only affected steps
locci watch
Useful commands:
locci setup --preview # print the generated locci.yml without writing
locci check --dry-run # show the local execution graph
locci check --strict-coverage
locci hook install # install a managed pre-push hook
locci doctor # inspect required local tools
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file locci-0.1.0.tar.gz.
File metadata
- Download URL: locci-0.1.0.tar.gz
- Upload date:
- Size: 54.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d2ccf638785858d20b327a6a2f1cd692dbf8f0e6f9679fe6c75d767ecba62f76
|
|
| MD5 |
0cdc24fde2a51a67b68f1fb207d522f0
|
|
| BLAKE2b-256 |
402b8e6e98a8aff4bc21af72b37b6959d78a55f9bd11180c736b31d7b6e7b9b4
|
File details
Details for the file locci-0.1.0-py3-none-any.whl.
File metadata
- Download URL: locci-0.1.0-py3-none-any.whl
- Upload date:
- Size: 49.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bfe4954b0b90cbbaa05e6ac3b6f8c581b54c67943983530e736604411f15da61
|
|
| MD5 |
ab9585fad2260278713891fc3e42efd8
|
|
| BLAKE2b-256 |
32adae9d7c1256cde0901ba34ee5a8a4b5efcc723cfd5e844f1a0a651ddbf8a9
|