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

dockai

v0.15.0

Published

CLI for DockAI — self-hosted Claude Code session manager

Readme

dockai

Command-line client for DockAI — a self-hosted manager for Claude Code sessions running in Docker.

The CLI talks to your DockAI server over its HTTPS/WebSocket API. It is generic: anyone running a DockAI instance can use the same dockai binary, configured per-machine with the server URL.

Install

npm install -g dockai
# or with pnpm (run `pnpm setup` once if it says the global bin is not in PATH):
pnpm add -g dockai
# or run ad-hoc without installing:
npx dockai <command>          # pnpm dlx dockai <command>

Requires Node.js 20+ (the package declares >=20).

Setup

dockai login --server https://your-dockai.example.com

It prints a short code and opens your browser (or prints the link, to open on your phone). Check the code matches, set the computer's switches, and press Pair. For scripts, --code <code> (from Settings → Your devices → Add a computer) and --token dka_… still work.

The computer is then listed in Your devices with its hostname, CLI version and, while dockai claude runs, the project it is attached to. Its switches there — Chrome (forward Claude in Chrome), Files (off · the folder you run dockai claude in · only listed folders) and Commands (run_computer_command) — decide what conversations may use on it; only you change them, on the web or the phone.

The CLI stores { serverUrl, token, deviceId } in ~/.config/dockai/config.json (0600). A token from Settings → API Tokens still works (dockai login --token dka_…, or --paste to be asked): the CLI is then unpaired and uses its command-line flags alone.

Commands

dockai login [--server <url>] [--code <code> | --token <token> | --paste] [--name <name>]
                                     Pair this computer, confirmed in the browser,
                                     and write the ~/.ssh config block
dockai logout                        Remove this computer from Your devices and
                                     clear the saved token
dockai computer                      This computer's name and switches
dockai computer allow-folder <dir>   Ask the owner to list a folder; added only
                                     on their Allow
dockai computer connect [--at-login | --off | --status [--json]] [--no-chrome]
                                     Keep this computer connected and lent to
                                     your projects with no terminal open
                                     (macOS and Linux); --at-login installs
                                     the login service, --off removes it;
                                     --status --json is what DockAI for Mac
                                     reads (no token in it)
dockai whoami                        Show the account you are signed in as
dockai projects                      List your projects
dockai status                        Server status and a project overview
dockai accounts                      Claude accounts: signed in, plan, usage
dockai accounts login [name]         Sign an account in with this browser
dockai usage                         The same as dockai accounts

dockai start <slug>                  Start a project's worker
dockai stop <slug>                   Stop a project's worker
dockai logs <slug> [--tail N] [-f]   Tail a project's logs; -f keeps following
dockai open <slug>                   Open the project's page in the dashboard

dockai claude <slug> [claude args…]  Run Claude Code in the worker, over the
                                     tunnel, in tmux — this is the main one.
                                     With nothing else it asks: a new
                                     conversation, or which one
dockai shell <slug>                  A shell in the worker
dockai code <slug>                   Open the worker in VS Code Remote-SSH

dockai sessions list <slug>          The project's conversations
dockai sessions resume <slug> <id>   Attach to one
dockai sessions handoff <slug> <ref> Carry a conversation's context into a new one
dockai push <slug> <paths…>          Copy files from here into the workspace
dockai sessions push <slug>          Bring this folder's Claude conversations into the
                                     project: asks which, never overwrites, puts the
                                     newest 3 in the Claude app (--no-remote, --all,
                                     --config-dir <dir>)
dockai paste <slug>                  Put the Mac clipboard into the workspace
dockai browser <slug>                The project's browser in your VNC viewer (Screen Sharing on a Mac)

dockai doctor [--fix]                Check this computer's setup and say how to fix it
dockai update                        Install your server's CLI when it is newer
                                     (dockai claude does this before attaching)
dockai completion [zsh|bash]         Tab completion (commands, projects, accounts)
dockai ssh-config                    Print the ~/.ssh/config block
dockai proxy <host>                  The ProxyCommand transport (not run by hand)
dockai deploy [target]               Redeploy DockAI, or a named Compose stack

Leave the project out and it asks which one, listing first the projects used from the folder you are in (or, the first time, the project whose repository the folder is a checkout of); that one is pre-selected and taken on its own after 5 seconds unless you press a key. Every list can be narrowed by typing.

Tab completion: dockai completion zsh > ~/.dockai-completion.zsh, then add source ~/.dockai-completion.zsh to ~/.zshrc (bash: the same with bash).

Flags written after the project name are passed to claude untouched, so dockai claude app --permission-mode bypassPermissions -r works. That is also why dockai's own options go before the name.

While dockai claude is attached to one project, this computer is also lent to your other running projects:

  • Each gets what its Use your computers level allows (Project → Settings → Your computer): Files and Chrome, the default, is its own checkouts on this computer — the folder you last ran dockai claude <project> from, or a listed folder, when it is a clone of the project's repository — and Chrome where its browser setting includes the laptop. Everything adds commands, the clipboard and the microphone, within the computer's switches. Off is nothing.
  • Each gets its own secret, so one project never acts as another, and every request is logged with its project in ~/.config/dockai/attach.log.
  • A conversation started from the phone in any of them can use the computer.

A project that people other than you can reach — a shared Telegram group, the assistant API, collaborators on its repository — is never lent, and only the conversation you attached gets the computer there. Lend to projects on the computer's page (Settings → Your devices) stops lending for that computer. --no-lend keeps one attachment to its own project. dockai doctor says whether this computer lends, and to which projects.

How it reaches the worker

No SSH port is published on the DockAI host. dockai login writes a Host dockai-* block into ~/.ssh/config whose ProxyCommand runs dockai proxy, which pipes stdin and stdout over an authenticated WebSocket to the worker's sshd. So ssh dockai-<slug>, VS Code Remote-SSH and the Claude app's SSH backend all work from anywhere the server is reachable — there is nothing LAN-only about it, and nothing to open on a firewall.

License

MIT — see the LICENSE in the main repo.