Local-first Active Context Engine for AI coding
Project description
ACE-Lite Engine
Local-first, MCP-native Active Context Engine for AI coding.
ACE-Lite avoids "dump the whole repository into the model" workflows. Instead, it runs a deterministic pipeline to distill structure, retrieve candidates with hybrid rankers, and produce a source plan (steps + constraints + selected files/chunks) you can execute and review.
If you want full-repo packing with minimal setup, consider tools like Repomix. ACE-Lite is optimized for top-k relevant context with benchmarkable retrieval quality.
Core capabilities
- Deterministic pipeline:
memory -> index -> repomap -> augment -> skills -> source_plan - Hybrid retrieval defaults: multiple rankers + fusion (lexical / semantic / graph / worktree / feedback), with fail-open behavior
- Multi-language indexing (tree-sitter): Python / TypeScript+TSX / JavaScript / Go / Solidity / Rust / Java / C / C++ / C# / Ruby / PHP
- Skill lazy-loading: route Markdown skills by query intent, load section-level content only
- Dual-channel memory: MCP primary with REST fallback
- RepoMap generation: token-budgeted repository map (
json+md) - Plugin hooks:
before/afterstage hooks via in-process and MCP runtime - Benchmark automation: quality scoring, baseline comparison, and regression gates
- Layered config:
home -> repo -> cwd -> CLI
When to use ACE-Lite
- Use ACE-Lite when you want a plan + curated context (top-k files/chunks) with deterministic, regression-tested selection.
- Use repo packers when you want full-repo context quickly and accept lower precision.
- Use DB-backed vector search when you need always-on semantic search at scale and accept backend complexity.
Positioning
ACE-Lite is designed for the middle ground between "pack the whole repo into the prompt" and "deploy a heavyweight managed context platform."
| Approach | Common shape | Tradeoff | ACE-Lite position |
|---|---|---|---|
| Repo packers | Single-file repository export or large prompt stuffing | Fast setup, but token cost and context precision can degrade on larger repos | ACE-Lite retrieves and ranks only the most relevant files/chunks, then emits a source plan |
| Managed context engines | Hosted or platform-oriented code search / semantic retrieval systems | Powerful at scale, but usually heavier to operate or adopt | ACE-Lite stays local-first and file-based, with no required external vector DB |
| Memory layers | Persistent user/project memory across sessions | Good for recall, but memory alone does not produce an execution plan | ACE-Lite includes memory, but centers the workflow on actionable code retrieval and planning |
This is also why ACE-Lite is not trying to be a full IDE or an all-in-one coding agent. Its job is narrower: give any capable model or agent a better, smaller, and more testable working set.
Why It Stands Out
- MCP-native: ACE-Lite exposes its core capabilities through MCP, which makes it usable from modern MCP-compatible clients and agent runtimes.
- Benchmarkable retrieval: ACE-Lite treats retrieval quality as something you can measure in CI, not just judge by feel.
- Local-first: the default workflow does not require a hosted backend or a separate search cluster.
- Action-oriented output: the end product is a source plan with selected files, chunks, and constraints, not just raw retrieved text.
Competitive Notes
The high-level competitive framing is directionally right, with a few important caveats:
- Repo packing is a real comparison point, but not every local coding tool is "full dump into prompt only." Some tools also maintain repo maps or lightweight retrieval layers.
- Managed products such as Augment Code and Sourcegraph do far more than simple vector search; they combine search, code intelligence, and platform integrations.
- Memory products such as Mem0 address a different layer of the stack. They are complementary more often than they are direct substitutes.
The stronger open-source claim for ACE-Lite is not "it beats every alternative everywhere." The stronger claim is that it offers a rare combination of MCP integration, deterministic retrieval, local-first operation, and built-in regression testing for context quality.
Installation
python -m venv .venv
.venv\Scripts\activate
pip install -e .[dev]
Quickstart
See docs/README.md and docs/guides/GETTING_STARTED.md for the fastest path.
One-command demo (after install):
ace-lite demo
Build index:
ace-lite index --root . --output context-map/index.json
30-second checks:
ace-lite doctor
Build RepoMap:
ace-lite repomap build --root . --ranking-profile graph --output-json context-map/repo_map.json --output-md context-map/repo_map.md
Run planner:
ace-lite plan --query "trace how benchmark thresholds are applied" --repo ace-lite-engine --root . --skills-dir skills
Local profile and memory workflows:
# Manage local profile facts
ace-lite profile add-fact "Prefer deterministic patches" --confidence 0.9
ace-lite profile show
# Store/search/wipe local memory notes with namespace isolation
ace-lite memory store "Fix auth fallback behavior" --namespace repo:ace-lite --tag kind=bugfix
ace-lite memory search "fix auth" --namespace repo:ace-lite --limit 5
ace-lite memory wipe --namespace repo:ace-lite
Service-mode runtime utilities:
# Watch layered config changes and validate reloads
ace-lite runtime watch-config --root . --max-polls 10 --poll-interval-seconds 1
# Run heartbeat + cron scheduler from `.ace-lite.yml` runtime section
ace-lite runtime run-scheduler --root . --max-ticks 5 --tick-interval-seconds 60 --simulate-clock
Run benchmark with regression gate:
ace-lite benchmark run --cases benchmark/cases/default.yaml --repo ace-lite-engine --root . --warmup-runs 1 --output artifacts/benchmark/latest --baseline artifacts/benchmark/baseline.json --benchmark-threshold-profile strict --dependency-recall-floor 0.8 --chunk-hit-tolerance 0.02 --chunk-budget-growth-factor 1.15 --validation-test-growth-factor 1.5 --fail-on-regression
ace-lite benchmark run --cases benchmark/cases/default.yaml --repo ace-lite-engine --root . --warmup-runs 1 --no-include-plans --no-include-case-details --output artifacts/benchmark/ci-fast
ace-lite benchmark report --input artifacts/benchmark/latest/results.json
PowerShell helpers:
./scripts/run_smoke.ps1
./scripts/run_benchmark.ps1
./scripts/run_benchmark_tabi_v3.ps1
Release validation
Multi-repository matrix run (3+ repos):
python scripts/run_benchmark_matrix.py --matrix-config benchmark/matrix/repos.yaml --output-dir artifacts/benchmark/matrix/latest --fail-on-thresholds
Skill routing validation across supported CLI hosts:
python scripts/run_skill_validation.py --repo-url https://github.com/blockscout/frontend.git --repo-ref main --repo-name blockscout-frontend --repo-dir artifacts/repos-workdir/skill-validation --skills-dir skills --output-path artifacts/skill-eval/blockscout_skill_validation_matrix.json --index-cache-path artifacts/skill-eval/blockscout-index.json --languages typescript,javascript --apps codex,opencode,claude-code --min-pass-rate 1.0 --fail-on-miss
Release freeze bundle:
python scripts/run_release_freeze_regression.py --matrix-config benchmark/matrix/repos.yaml --output-dir artifacts/release-freeze/latest --fail-on-thresholds
Repository layout
src/ace_lite/runtime engine and CLItests/pytest test suiteskills/Markdown skill manifests and sectionsbenchmark/cases, matrix config, scoring contractsscripts/smoke/benchmark helper scriptsdocs/architecture and operational docs
Index filtering (.aceignore)
Create a .aceignore file at the repository root to exclude low-signal paths from indexing and retrieval.
More examples: docs/reference/ACEIGNORE_COOKBOOK.md.
Example for Go repos with generated code:
# Protobuf output
*.pb.go
# Common generated naming
*_generated.go
*_gen.go
# Go mocks
mock_*.go
*_mock.go
# Vendor
vendor/
# Fixtures
testdata/
# Common contract binding locations (abigen output)
pkg/contract/
Documentation
- Start here:
docs/README.md - Getting started:
docs/guides/GETTING_STARTED.md - MCP setup:
docs/guides/MCP_SETUP.md - Architecture overview:
docs/design/ARCHITECTURE_OVERVIEW.md - Maintainer docs:
docs/maintainers/README.md - Reference docs:
docs/reference/ACEIGNORE_COOKBOOK.md
Known limitations
- Language symbol extraction is best-effort for some grammars (especially C/C++); ranking still falls back to path/module/content signals.
- Embeddings are optional, but when enabled you must keep the embedding
model+dimensionconsistent with your vector store/collection. - Design and maintainer notes live under
docs/design/anddocs/maintainers/.
Governance
- License:
LICENSE - Contributing guide:
CONTRIBUTING.md - Code of conduct:
CODE_OF_CONDUCT.md - Security policy:
SECURITY.md - Changelog:
CHANGELOG.md
Support
- Security reports: see
SECURITY.md - General issues/feature requests: open a GitHub issue with reproduction details
Project details
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 ace_lite_engine-0.3.85.tar.gz.
File metadata
- Download URL: ace_lite_engine-0.3.85.tar.gz
- Upload date:
- Size: 823.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dca9744377473e5ffe58c427cad472d8e86532ff018407e043bd1d433c579145
|
|
| MD5 |
0292503dd5f25de44c239a3e50d4c14e
|
|
| BLAKE2b-256 |
e92020f953f26e5d035f5b6c648d59c422f62327d3ca6f888f06a86794d1580b
|
File details
Details for the file ace_lite_engine-0.3.85-py3-none-any.whl.
File metadata
- Download URL: ace_lite_engine-0.3.85-py3-none-any.whl
- Upload date:
- Size: 1.0 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2de919c52a807bb8ddff2df6648c5f2466e13708d5d7ed1817baa93d80253fa0
|
|
| MD5 |
9a6fc81f0371223aecd4bc01d4500b49
|
|
| BLAKE2b-256 |
52fca1e89d5dc1c4272257bb4b346e4c5e870fb0b8f5e417dd39bd65730703eb
|