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

@dominquechurch/dom-agent

v0.1.0

Published

dom — a terminal coding agent. OpenRouter-only, runtime model switching, Windows-first.

Downloads

192

Readme

██████╗   ██████╗  ███╗   ███╗
██╔══██╗ ██╔═══██╗ ████╗ ████║
██║  ██║ ██║   ██║ ██╔████╔██║
██║  ██║ ██║   ██║ ██║╚██╔╝██║
██████╔╝ ╚██████╔╝ ██║ ╚═╝ ██║
╚═════╝   ╚═════╝  ╚═╝     ╚═╝

CI npm License: MIT OpenRouter

dom is a terminal coding agent that runs entirely on OpenRouter (bring your own key), lets you switch models mid-session, and ships with a web UI that visualizes your agents as figures moving around an office floor.

dom office floor Office floor — manual agents across all zones, two live sessions, file browser, goal bar

Why dom

Most coding agents lock you to one model. dom runs on any of hundreds of models via OpenRouter — switch from Sonnet to DeepSeek mid-session and your history survives intact. Verified live.

It is Windows-first, where most tools treat Windows as an afterthought: real path handling, a working ConPTY terminal, and CI that runs the full suite on windows-latest.

Prompt caching gives a measured ~12× cost reduction on cached turns.

And the browser UI is not a dashboard bolted on the side — it is a live pixel-art office floor where every agent, background job, and sub-agent is a figure at a desk, working in real time.

What it has

  • Any OpenRouter model, switched at runtime/model mid-session, no restart, conversation history carries over
  • Browser UI with an animated office floor — agents as figures in zones (coordinator, planning, coding, application, sub-agents), each showing what it is doing right now
  • MCP client — connect Context7, Playwright, Chrome DevTools, or any MCP server
  • Obsidian vault memory — browse your vault, save messages as notes, and auto-save by intent into Code/, Decisions/, and Research/
  • Sub-agents with isolated context budgets — parallel or scoped work on a restricted tool set, with per-sub-agent cost accounting
  • Tree-sitter repo map, PageRank-ranked — structural map of the codebase with the most central files first, so edits are grounded
  • Web terminal, file browser, diff viewer, webhook inspector — a real ConPTY shell in the browser, streaming diffs, and a replayable webhook capture buffer
  • Goal bar with an automated verifier loop — hold an agent to a goal; a read-only reviewer checks each turn's diff and steers it back on fail
  • 90 automated test suites — offline, isolated, run on every push
  • BYOK — your key stays in ~/.dom/.env, and there is no telemetry

dom model picker Runtime model switching — full OpenRouter catalog in the browser

Also in the box: 15 built-in tools (read, write, edit, glob, grep, bash, http, web_search, task, todo, memory, oracle, view_image, send_message, list_tabs), multi-session tabs, inter-agent messaging, a skills system, plan mode, hooks, and auto-commit on every successful edit.

Install

npm install -g @dominquechurch/dom-agent
echo "OPENROUTER_API_KEY=sk-or-..." >> ~/.dom/.env
dom

Optional keys:

BRAVE_API_KEY=BSA...             # enables the web_search tool (Brave Search API)

To route groq/-prefixed models natively to Groq, add a Groq key to ~/.dom/config.json:

{ "groqApiKey": "gsk_..." }

Usage

dom                       # start the TUI
dom serve                 # start the web UI (office floor, file browser, terminal)
dom -p "prompt"           # pipe mode: one turn, final answer to stdout, exit

dom serve prints a LOCAL and a LAN URL, each with a scannable QR code — point your phone's camera at the LAN one to drive the same session from the couch. Both carry the session token, which is what gates access.

Common in-session slash commands:

  • /model — switch the active model (session-scoped)
  • /serve — start the web server from inside a running session
  • /vault — switch the working root to your configured Obsidian vault
  • /init — generate an AGENTS.md for the current repo
  • /map — show the tree-sitter repo map
  • /plan — enter plan mode (propose before editing)
  • /yolo — allow all tools (dangerous commands still prompt)
  • /cost — show token usage and spend for the session
  • /undo — revert the last agent commit
  • /jobs — list background jobs

Type @ to attach files and / to autocomplete commands.

Keys & network

Your key never leaves your machine. Keys are read at request time from ~/.dom/.env (or ~/.dom/config.json for Groq), are never bundled with the package, and are never sent anywhere except the service they belong to. There is no telemetry — dom does not phone home.

dom makes outbound HTTP(S) requests to:

  • OpenRouter (openrouter.ai) — every model call, plus the public /models catalog. Uses OPENROUTER_API_KEY.
  • Groq (api.groq.com) — only when you run a groq/-prefixed model; fetches its /models and routes chat completions natively. Uses groqApiKey from ~/.dom/config.json. Skipped entirely if no Groq key is set.
  • Brave Search (api.search.brave.com) — the web_search tool. Uses BRAVE_API_KEY. Skipped if unset.
  • Arbitrary public hosts — the http tool fetches URLs you (or the agent) request. Loopback, private-network, and cloud-metadata addresses are refused. Secrets are never inlined: reference them as ${VAR_NAME} and the value is pulled from ~/.dom/.env at send time.

See SECURITY.md for the permission model and how the dom serve token gate works.

Development

git clone https://github.com/DOMCHURCH/dom.git
cd dom
npm install
npm run build
npm link
npm run verify      # 90 test suites
npm run eval        # 10-task eval harness

Contributions welcome — see CONTRIBUTING.md for the test conventions, how to add a skill, and PR guidelines.


MIT © 2026 Dominique Church