npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@aporthq/openclaw-aport

v1.0.22

Published

OpenClaw plugin for deterministic pre-action authorization via APort guardrails

Readme

APort OpenClaw Plugin

Deterministic pre-action authorization for OpenClaw agents.

This plugin registers before_tool_call and evaluates every tool call against an Open Agent Passport before the tool executes.

Recommended install

Use the published setup command. No repo clone is required.

npx @aporthq/aport-agent-guardrails openclaw

If you already have a hosted passport on aport.io, pass the agent_id:

npx @aporthq/aport-agent-guardrails openclaw ap_your_agent_id

That command:

  1. Chooses your OpenClaw config directory
  2. Creates a passport or wires a hosted agent_id
  3. Installs this plugin with openclaw plugins install -l ...
  4. Writes plugin config into config.yaml and openclaw.json
  5. Installs wrappers under CONFIG_DIR/.skills/ for manual guardrail and status commands
  6. Runs a setup smoke test

After setup, start OpenClaw with the generated config:

openclaw gateway start --config ~/.openclaw/config.yaml

What OpenClaw already gives you

OpenClaw already ships sandboxing, tool policy, elevated exec controls, and install-time scanning. Those are real security controls, not marketing copy.

What APort adds

APort complements those controls with external authorization and audit:

  • per-agent passports and capability limits
  • parameter-aware deny decisions, not just static tool allowlists
  • local or hosted kill switch by suspending the passport
  • signed decision receipts and centralized audit in API mode
  • the same authorization model across OpenClaw and other frameworks

If OpenClaw's built-in sandbox and tool policy are enough for your deployment, use them. If you need portable authorization, identity-scoped limits, or fleet-wide kill switch and audit, add APort on top.

Development install

If you are working from a local checkout, install the plugin directly from the extension directory:

openclaw plugins install -l /path/to/aport-agent-guardrails/extensions/openclaw-aport

Then configure it in your OpenClaw config:

plugins:
  enabled: true
  entries:
    openclaw-aport:
      enabled: true
      config:
        mode: api
        passportFile: ~/.openclaw/aport/passport.json
        apiUrl: https://api.aport.io
        failClosed: true
        allowUnmappedTools: true

Hosted passport mode uses agentId instead of passportFile.

Modes

API mode

  • Uses fetch() directly from the plugin
  • Returns signed decisions from api.aport.io
  • Configure apiKey in plugin config if your deployment requires it

Local mode

  • Uses the built-in JavaScript evaluator shipped with the plugin
  • No child_process spawn is required
  • guardrailScript remains as a legacy compatibility field for manual smoke tests and shell tooling, but current plugin versions do not depend on it for local-mode enforcement

Tool mapping

The plugin keeps the existing OpenClaw-specific tool mappings. Common examples:

  • exec, exec.run -> system.command.execute.v1
  • git.create_pr, git.merge, git.push -> code.repository.merge.v1
  • message.send -> messaging.message.send.v1
  • read, view, glob -> data.file.read.v1
  • write, edit, multiedit -> data.file.write.v1
  • mcp__* -> mcp.tool.execute.v1

allowUnmappedTools: true keeps the previous OpenClaw compatibility behavior for custom skills and unmapped tools.

Exec behavior

exec is OpenClaw's main shell-style tool. By default the plugin maps it to system.command.execute.v1 and checks the underlying command against limits["system.command.execute"].allowed_commands in the passport.

If the plugin sees a delegated guardrail invocation such as aport-guardrail-bash.sh <tool> <json>, it unwraps the inner tool and evaluates that policy instead of treating the wrapper as an ordinary shell command.

Troubleshooting

Plugin install failed

Current OpenClaw releases perform install-time security scanning. This plugin is designed to pass that scan, but if installation still fails:

  1. Make sure you are installing the current package version
  2. Prefer the setup command npx @aporthq/aport-agent-guardrails openclaw
  3. For local development, install from the extension directory with -l

Existing source-linked config points into an old npx cache

Re-run the setup command. The installer removes stale plugins.load.paths and plugins.installs.openclaw-aport entries so OpenClaw does not keep pointing at a transient ~/.npm/_npx/... directory.

Notes

  • Current public OpenClaw integration is plugin-based
  • No upstream native guardrail-provider merge is required for this plugin path
  • If OpenClaw later ships a native provider seam, APort can support that as an additional path without replacing the current plugin install flow