by AndrewDryga
Let AI agents investigate and operate infrastructure through declared actions, bounded by policy and host-side checks. Approvals when required, with an audit trail. By Protectorate.
# Add to your Claude Code skills
git clone https://github.com/AndrewDryga/emisarLast scanned: 7/25/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-07-25T06:17:49.092Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}See how emisar compares with popular alternatives.
emisar is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by AndrewDryga. Let AI agents investigate and operate infrastructure through declared actions, bounded by policy and host-side checks. Approvals when required, with an audit trail. By Protectorate. It has 339 GitHub stars.
Yes. emisar passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/AndrewDryga/emisar" and add it to your Claude Code skills directory (see the Installation section above).
emisar is primarily written in Elixir. It is open-source under AndrewDryga on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh emisar against similar tools.
No comments yet. Be the first to share your thoughts!
30 days in the Featured rail · terms & refunds
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
Automated security scan — not a certification.
Leave the agent working. Keep production authority bounded.
emisar gives MCP-capable agents a catalog of declared infrastructure actions instead of a shell. Policy decides what runs, what waits for a person, and what is denied. A small outbound-only runner checks the action again on the host before it executes anything.
Start with the public pack catalog and let emisar suggest the packs that match a host. Add your own actions without adding another MCP server to every client.
You need an emisar account, a Linux host with
systemd, and sudo. GitHub CLI with gh attestation verify --bundle checks the
release signature. Without GitHub CLI, the installer asks before it continues
with only the checksum. With --yes, it warns and continues. Allow outbound
HTTPS to emisar.dev:443, registry.emisar.dev:443,
tuf-repo-cdn.sigstore.dev:443, and tuf-repo.github.com:443. The last two
serve the public trust roots used to authenticate release checksums. No GitHub
login is required.
GitHub is the optional release fallback. If you want that fallback, also allow
api.github.com:443, github.com:443, and
release-assets.githubusercontent.com:443.
In the console, choose Connect a runner. Copy the generated command; it contains a fresh, single-use enrollment key.
Run it on the host:
curl -fsSL https://emisar.dev/install.sh \
| sudo EMISAR_ENROLLMENT_KEY=emkey-enroll-... bash
The installer authenticates the signed release checksum and verifies the archive against it. It then creates the service, installs host-matched starter packs, and starts the runner.
Confirm the runner is online in the console, then dispatch
linux.uptime with a reason. You are done when the output appears and the
run is present in the audit trail.
Open AI agents and connect your client. Remote MCP clients use OAuth;
local stdio clients can use the emisar-mcp bridge and its browser approval
flow.
The complete walkthrough, including expected output and troubleshooting, is at
emisar.dev/docs/quickstart. An agent can
perform and certify the setup with the public
install-emisar skill.
AI client
| MCP: discover actions, request one with typed arguments
v
emisar control plane
| authenticate, scope, apply policy, wait for approval when required
v
outbound-only runner
| verify pack hash, validate arguments, enforce local limits
v
declared host command
stream redacted output, journal the attempt, update fleet audit
The action pack defines the contract: the executable, argv shape, argument schema, risk, timeout, output limits, redaction, and side-effect description. The model selects from that contract; it does not invent a command line for the runner to execute.
Adding a pack adds capabilities behind the same MCP surface. Operators do not need to deploy another tool server or reconfigure every agent when the catalog changes.
Read the exact guarantees, limitations, and threat model in
.agent/kb/specs/security-model.md.
execute(command) tool or a replacement for SSH.The staging-only shell pack is the explicit break-glass (emergency-only)
exception to the declared-action model. It is critical-risk, default-denied,
never suggested, and should not be installed on production runners.
| Goal | Start here |
|---|---|
| Install, upgrade, harden, or diagnose a host | runner/README.md |
| Connect Claude, ChatGPT, Cursor, Codex, or another MCP client | Connect a CLI agent |
| Inspect or develop the stdio bridge | mcp/README.md |
| Browse, install, or author action packs | packs/README.md |
| Let an agent install emisar, connect a client, or author a pack | skills/README.md |
| Review architecture and trust boundaries | .agent/kb/architecture.md |
| Review protocol contracts | .agent/kb/specs/wire-protocol.md and .agent/kb/specs/mcp-api.md |
| Contribute to the control plane | portal/README.md |
| Review the production GCP infrastructure | infra/README.md |
portal/ Elixir/Phoenix control plane, operator console, website, and MCP API
runner/ Go host runner and operator CLI
mcp/ Go stdio-to-HTTP MCP bridge
packs/ Versioned action-pack catalog
skills/ Standalone customer skills for coding agents
infra/ Production Terraform for emisar on Google Cloud
run Root contributor command for development, tests, gates, and operations
dev/ Development Compose topologies, images, configs, and fixtures
tools/ Go implementations behind the contributor command and CI
dist/ Tracked distribution packages plus ignored generated build output
.agent/kb/ Repository architecture, specifications, runbooks, and rules
Each top-level project has its own AGENTS.md with its architecture, security
rules, and verification gate. Run ./run help for the complete list of
contributor commands.
The recommended path needs only Coop and Docker on the host. It installs every tool version the repository pins in the isolated project image:
./run bootstrap # works before Go is installed
coop build # build the pinned project image once
coop run -- ./run setup # sidecars, deps, migrations, browser tooling
coop shell # enter the development box
Then, inside the shell:
./run seed # explicit, idempotent demo data
./run serve # live reload at the URL printed by Coop
# or: ./run serve --iex
For native development, install the exact versions in .tool-versions with
asdf. You also need Git, Coop, Docker, the PostgreSQL client, ShellCheck, jq,
GNU Bash (with read -N), GNU coreutils, Chrome/Chromium, and ImageMagick. On
macOS, Apple's bundled Bash and BSD utilities cannot run all pack regression
checks:
brew install bash coreutils jq
export PATH="$(brew --prefix coreutils)/libexec/gnubin:$(brew --prefix bash)/bin:$PATH"
./run setup checks all prerequisites before starting services; ./run doctor reports every detected version and any mismatch to fix. On macOS,
run ./run certs trust once for this workspace after setup.
The fast loop runs Phoenix in the current environment and keeps only PostgreSQL and Keycloak in the workspace-isolated Coop dependency stack.
./run urls prints this workspace's distinct Portal, metrics, Postgres, and
Keycloak URLs. Coop forks inherit the same setup but receive different ports and
volumes. Setup, serve, and reset never apply seeds unless you ask for them.
Use ./run status for a read-only view of the current workspace,
./run logs [db|keycloak] for its exact sidecar logs, and ./run psql for its
development database. Every canonical gate (./run gate <project>) prints its
current phase and elapsed time; a failure names the phase that stopped it.
The root docker-compose.yml remains the slower packaged topology with the
release Portal image, seeded demo data, three runners, MCP, and signing. Start it
with ./run smoke; it serves http://localhost:4010. See
portal/README.md and dev/README.md.
This repository is dual-licensed:
runner/, mcp/, and packs/ are open source under the
Apache License 2.0. You can inspect, build, package, and
operate the on-host components independently.portal/, is source-available under the
Business Source License 1.1. Non-production use is free.
Production use is permitted only as needed to operate the Apache-licensed
components or the hosted service under the Additional Use Grant. Other
production use requires a commercial license. Each version converts to
Apache 2.0 on its Change D