LACP CLI

LACP runs Claude Code, Codex and Hermes through local policy gates, budgets and an evidence log, and rolls back failed changes

  • 310 ★ on the repository
  • Last commit
  • MIT
CLI

Broad access

Why this level

  • `lacp adopt-local` wraps the claude and codex calls, and the hook profiles step into every Claude Code session turn
  • The installer runs a script from the repository, and `lacp brain-ingest` downloads links and writes notes into your Obsidian vault
  • Remote execution through Daytona or E2B sends tasks to an outside service, but only after an operator enables it explicitly
All reasons and checks

0xnyk/lacp

Install

Manual install

brew tap 0xNyk/lacp && brew install lacp

The method the README recommends. The Homebrew bottle can lag behind main; `brew install --HEAD lacp` installs the current branch.

Access and checks

How we review

Broad accessThe tool can change data, run commands or handle secrets.

  • `lacp adopt-local` wraps the claude and codex calls, and the hook profiles step into every Claude Code session turn
  • The installer runs a script from the repository, and `lacp brain-ingest` downloads links and writes notes into your Obsidian vault
  • Remote execution through Daytona or E2B sends tasks to an outside service, but only after an operator enables it explicitly

This is third-party code. Review the repository files before installing.

What it does

LACP is a set of `lacp` commands in bash and Python that runs on your machine and sets a contract around an agent run. The agent host still supplies the model, tools and session: Claude Code, Codex or Hermes. LACP decides where a command may execute, which danger class it belongs to (safe, review or critical), when approval is needed, which evidence to keep and how to restore state after a failed change. `lacp run` passes a task through the policy and the budget of its danger class. A context contract checks the host, working directory, git branch and remote targets. `lacp adopt-local` wraps the claude and codex calls, and the README calls that wrapping reversible. Claude Code gets Python hooks: `pretool_guard.py` blocks dangerous operations before they run (publishing a package, `chmod 777`, fork bombs, secret reads) and `stop_quality_gate.py` checks the result when a session stops. The hook profiles minimal-stop, balanced, hardened-exec and quality-gate-v2 are applied with `lacp claude-hooks apply-profile <profile>`. Then come five memory layers and orchestration. Memory covers sessions under `~/.claude/projects/`, a knowledge graph in an Obsidian vault, ingestion of text, audio, video and links with `lacp brain-ingest`, an optional GitNexus code graph and a persistent agent ID with a hash-chained provenance record. Orchestration: `lacp worktree create` isolates files, `lacp up` starts several instances and `lacp swarm launch` sends a batch of jobs from a manifest. Remote execution through the Daytona and E2B adapters stays off until an operator enables it. Before a pull request, `lacp pr-preflight` gathers the results of browser and API smoke runs.

Who it is for. Developers who run Claude Code and Codex on their own machine and want reproducible runs with explicit pass/fail gates and artifacts they can inspect after the run.

Good fit when

  • An agent updates dependencies and runs tests, and the run must pass the policy and the budget of its danger class (`lacp run`)
  • Before a pull request you need evidence: browser and API smoke runs and a final `lacp pr-preflight` check
  • Three Claude Code instances work in parallel and each needs its own git worktree (`lacp up`, `lacp worktree create`)
  • Package publishing, `chmod 777` and secret reads have to be stopped by a hook before they run
  • Notes, videos and links should become structured Obsidian vault entries with their provenance recorded

Not a fit when

  • You want a managed cloud service or a chat interface: LACP is local and you maintain the policy and configuration yourself
  • Claude Code's built-in confirmations are enough and an extra layer of settings would only get in the way
  • Code has to run in a cloud sandbox by default: remote execution in LACP is off until an operator turns it on

Example request

Install LACP, run `lacp doctor --json` and show what `lacp posture --strict` checked in this repository

Limitations

  • `bash`, `python3`, `jq` and `rg` are required; `shellcheck`, `tmux` and `gh` are recommended. The installer adds missing tools by itself only on macOS through Homebrew.
  • The Homebrew bottle can lag behind main: `brew install lacp` gives release 0.10.1, `brew install --HEAD lacp` gives current main.
  • Git worktrees isolate files, not ports: you separate parallel services by port yourself.
  • `lacp adopt-local` wraps only claude and codex, and Hermes stays native without the `--with-hermes` flag.

How to disable. The Claude Code hook profile is changed with `lacp claude-hooks apply-profile`, and the README calls `lacp adopt-local` reversible without giving the undo command, so look for it in the repository docs. A package installed through Homebrew is removed with `brew uninstall lacp`.

FAQ

How is LACP different from Claude Code's confirmations?

Claude Code confirmations cover a single action inside a session. LACP sets rules around the whole run: danger class, budget, a host and branch check, saved evidence and a recovery path.

How do I install LACP and check that it works?

Through Homebrew: `brew tap 0xNyk/lacp`, then `brew install lacp`. `lacp bootstrap-system --profile starter --with-verify` creates `.env`, installs dependencies, scaffolds directories and wires the Obsidian vault, and `lacp doctor --json` reports the result.

Does any code go to the cloud?

No, until an operator enables remote execution. Everything runs locally by default, and the Daytona and E2B adapters exist for remote runs.

Which hook profiles exist for Claude Code?

Four: minimal-stop, balanced, hardened-exec and quality-gate-v2. `lacp claude-hooks apply-profile <profile>` applies one. The hardened-exec profile also logs the start and stop of subagents.

Can I run several agents in parallel?

Yes. `lacp worktree create --repo-root . --name feature-a --base HEAD` makes a separate git worktree, and `lacp up --session feature-a --instances 3 --command "claude"` starts three instances in the session. Files stay isolated while ports stay shared.

Discussion

No questions or reviews yet.

CLI tools

One runtime for Claude Code, Codex, OpenCode and more: a run counts as done only when checks the agent did not write pass

CLIBroad access606Repository stars

One config for Claude Code and Codex in every repo: shared rules, skill packs, second-model review and a destructive-command guard

CLIBroad access261Repository stars

A CLI that runs parallel Claude Code sessions from your plan, each in its own git worktree, with stage checks and a knowledge base

CLIBroad access66Repository stars

A CLI that reads local Claude Code, Codex and Hermes sessions, finds repeated failures and stages fixes for manual review

CLIExtended access73Repository stars

A personal ~/.claude for Claude Code: twelve subagents, review commands, worktree and goal skills and a Go status line.

WorkflowExtended access602Repository stars

Claudette runs several Claude Code sessions in parallel, each in its own git worktree, from a window or the console

CLIBroad access87Repository stars

Comparison with similar tools

Cards that share the main search query, and how they differ.

ToolOfficialRepository starsMain difference
LACP (this card)no310
HOL Guardyes1,094stops individual agent actions through hooks, while LACP governs the whole run: routing, budget, evidence
CC Safety Netno2,005a hook for dangerous git and file system commands only, no budgets, memory or run recovery

README in short

The README opens with a quick start covering Homebrew or the install script and three first-run commands. Four recipes follow (hardening local agents, one risky run, PR evidence, parallel agents on worktrees), then a documentation table and a control-flow diagram. The rest covers prerequisites, install options, tests and security.

README badge

Report a problem