This release is a pre-release and may not be stable for production use.
Elytra
Local guardrails for coding agents. Elytra checks what Claude Code, Codex, Grok and Antigravity do (shell commands, file edits, web access and MCP tool calls) and holds consequential actions for your decision before they run.
Elytra is early access software. Everything runs on your machine: the runtime, the console and the decision records. An account is optional.
Website and documentation: https://elytra-labs.vercel.app
Install
Python 3.11 or newer, on macOS or Linux.
pipx install elytra-mcp # or: python3 -m pip install elytra-mcp
elytra setup # guided, asks before it changes anything
# restart your agent, then work as usual
elytra open # review held actions in the local console
elytra status # what is protected
elytra uninstall # restore every agent configuration exactly
What setup does
- Runs the local runtime as a background service (launchd on macOS,
systemd --useron Linux). - Installs action hooks for Claude Code, Codex (a local plugin you trust once), Grok and Antigravity.
- Wraps local stdio MCP servers for Claude Code, Cursor, Claude Desktop, Windsurf, VS Code, Antigravity, Codex and Grok, with a backup of each configuration.
- Offers suggested classifications for recognized MCP servers. Unlisted or changed tools wait for your review.
- Applies a guardrail preset.
| Preset | Behavior |
|---|---|
| Balanced (default) | Reads run. Writes run in a clean session. Writes after the agent reads untrusted content, sends, and deletes ask you. Sending data out after untrusted reads is blocked. |
| Cautious | Every write and send asks you. |
| Autonomous | Only destructive actions ask you. Sending data out after untrusted reads is blocked. |
Agent actions are classified as reads, untrusted web reads, edits, unrecognized commands (treated as writes), sends (push, post, publish, upload), and deletes or history rewrites.
When an action needs you, Claude Code and Grok show their own prompt with Elytra's reason. Codex, Antigravity, and any agent running with permissions bypassed wait up to ten minutes while Elytra sends a desktop notification; an action nobody approves is denied.
Approve from your phone
Codex, Antigravity and agents running with permissions bypassed wait up to ten minutes when Elytra holds an action. To decide from another device, link a free account (GitHub or Google sign-in):
pipx install 'elytra-mcp[cloud]' # the link needs the cloud extra
elytra link
Held actions then appear in your dashboard at https://elytra-labs.vercel.app/app/. Your guardrails, history and decisions stay on your machine; only redacted summaries of held actions are sent, never tool results or credentials. A decision is signed, bound to that exact action and checked by your machine before anything runs. If the link is down, the action keeps waiting for you. elytra unlink stops it.
Limits
- Shell classification is a heuristic. A disguised command, or a script the agent writes and runs, may only be recognized as an unrecognized command, which is treated as a write.
- Self-protection is best-effort. Elytra denies agents reading its credentials or calling its local API, but any process running as you can read your files.
- Coverage is per agent process, not per conversation.
- If the runtime is not running, actions go through with a visible warning, unless you set up with
--fail-closed. - Remote HTTP MCP servers are not proxied; their calls are seen through agent hooks.
Read what Elytra does and does not establish before relying on it.
Python integration
Orchestrators that create runs explicitly can use the SDK directly:
from mirage_mcp.sdk import RuntimeClient
owner = RuntimeClient()
run = owner.create_run(intent="Inspect an issue", grants=[])
scoped = owner.for_run(run["run_id"], run["run_token"])
See the documentation for exact grants, approvals and the stdio bridge.
Upgrade and uninstall
pipx upgrade elytra-mcp && elytra service restart
elytra uninstall && pipx uninstall elytra-mcp
Local records in ~/.elytra remain until you delete them.
Source: https://github.com/elytra-labs/elytra-mcp · Apache-2.0 licensed. "Elytra" and the Elytra logo are trademarks; see TRADEMARKS.md in the repository.
Metadata
Release files for elytra-mcp 0.4.0a2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| elytra_mcp-0.4.0a2.tar.gz | 565.9 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| elytra_mcp-0.4.0a2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 976.8 kB
Release files / elytra_mcp-0.4.0a2.tar.gz
| Download URL | elytra_mcp-0.4.0a2.tar.gz |
|---|---|
| Size | 565.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d0a7b3be8db5163d5b548437bc539cbd4b328d30e02a37277c20385fe1595653
|
|
BLAKE2b-256 checksum How to use checksums |
5810f6ade643b98cb60c3f95a24af49f508bd5de4ed25fc8b8f3b43d0dfbe39e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Release files / elytra_mcp-0.4.0a2-py3-none-any.whl
| Download URL | elytra_mcp-0.4.0a2-py3-none-any.whl |
|---|---|
| Size | 411.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6d86cded2cdc579ea03673c81e440f1ae8d9a514f5271449f46b0575ae7004c2
|
|
BLAKE2b-256 checksum How to use checksums |
0b6c909928bcf67c53e9b268b02c76c28afe3418a42c8c70f3bf4bdfc70a564e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Security for elytra-mcp 0.4.0a2
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.