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

@xynogen/pix-subagent

v0.8.0

Published

Pi tool — planner-driven sub-agents: spawn, fetch, steer scoped child agents

Readme

@xynogen/pix-subagent

Pi extension — planner-driven sub-agents with 2 tools, live widget (model always visible), and explicit work-splitting.

Install

pi install npm:@xynogen/pix-subagent

Also included in @xynogen/pix-core:

pi install npm:@xynogen/pix-core

What it does

Gives the parent agent (planner) two tools to delegate and control child sessions:

| Tool | Purpose | |---|---| | agent | Spawn a sub-agent | | agent_control | Discover types/models/active IDs, fetch output, steer, or stop |

The pix twist

A running background agent also opens an agent-state activity lease (beginAgentActivity from @xynogen/pix-runtime), so the shared state reads working while any child is in flight. It does not fire attention notifications — only blocked states (an open ask_user / gate / sudo prompt) do that.

Model name is always visible — in the widget header and completion notification, regardless of whether the child uses the same model as the parent. Looks like:

● Agents
├─ ⠹ Explore [haiku]  scout auth flow  · ↻2 · 3 tool uses · 12.4k · 1.2s
│     ⎿  grep "middleware" src/
└─ ✓ Plan [sonnet]  design refactor  · ↻5 · 2.1s

Tools

agent — spawn a sub-agent

prompt           string    Self-contained task description
description      string    3-5 words, shown in widget
type             string    Agent type (discover with agent_control)
model?           string    "provider/id" or fuzzy ("haiku"); omit to inherit
allowed_tools?   string[]  Restrict child's tools (intersected, never widens)
thinking?        string    off|minimal|low|medium|high|xhigh (default: medium)
turns?           number    Omit for unlimited
resume?          string    Agent ID to continue
background?      boolean   Default true (non-blocking); false waits for an inline result

Background is the default. Omit background (or set it to true) to return immediately and receive the result automatically on completion. Set background: false only when the parent must block until the result is available inline. The initial task prompt is shown in the tool card, then hidden after the shared collapse.delaySec threshold; set collapse.tools.agent to false to keep it visible. Expanding an elapsed card restores the prompt without restarting the timer.

Short delegation guidelines

  • Prefer direct tools for known or small tasks; launch agents only when delegation provides clear value.
  • Give every child a compact, self-contained prompt. Do not fork or inherit the parent conversation: avoid inherit_context: true and prompt_mode: append.
  • Use thinking: "medium" by default and thinking: "high" for genuinely complex work.
  • Never use a thinking level above high unless the user first approves it after receiving a concrete benefit and cost/latency justification.

These rules are also embedded in the agent tool description so callers see them even when they do not load the separate subagent skill.

allowed_tools[] is the work-splitting hook. Pass ["read","grep","find"] to scope an Explore agent to read-only ops. The list is intersected with the agent type's default set — it can only narrow, never widen.

model accepts "provider/id" or fuzzy strings like "haiku", "sonnet". The recurring tool description does not embed the live model catalog; use agent_control({ action: "info", kind: "models" }) to inspect it on demand. An unknown explicit model also returns currently available models. Omit model to inherit parent model.

agent_control — inspect and control agents

action      "info" | "result" | "steer" | "stop"
kind?       "types" | "models" | "active"   For info; defaults to active
agent_id?   string                            For result/steer/stop
message?    string                            For steer
query?      string                            For info filtering
limit?      number                            For info; default 20
verbose?    boolean                           Full result conversation
turns?      number                            Last N result turns

Examples:

agent_control({ action: "info", kind: "active" })
agent_control({ action: "steer", agent_id: "abc123", message: "Focus on runtime" })
agent_control({ action: "result", agent_id: "abc123", turns: 3 })
agent_control({ action: "stop", agent_id: "abc123" })

Active discovery returns running/queued IDs, preventing lost IDs from blocking steering. info/types reads live built-in and custom-agent registry. info/models combines authenticated runtime registry with pix-data metadata. Calling result suppresses completion notification because result was consumed.

Terminal foreground rows and background notifications remain one line by default. Control results use compact rows such as ✓ agent_control info types · 5 available, ✓ agent_control result abc123 · completed, and ✓ agent_control steer abc123 · delivered; expansion shows exact returned text.

Default agent types

| Type | Tools | |---|---| | general | all (read/bash/edit/write/grep/find/ls) | | Explore | read/bash/grep/find/ls (read-only) | | Plan | read/bash/grep/find/ls (read-only) | | Mentor | read/bash/grep/find/ls (read-only) — senior advisor for critical decisions; caller must pick a model at least as capable as the parent |

Built-in types set the tool allowlist and persona only — never a model. The caller picks the model per call via the model parameter on the agent tool, or omits it to inherit the parent's. For mechanical/read-only work pass a cheap tier; for hard reasoning match or exceed the parent. A read-only Explore worker is not automatically cheap — you make it cheap by passing a cheap-tier model. See model in the agent tool above.

Custom agents

Drop a .md file in .pi/agents/ (project) or ~/.pi/agent/agents/ (global):

---
description: Scout for auth-related code patterns
tools: read, grep, find
model: anthropic/claude-haiku-4-5
thinking: low
max_turns: 20
---
You are a read-only code scout. Find patterns, never write files.

Frontmatter fields: description, tools (CSV), model (caller-overridable default), thinking, max_turns, extensions (true/false/CSV), skills (true/false/CSV), isolated, inherit_context, prompt_mode (replace/append), enabled (false to disable).

model in a custom agent is a caller-overridable default: it applies when the caller's model: param is omitted, but a caller's explicit model: always wins. This is the pix principle — model selection is caller-decided, always; the type/persona config never overrides it.

Deferred (v2+)

  • Git worktree isolation (isolation: "worktree")
  • Cron/interval scheduling (schedule param)
  • Cross-extension RPC event bus
  • /agents conversation viewer overlay
  • Persistent agent memory (user/project/local scope)
  • Smart group-join notifications for parallel fan-outs
  • Chain/parallel orchestration modes

Attribution

Spawn engine ported from tintinweb/pi-subagents (MIT). Work-splitting design inspired by nicobailon/pi-subagents (MIT).