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

aio-terminal

v0.9.0

Published

All-in-one AI terminal manager — a persistent conductor that delegates each task to the AI worker best suited for it, using the CLIs/subscriptions you already have (Claude Code, Codex CLI, Gemini CLI, Kimi Code CLI) plus cheap APIs (DeepSeek, Gemini API).

Readme

aio-terminal

aio is a master-agent terminal REPL: a persistent manager you converse with, which delegates each task to the cheapest worker agent that can do it well, using the CLIs/subscriptions you already pay for (Claude Code, OpenAI Codex CLI, Gemini CLI, Kimi Code CLI) plus cheap APIs (DeepSeek, Gemini API). It's not a one-shot dispatcher — it narrates who it's using, relays and synthesizes their results, and keeps conversation context across turns, the way a conductor manages a team rather than just routing a call.

$ aio
aio manager — your persistent AI conductor. Type /help for commands, /agents to see your team.
  (manager runs on deepseek)

you › translate "good evening" to Chinese
manager › 晚上好 (wǎn shàng hǎo)

you › write a python script that renames all files in a folder to kebab-case
manager › Handing this to codex — needs real code and file-system logic.
  ⇢ codex working...
manager › Here's the script — it splits the extension, converts the rest to
lowercase kebab-case, and avoids collisions:
```python
...
```
  — via codex

you › now make it handle spaces too
manager › The current version already turns spaces into hyphens (via the
regex step) — want me to also cover unicode accents, or is this good?

Install

npm i -g aio-terminal

First-run setup

aio has nothing of its own to log in to — it uses the CLIs and keys you already have.

Already using Claude Code, Codex, or Kimi? Nothing to set up. aio detects claude, codex, kimi on PATH and uses their own logins. gemini also needs GEMINI_API_KEY.

No CLI yet? Add a cheap DeepSeek key. Either works, and env wins if both are set:

export DEEPSEEK_API_KEY="sk-..."   # in ~/.zshrc or ~/.bashrc

or run aio setup and paste the key when prompted — it's saved to ~/.config/aio/config.json under "keys". The file is written with owner-only permissions (0600).

The first time you run aio with no workers detected, it runs this setup automatically.

Check: aio status probes every detected worker with a real request.

A couple of gotchas:

  • Env vars set with a bare export in one terminal tab don't exist in other tabs — put them in the rc file instead.
  • Kimi has no read-only sandbox, so a delegated edit task will edit files.

Usage

Default mode — opens the manager REPL:

aio

Manager REPL slash commands

| Command | What it does | |---|---| | /agents | Table of detected workers, cost labels, and cached ✅/❌ | | /use <worker> | Pin all delegation to <worker> until /use auto | | /use auto | Unpin — let the manager choose again | | /compare <task> | Fan the same task out to every available worker concurrently, print each answer, then the manager synthesizes which is best (Perplexity-style multi-model compare) | | /open <worker> | Full interactive handoff to that worker's own CLI (stdio inherited); returns to the manager REPL on exit | | /status | Live-probe every detected backend with a real request | | /help | List these commands | | exit / quit | Leave the REPL |

The manager can also start a compare on its own — just ask in plain language ("run this past all the workers", "get everyone's take", "compare them side by side") and it fans the task out in one turn rather than delegating serially.

v1: one-shot mode

One-shot mode — triage picks a backend, prints the answer to stdout:

aio "capital of France? one word"

Piped stdin also runs one-shot mode:

echo "summarize this changelog" | aio

Force a specific backend, skipping triage:

aio -m claude "review this diff for bugs"   # one-shot on the forced backend
aio -m codex                                 # interactive, no triage
aio -m ds "2+2? one word"                    # ds = deepseek

Check which backends are configured and reachable right now:

aio status

Backend setup

| Backend | Needs | Kind | |----------|-----------------------------------------|------| | claude | claude CLI on PATH (Claude Code) | cli | | codex | codex CLI on PATH (OpenAI Codex CLI) | cli | | gemini | gemini CLI on PATH + GEMINI_API_KEY | cli | | kimi | kimi CLI on PATH (Kimi Code CLI), logged in | cli | | deepseek | DEEPSEEK_API_KEY env var | api |

Two things about kimi specifically: it has no read-only sandbox mode, so a delegated task that asks it to edit files will edit them; and /open kimi opens its TUI empty, because kimi takes no positional prompt — retype the task there.

Only detected backends are shown/used. Optional overrides go in ~/.config/aio/config.json:

{
  "backends": {
    "gemini": { "model": "gemini-2.5-flash", "enabled": true },
    "claude": { "model": "haiku" }
  },
  "keys": {
    "deepseek": "sk-..."
  }
}

Keys in the file are only used when the matching env var isn't already set.

Which backend manages

The manager is the agent you actually talk to: it holds the thread, picks the worker, and synthesizes what comes back. So it takes the best detected backend, not the cheapest — claude → codex → kimi → gemini → deepseek. Cheapness belongs in the workers, where the long calls happen.

If the manager's backend hits a usage or rate limit mid-session, aio steps down to the next one and says so, rather than failing the turn.

Set AIO_ASCII=1 if your terminal has no emoji font — worker mascots fall back to plain dots.

Note on the name

There's an unrelated aio-cli package (Adobe I/O CLI) that also installs an aio binary. If you already have Adobe's aio installed globally, installing aio-terminal will collide on the binary name — uninstall one or the other, or install this one to a project-local node_modules/.bin instead of globally.

License

MIT