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

@juli-os/agents

v0.4.3

Published

juli-os L0 layer: the execution substrate — tmux-based agent session runtime with delivery confirmation, self-healing dispatch, PTY attach, hooks, snapshots, skills, and an ACP executor. Zero npm dependencies.

Readme

@juli-os/agents — the execution substrate (L0)

The bottom layer of the juli-os ladder: a tmux-based agent session runtime. Everything an agent host needs to run sessions reliably and nothing it doesn't — zero npm dependencies, Node built-ins only.

What you get

  • tmux client with confirmed delivery (sendTextConfirmed polls the input box reset — a swallowed Enter is re-sent, never the text), session provisioning, and a startup-time binary resolver that survives GUI-launched processes with a gutted PATH (the homebrew ENOENT class of failure)
  • PTY attach — expect-wrapped interactive terminals for xterm-style frontends
  • Provisioning dispatch — create-or-reuse session, cold-start claude pull-up, pane probes to tell "awaiting input" from "still working"
  • Self-healing — snapshot/recover loop, zombie fingerprints, context gate (auto-compact on threshold with cooldown)
  • Claude Code hooks — spec-driven install of Stop/SessionStart/PermissionRequest/ UserPromptSubmit/Notification/PostToolUse hooks so agent events flow back to your service
  • Skills — markdown skill registry with prompt expansion
  • ACP executor — protocol-level completion, preferred over tmux async when present
  • Orchestrator & voice-call scaffolding — hook manager, command registry, session assessor, and the staged-plan (discuss → proposed → confirmed) call flow

Install

npm install @juli-os/agents

Node ≥ 22.5 (type-stripping). TypeScript source in this repo, compiled JS on npm.

Usage

import { createTmuxClient, resolveTmuxBin } from '@juli-os/agents';

const tmux = createTmuxClient({ socketPath: '/tmp/my.sock' });
if (!(await tmux.hasSession('worker-1'))) {
  await tmux.newSession('worker-1', '/srv/work');
}
// Confirmed delivery: polls the input box; a swallowed Enter is retried, not the text.
const res = await tmux.sendTextConfirmed('worker-1', 'claude "fix the failing test"');

CLI inspector (no side effects):

npx juli-agents bin                  # which tmux binary the runtime resolved
npx juli-agents sessions -S /tmp/my.sock
npx juli-agents has worker-1 -S /tmp/my.sock && echo alive

Where it sits

| consumes | provides | |---|---| | nothing (zero deps) | tmux/PTY sessions, confirmed delivery, dispatch, hooks, snapshots, skills, ACP |

Up the ladder: @juli-os/ledger records what agents do, @juli-os/routing decides where work goes, @juli-os/artifacts registers what they produce.

Locale note

Comments and a few operator-facing strings (e.g. the staged-plan voice prompt contract) are Chinese in this first release — they are runtime behavior, not chrome, and are translated via the export pipeline rather than by editing source.

License

Apache-2.0