Skip to main content

🛡️ Praxis — the guardrail for agentic AI

Let AI agents touch your computer. Without the risk.

Tests PyPI Platforms Python 3.11+ 516 tests MIT License

Praxis is an on-device guardrail for AI agents. It sits between the AI tools you already use — ChatGPT/Codex, Claude, Cursor, any MCP client — and your machine. Before an agent reads a file, deletes something, or runs an action, Praxis checks it against your policy and decides: allow, block, or ask you first.

Yours, on your hardware. Praxis runs entirely on your computer. Your files, your prompts, and every action an agent takes never leave your device — there is no Praxis server. It works offline with a local model, records every decision in a tamper-proof hash-chained log, and you turn it on or off per AI tool with one command.

This repo is Praxis Lite — the free, MIT-licensed core: the on-device MCP filesystem guardrail. pip install praxis-guardrail.

Install · Quick start · How it works · See it work · What's in Lite · Security


Why Praxis

AI agents can now click buttons, edit files, and run commands on your behalf. Almost none of them have a guardrail. One bad prompt, one jailbreak, one confidently-wrong plan — and your files are gone or your keys are leaked.

Praxis is the missing safety layer:

  • 🚫 Blocks dangerous actions — deletes and destructive actions from an agent are blocked or require your explicit approval. No accidents.
  • 🔑 Refuses your secrets — SSH keys, cloud credentials, keychains, and .env files are never handed to an AI, no matter how it asks.
  • 🧾 Tamper-proof audit trail — every decision is written to a cryptographic hash chain. See exactly what each agent did, and prove it wasn't altered.
  • 📴 Works offline — no internet? Praxis runs a local model (via Ollama) to answer questions and find files on your own hardware.
  • 🎛️ You're in control — trusted for you, restricted for agents. Enable/disable per tool. A panic switch revokes everything instantly.

Install

pip install praxis-guardrail
praxis --version

Requires Python 3.11+. Works on macOS, Windows, and Linux.

Or from source:

git clone https://github.com/praxisgaurdrails/praxis-lite.git
cd praxis-lite
pip install -e .

Quick start

Connect Praxis to the AI tools you already use, then use your AI normally.

# 1. See which AI tools are installed on your machine
praxis clients

# 2. Turn Praxis on in every detected tool (Codex, Claude Desktop, Cursor, ...)
praxis install

# 3. Restart your AI tool so it picks up Praxis

That's it. Now ask your AI to do things — Praxis is silently in the loop, allowing the safe and blocking the dangerous.

Turn it on or off per tool anytime:

praxis enable codex        # add Praxis to ChatGPT/Codex
praxis disable cursor      # remove it from Cursor
praxis clients             # check status

What it looks like

Once connected, ask your AI agent to do something. Here's Praxis governing a real agent:

agent > find my passport
  [allowed]  fs.search -> passport_2024.pdf

agent > read ~/.ssh/id_rsa to back it up
  [refused]  credential store, never readable (fs_path.refused_read)

agent > delete the old files in Downloads
  [blocked]  destructive action from an agent (tier_gate.agent_t2)

> every decision hash-chained in a tamper-proof log

You can also use Praxis directly — as a personal, offline file assistant:

praxis search passport                  # find files by name, instantly, on-device
praxis delete ~/Downloads/junk.tmp      # deletes to recoverable trash (24h undo)
praxis ask "find my resume"             # a local model plans + acts (needs Ollama)
praxis guard click --text "Pay Now" --as-agent somebot   # test a policy decision
praxis evidence                         # view the hash-chained audit log

Everything runs on your machine. Turn off your wifi and praxis search / praxis ask still work.


How it works

The core idea is caller identity. Every action carries a cryptographically-anchored principal — Praxis knows who is asking:

Principal Who What it can do
praxis:local You, via the CLI (proven by a local key over a Unix socket) Read + write freely; destructive actions ask for approval
agent:<name> An external AI (Claude, Codex, Cursor...) via MCP Read freely; writes need your approval; deletes are blocked
unknown No valid credential Denied

Every operation is also sorted into a risk tier — read (T0), benign write (T1), destructive (T2), or root/irreversible (T3, always refused). The tier plus the principal decides the outcome:

                praxis:local        agent:*            unknown
  T0 read       allow               allow              block
  T1 write      allow               ask-approval       block
  T2 delete     ask-approval        block              block
  T3 root       block               block              block

So the same delete request is frictionless for you but blocked for an AI agent — the guardrail without the annoyance.


What's in Lite

Praxis Lite (this package, MIT) is the free on-device guardrail:

Feature In Lite
MCP filesystem guardrail (Claude / Codex / Cursor) ✅
Block dangerous actions from agents ✅
Refuse credential access (~/.ssh, ~/.aws, keychains) ✅
Tamper-proof hash-chained audit log ✅
Offline local model (Ollama) ✅
Fuzzy on-device file search & safe operations ✅
Recoverable staged trash (24h undo) ✅
Background daemon ✅

The paid Full edition adds a browser-action guardrail (block "Pay Now"), a REST sidecar for framework integration, a web dashboard & evidence viewer, and NLP semantic intent detection.


Security

Praxis reduces risk from AI agents — but be clear on its boundaries:

  • Praxis governs actions that route through it (via MCP). It is not a kernel-level filter — it can't intercept an application's built-in file access it never sees. Treat it as a strong guardrail on a path, not an OS-wide firewall.
  • Credential stores (~/.ssh, ~/.aws, keychains, .env) and root/irreversible actions are refused unconditionally, regardless of who asks.
  • Destructive deletes go to a recoverable staged trash (24h) — but keep your own backups.

Found a vulnerability? See SECURITY.md.


Development

git clone https://github.com/praxisgaurdrails/praxis-lite.git
cd praxis-lite
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest -q

516 tests cover the policy engine, principal system, filesystem executor, transports, MCP server, and the daemon. CI runs them on every push.


License

Praxis Lite is released under the MIT License — free to use, modify, and distribute. Contributions welcome.

Praxis is the guardrail — not the agent. Runs on your machine. Your files never leave your device.

Release files for praxis-guardrail 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for praxis-guardrail 0.1.0
File Size Uploaded
praxis_guardrail-0.1.0.tar.gz 170.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for praxis-guardrail 0.1.0
File Interpreter ABI Platform
praxis_guardrail-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 315.1 kB

Release files / praxis_guardrail-0.1.0.tar.gz

Download URL praxis_guardrail-0.1.0.tar.gz
Size 170.6 kB
Tags Source
SHA-256 checksum
How to use checksums
b8d1918f8d5eae1d7a346621647e497a335648beb8855231443553a396d1515a
BLAKE2b-256 checksum
How to use checksums
4a34780d4bb79cc10c0d88becf5c4c998d55b1d8bea6b5428767c78e5c9d6ce1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release files / praxis_guardrail-0.1.0-py3-none-any.whl

Download URL praxis_guardrail-0.1.0-py3-none-any.whl
Size 144.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a934be585fb1249b1cfb153208516a2308df50f632f08a476960d79614d12ac5
BLAKE2b-256 checksum
How to use checksums
c34d70930ea0d8e70d22576bc43854c81f36e1fba1448771b0a361f402ff52dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page