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

fellowship-cli

v0.4.11

Published

πŸ§™ Scaffold your AI development team

Readme

βš”οΈ Fellowship

Your AI agents remember everything.

Fellowship is a CLI that turns AI coding agents into a team that learns. It orchestrates the full cycle: spec β†’ code β†’ review β†’ learn β†’ improve β€” so each run makes the next one better.

Works with Claude Code, Codex, and any CLI-based AI coding agent.

npm version License: MIT


Why Fellowship?

AI coding agents are powerful but stateless. Every session starts from zero β€” they forget past decisions, repeat mistakes, and ignore project conventions.

Fellowship fixes this:

  • 🧠 Persistent memory β€” Learnings, decisions, and gotchas survive between runs
  • πŸ“‹ Auto-generated specs β€” Every task gets a detailed spec before coding starts
  • πŸ›‘οΈ Built-in code review β€” Sentinel (AI reviewer) catches bugs before you see the code
  • πŸ”” Notifications β€” Sounds, desktop alerts, and hooks when runs finish
  • πŸ”€ Background runs β€” Agent works in isolation, you keep coding
  • πŸ‘₯ Team of specialists β€” Each agent has a role, profile, and memory
  • πŸ“Š Full traceability β€” Every run tracked with cost, duration, tokens, and decisions

Quick Start

# Install globally
npm install -g fellowship-cli

# New project
mkdir my-api && cd my-api && git init
fellowship init

# Existing project
cd my-existing-project
fellowship adopt

# Run a task
fellowship run "add user authentication with JWT"

# Run in background with human review
fellowship run "add rate limiting" --bg --review
# β†’ You keep working β†’ πŸ”Š notification β†’ fellowship review

How It Works

You: fellowship run "add search endpoint"
                    β”‚
                    β–Ό
           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
           β”‚  Spec Engine  β”‚ ← Generates detailed spec from task + learnings + gotchas
           β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
                  β”‚
                  β–Ό
           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
           β”‚  Agent (Code) β”‚ ← Claude Code writes code in isolated worktree
           β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
                  β”‚
                  β–Ό
           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
           β”‚  πŸ›‘οΈ Sentinel  β”‚ ← AI reviewer checks code against spec
           β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
                  β”‚
                  β–Ό
           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
           β”‚ Human Review  β”‚ ← You: accept, reject, or give feedback
           β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
                  β”‚
                  β–Ό
           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
           β”‚  Learn & Push β”‚ ← Extracts learnings, pushes branch, creates PR
           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key detail: Your working directory never changes. Fellowship creates an isolated git worktree for each run β€” you stay on your branch the whole time.

Commands

fellowship init

Interactive wizard that sets up Fellowship in a new project. Analyzes your description, generates architecture, creates an AI agent team, and scaffolds the project.

fellowship init

What it creates:

  • .fellowship/config.yaml β€” Project config (provider, model, settings)
  • .fellowship/team.yaml β€” Agent definitions (roles, skills, profiles)
  • .fellowship/profiles/ β€” Agent profiles with coding guidelines
  • .fellowship/architecture.md β€” Project architecture reference
  • .fellowship/fellowship.db β€” SQLite database (runs, decisions, learnings)
  • .gitignore β€” Auto-generated for your stack (Node, Java, Python, etc.)

fellowship adopt

Adds Fellowship to an existing project by analyzing the codebase. Detects stack, framework, patterns, and generates a team tailored to your project.

cd existing-project
fellowship adopt

fellowship run <task>

The core command. Generates a spec, assigns an agent, executes the task, reviews the code, and extracts learnings.

# Basic run
fellowship run "add pagination to GET /users"

# With human review (accept/reject/feedback)
fellowship run "refactor auth middleware" --review

# Run in background β€” free your terminal
fellowship run "add search endpoint" --bg

# Background + human review
fellowship run "add auth" --bg --review

