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

@drisp/cli

v0.5.8

Published

Workflow runtime for Claude Code with hooks, plugins, and interactive terminal observability

Readme

Drisp CLI

npm version license CI node

Deterministic orchestration for non-deterministic agents.

AI coding agents are getting better at reasoning -- but long-horizon tasks still break. Prompts drift, results vary between runs, and there's no good way to package what worked into something your whole team can reuse. The agent isn't the bottleneck anymore. The harness is.

Athenaflow is a workflow runtime for Claude Code and OpenAI Codex. It adds structured workflows, real-time observability, session persistence, and a plugin system -- so agent-driven tasks produce consistent results across runs, teams, and models.

npm install -g @drisp/cli && drisp

Read the docs -- guides, workflow authoring, plugin API, and more.

Why Athenaflow?

Coding agents work well for one-off tasks. The moment you need repeatable, multi-step execution -- e2e test generation, migration plans, release workflows -- things fall apart:

| Pain point | What goes wrong | | --------------------------- | ----------------------------------------------------------------- | | No reproducibility | Same prompt, same model, different output every time | | Long-horizon drift | Without checkpoints, agents compound small mistakes into big ones | | Prompts aren't portable | What one developer got working doesn't transfer to the team | | Black-box execution | You see the final output, not the 40 tool calls that got there | | CI as an afterthought | Most harnesses are built for interactive use, not pipelines |

Athenaflow introduces a workflow layer between you and the underlying harness. Workflows are declarative, versioned, and shareable -- they define prompt templates, multi-session loops with completion tracking, plugin bundles, isolation policies, and model preferences. The runtime handles the rest.

Workflows encode what works -- not just a prompt, but the loop logic, progress tracking, and tool config that make it reliable. Define once, run anywhere.

A marketplace for agent workflows -- browse, install, and update community-built workflows like packages.

Real-time observability -- a live terminal feed of every tool call, permission decision, and result as it happens.

Sessions persist and resume -- every run is saved to SQLite. Pick up where you left off with full state.

Harness-agnostic -- same workflows, same UI, same session model across Claude Code and Codex.

CI-native -- drisp exec runs headlessly with safe defaults, JSONL output, and structured exit codes.

Get Started

1. Install -- requires Node.js 20+ and at least one harness (claude or codex) on your PATH.

npm install -g @drisp/cli

2. Run -- the setup wizard handles theme, harness verification, and your first workflow.

drisp

3. Explore

drisp resume                              # Pick up where you left off
drisp sessions                            # Browse past sessions
drisp workflow install e2e-test-builder   # Install a workflow from the marketplace

Full walkthrough

Harnesses

| Harness | Status | Integration | | ----------------------------------------- | --------- | ---------------------------------------------- | | Claude Code | Supported | Hook events forwarded over a local Unix socket | | OpenAI Codex | Supported | Integrated via codex app-server protocol | | opencode | Planned | Adapter placeholder; not yet enabled |

Workflows

Workflows package prompt templates, loop strategies, plugin dependencies, isolation policies, and model config into a single portable unit. Anyone can author and share them.

drisp workflow list                        # See what's installed
drisp workflow search                      # Browse available workflows
drisp workflow install e2e-test-builder    # Install from the marketplace
drisp workflow use e2e-test-builder        # Set as the active workflow
drisp workflow upgrade                     # Re-sync all from source

Manage marketplace sources:

drisp marketplace add owner/repo           # Add a marketplace source
drisp marketplace add ./local/path         # Add a local marketplace
drisp marketplace list                     # List configured sources
drisp marketplace remove owner/repo        # Remove a source

Install from a local file or a specific marketplace ref:

drisp workflow install ./path/to/workflow.json
drisp workflow install e2e-test-builder@lespaceman/athena-workflow-marketplace

Author your own workflows

CI / Automation

drisp exec is built for pipelines. Safe by default -- permission and question hooks fail unless you opt in.

drisp exec "summarize risk in this PR"                                        # plain text
drisp exec "run checks" --json --on-permission=deny --on-question=empty       # JSONL
drisp exec "write release notes" --output-last-message release-notes.md       # artifact
name: drisp-exec
on: [pull_request]
jobs:
  drisp:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci
      - run: npx @drisp/cli exec "summarize risk in this PR" \
          --json --on-permission=deny --on-question=empty \
          --output-last-message drisp-summary.md
      - uses: actions/upload-artifact@v4
        with:
          name: drisp-summary
          path: drisp-summary.md
drisp_exec:
  image: node:20
  script:
    - npm ci
    - npx @drisp/cli exec "summarize pipeline status" \
      --json --on-permission=deny --on-question=empty \
      --output-last-message drisp-summary.md
  artifacts:
    paths:
      - drisp-summary.md

| Code | Meaning | | ---- | --------------------------------- | | 0 | Success | | 2 | Usage / validation error | | 3 | Bootstrap / configuration failure | | 4 | Runtime / process failure | | 5 | Non-interactive policy failure | | 6 | Timeout exceeded | | 7 | Output write failure |

Configuration

Config merges in order: global → project → CLI flags.

~/.config/athena/config.json        # Global defaults
{projectDir}/.athena/config.json    # Project overrides
{
	"harness": "claude-code",
	"model": "sonnet",
	"plugins": ["/path/to/plugin"],
	"activeWorkflow": "e2e-test-builder"
}

| Flag | Description | | --------------- | --------------------------------------------- | | --project-dir | Project directory (default: cwd) | | --plugin | Path to a plugin directory (repeatable) | | --isolation | strict (default) · minimal · permissive | | --theme | dark (default) · light · high-contrast | | --ascii | ASCII-only UI glyphs | | --verbose | Extra rendering detail |

exec-only:

| Flag | Description | | ----------------------- | ------------------------------------------------------ | | --continue | Resume most recent exec session (or --continue=<id>) | | --json | JSONL lifecycle events on stdout | | --output-last-message | Write final assistant message to a file | | --ephemeral | Disable session persistence for this run | | --on-permission | allow · deny · fail (default) | | --on-question | empty · fail (default) | | --timeout-ms | Hard timeout for the run |

| Command | Description | | ------------------- | ------------------------------------------------------------ | | (default) | Start interactive session in cwd | | setup | Re-run setup wizard | | sessions | Interactive session picker | | resume [id] | Resume most recent or specific session | | exec "<prompt>" | Headless run for CI / scripting | | workflow <sub> | install · list · search · remove · upgrade · use | | marketplace <sub> | add · remove · list |

Development

npm install && npm run build    # Build
npm test                        # Test
npm run typecheck               # Type-check
npm run lint                    # Lint
npm run dev                     # Watch mode

Files in src/harnesses/codex/protocol/generated are auto-generated from the codex app-server schema -- do not edit by hand. Refresh with:

scripts/update-codex-protocol-snapshot.mjs

Commit the output so others can build without the generator.

License

MIT