# Preview what would happen (no code changes)
fellowship run "add search endpoint" --dry-run

# Skip AI review
fellowship run "fix typo in README" --no-review

# Use a pre-written spec
fellowship run --spec path/to/spec.md

Options: | Flag | Description | |------|-------------| | --bg | Run in background β€” free your terminal, get notified when done | | --review | Pause for human review after implementation | | --dry-run | Generate spec and show preview, no code changes | | --no-review | Skip the Sentinel AI review cycle | | --no-sanitize | Disable prompt injection sanitization | | --spec <path> | Use an existing spec instead of generating one | | --scribe | Force documentation generation after run | | --no-scribe | Skip documentation generation |

fellowship run --bg

Run in background β€” your terminal stays free while the agent works.

fellowship run "add user authentication" --bg

# βš”οΈ  Fellowship β€” running in background
#    Task:    add user authentication
#    PID:     45231
#    Log:     .fellowship/runs/run-1.log
#
#    fellowship log              ← view agent output
#    fellowship log --follow     ← stream in real time
#    fellowship status           ← check progress
#
# You'll hear a sound when it's done πŸ”Š

When the run completes: sound + desktop notification + terminal flash. Use fellowship log to check output or fellowship review to accept/reject changes.

fellowship log

View the output log of a background run.

fellowship log                # latest run
fellowship log --follow       # stream in real time (tail -f)
fellowship log --run 3        # specific run number

fellowship review

Review changes from a background run. Accept or reject with full diff display.

fellowship review
# Shows diff, spec, stats
# [a]ccept  [r]eject  [d]iff  [s]pec

fellowship spec <task>

Generate a spec without running it. Useful for reviewing specs before execution.

fellowship spec "add WebSocket support for real-time updates"

fellowship status

Dashboard showing your team, recent runs, costs, and project stats.

fellowship status
βš”οΈ  Fellowship v0.4.2 β€” my-api
   Provider: anthropic (claude-sonnet-4-6)

πŸ‘₯ Team (4 agents)
   βš™οΈ  Carlos β€” Backend development
   πŸ—„οΈ  Atlas β€” Database design and management
   🎯  MerlΓ­n β€” Project coordination
   πŸ›‘οΈ  Sentinel β€” Code reviewer

πŸ“Š Recent Runs
   #   Task                          Agent    Status     Duration  Cost
   3   add rate limiting             Carlos   βœ… done    2m 15s   $0.31
   2   add CORS config               Carlos   βœ… done    1m 54s   $0.24
   1   scaffold project              Carlos   βœ… done    2m 50s   $0.67

πŸ“ˆ Summary
   Runs: 3 total (3 completed, 0 failed)
   Tokens: 892,411 (~$0.82)
   Learnings: 5 bullets (distilled)
   Decisions: 8 in DB

fellowship learn <lesson>

Manually add a learning to the project memory.

fellowship learn "Always use parameterized queries β€” never string interpolation for SQL"

fellowship search <query>

Search learnings and gotchas using FTS5 full-text search.

fellowship search "authentication"

fellowship doctor

Check your setup for issues. Verifies Node, Git, agent CLI, API key, config, team, Sentinel, learnings, and more. Zero LLM calls.

fellowship doctor
βš”οΈ  Fellowship Doctor

  βœ… Node.js v25.6.1  (>= 18)
  βœ… Git 2.47.0
  βœ… Agent CLI  (claude)
  βœ… .fellowship/ directory
  βœ… config.yaml  (anthropic / claude-sonnet-4-6)
  βœ… team.yaml  (4 agents)
  βœ… API key  (configured for anthropic)
  βœ… Sentinel reviewer  (profile present)
  βœ… fellowship.db
  βœ… .gitignore  (covers fellowship.db)
  ⚠️  Learnings  (none yet β€” run some tasks first)
  ⚠️  Gotchas  (none yet)
  βœ… architecture.md

  All checks passed (11 βœ…, 2 ⚠️, 0 ❌)

fellowship sanitize

Scan .fellowship/ files for prompt injection attempts.

fellowship sanitize

fellowship scribe

Generate or update project documentation (README, API docs, changelog).

fellowship scribe --readme
fellowship scribe --api
fellowship scribe --all

fellowship memory

Interactive TUI with four views: Dashboard, Runs, Memory, and Diff.

fellowship memory                      # Opens on dashboard
fellowship mem                         # Alias
fellowship memory --view runs          # Jump to runs table
fellowship memory --view memory --section gotchas  # Gotchas tab
fellowship memory --view diff          # Side-by-side diff
fellowship memory --view diff --diff main  # Diff against main
fellowship memory --search "database"  # Pre-filter memory entries

Views:

  • πŸ“Š Dashboard β€” stats overview: total runs, tokens, cost, team, last run
  • πŸƒ Runs β€” full run history table with agent, status, review, tokens, cost, duration
  • 🧠 Memory β€” browse learnings, gotchas, decisions, reviews (4 sub-tabs)
  • πŸ“ Diff β€” side-by-side diff view with add/remove coloring

Navigation: 1-4 jump to view, Tab cycle views, ↑↓/jk navigate, h/l switch memory tabs, Enter expand, / search, u/d page scroll (diff), q quit.

fellowship connect

Configure your AI provider credentials (stored securely in macOS Keychain / system credential store).

fellowship connect

fellowship hire

Add a new agent to your team through an AI conversation.

fellowship hire

Configuration

.fellowship/config.yaml

name: my-api
created: '2026-03-11'

ai:
  provider: anthropic
  model: claude-sonnet-4-6
  envVar: ANTHROPIC_API_KEY

# Code review settings
review:
  enabled: true                    # Enable/disable Sentinel (default: true)
  model: claude-haiku-4-5-20251001 # Cheaper model for reviews
  strictness: balanced             # strict | balanced | lenient
  maxCycles: 2                     # Max review-fix cycles

# Notifications & hooks
hooks:
  onComplete:
    - { sound: done }
    - { notify: desktop }
  onError:
    - { sound: error }
    - { notify: desktop }
  onReview:
    - { sound: review }
    - { notify: desktop }
  sounds: true                     # disable with false
  desktop: true                    # disable with false

# Documentation generation
scribe:
  enabled: false
  autoRun: false
  model: claude-haiku-4-5-20251001
  outputs: [changelog, readme]

# Learnings search
search:
  maxResults: 10
  minScore: 1.0
  autoIndex: true

# Security
security:
  sanitize: true
  strictMode: false
  logInjections: true

The Memory System

Fellowship maintains a persistent memory that grows with every run:

| File | Purpose | Updated | |------|---------|---------| | learnings.md | Raw lessons from each run | After every run | | learnings-distilled.md | Consolidated top learnings (max 30) | After every run | | gotchas.md | Technical pitfalls and warnings | After every run | | architecture.md | Project architecture reference | On init/adopt | | fellowship.db | Runs, decisions, tasks, events (SQLite + FTS5) | Continuously |

How memory improves runs:

  1. Before generating a spec, Fellowship searches learnings via FTS5
  2. Relevant learnings + all gotchas are injected as context
  3. The spec includes a ## Context Considered section showing exactly what was used
  4. After each run, new learnings are extracted and distilled

Skills System

Fellowship ships with built-in skills and supports project-level overrides:

fellowship/skills/          ← Built-in (shipped with CLI)
  code-review.md            ← Sentinel's review guidelines

.fellowship/skills/         ← Project overrides (optional)
  code-review.md            ← Your custom review guidelines

Project skills override built-in skills with the same name. Profiles reference skills with {{skill:name}}.

πŸ”” Notifications

Fellowship notifies you when runs complete β€” zero config required.

Built-in (automatic on all platforms):

| Platform | Sounds | Desktop Notifications | |----------|--------|-----------------------| | macOS | afplay (Glass, Basso, Ping) | osascript (native alerts) | | Linux | paplay / aplay (freedesktop sounds) | notify-send | | Windows | PowerShell SoundPlayer (tada, critical stop) | PowerShell toast notifications (Win10/11) |

Plus: terminal flash β€” colored bar on completion (green βœ… / red ❌ / yellow 🚫 / blue πŸ‘€).

Configurable hooks in config.yaml:

hooks:
  onComplete:
    - { sound: done }
    - { notify: desktop }
    - { notify: telegram }
    - "echo '$FELLOWSHIP_TASK completed' >> ~/fellowship.log"
  onError:
    - { sound: error }
    - { notify: desktop }
  onReview:
    - { sound: review }
    - { notify: desktop }
  sounds: true                # disable with false
  desktop: true               # disable with false
  telegramBotToken: "..."     # or env FELLOWSHIP_TELEGRAM_BOT_TOKEN
  telegramChatId: "..."       # or env FELLOWSHIP_TELEGRAM_CHAT_ID

Environment variables available in shell hooks:

| Variable | Example | |----------|---------| | FELLOWSHIP_TASK | "add user authentication" | | FELLOWSHIP_AGENT | "Carlos" | | FELLOWSHIP_STATUS | completed / failed / rejected | | FELLOWSHIP_BRANCH | feat/add-user-auth | | FELLOWSHIP_DURATION | 145 (seconds) | | FELLOWSHIP_TOKENS | 31000 | | FELLOWSHIP_COST | 0.47 | | FELLOWSHIP_PR_URL | https://github.com/.../pull/5 |

Supported notification providers:

  • Desktop β€” native OS notifications (zero config)
  • Telegram β€” set bot token + chat ID in config or env vars
  • Slack β€” set webhook URL in FELLOWSHIP_SLACK_WEBHOOK env var
  • Custom β€” any shell command with env vars

πŸ›‘οΈ Sentinel β€” The Built-in Reviewer

Every project gets Sentinel, a dedicated AI code reviewer. Unlike using another coding agent as reviewer, Sentinel has a specialized profile focused on:

  • Verifying acceptance criteria from the spec
  • Catching bugs and missing edge cases
  • Checking architecture compliance
  • Not nitpicking style or suggesting rewrites

Sentinel reviews every run automatically. Configure via review: in config.yaml.

Security

Fellowship includes prompt injection protection:

  • 30+ detection patterns β€” XML tags, ChatML tokens, role markers, identity overrides, authority markers
  • Sanitization on every run β€” Learnings, gotchas, and architecture scanned before injection
  • fellowship sanitize β€” Manual scan with severity levels
  • Dry-run reports β€” --dry-run shows sanitization results before committing to a run
  • strictMode β€” Optional throw-on-detection for zero-tolerance environments

Supported Providers

| Provider | Agent CLI | Model | |----------|-----------|-------| | Anthropic | Claude Code | claude-sonnet-4-6, claude-opus-4-6 | | OpenAI | Codex | gpt-4o, o3-mini |

Platform Support

| Feature | macOS | Linux | Windows | |---------|-------|-------|---------| | Core CLI | βœ… | βœ… | βœ… | | Sounds | βœ… afplay | βœ… paplay/aplay | βœ… PowerShell | | Desktop notifications | βœ… osascript | βœ… notify-send | βœ… PowerShell toast | | Terminal flash | βœ… | βœ… | βœ… | | Keychain credentials | βœ… macOS Keychain | βœ… libsecret | βœ… Windows Credential Store | | Background runs | βœ… | βœ… | βœ… |

Requirements

  • Node.js >= 18
  • Git
  • A supported AI coding agent CLI installed (claude or codex)

License

MIT


Built with βš”οΈ by MiniGalaxyMage