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

upfyn-agents

v1.2.1

Published

Upfyn Agents — Terminal task board for managing AI coding agent sessions

Readme


How It Works

┌─────────────────────────────────────────────────────────────────────┐
│                        UPFYN AGENTS  my-project                     │
├──────────┬───────────┬───────────┬───────────┬──────────────────────┤
│ BACKLOG  │ PLANNING  │  RUNNING  │  REVIEW   │  DONE               │
│ ───────  │ ────────  │  ───────  │  ──────   │  ────               │
│          │           │           │           │                      │
│ > Auth   │  Refactor │  Fix bug  │  Add API  │  Setup CI           │
│   [claude│  [claude] │  [aider]  │  [claude] │  [claude]           │
│          │           │           │  PR #42   │                      │
│  Caching │           │           │           │                      │
│  [aider] │           │           │           │                      │
│          │           │           │           │                      │
├──────────┴───────────┴───────────┴───────────┴──────────────────────┤
│ [o] new [/] search [m] move [d] diff [s] sessions [S] SVG [q] quit │
└─────────────────────────────────────────────────────────────────────┘

Each task flows through five stages. When a task moves to Planning, Upfyn automatically creates an isolated git worktree and spawns your chosen AI agent inside a dedicated tmux session:

┌─────────────────────────────────────────────────────────────────────┐
│                      Upfyn Agents TUI                               │
├─────────────────────────────────────────────────────────────────────┤
│  Backlog  │  Planning  │  Running  │  Review  │  Done               │
│  ┌─────┐  │  ┌─────┐   │  ┌─────┐  │  ┌─────┐ │                    │
│  │Task1│  │  │Task2│   │  │Task3│  │  │Task4│ │                    │
│  └─────┘  │  └─────┘   │  └─────┘  │  └─────┘ │                    │
└───────────┴────────────┴──────┬────┴──────┬───┴────────────────────┘
                    │           │           │
                    ▼           ▼           ▼
┌─────────────────────────────────────────────────────────────────────┐
│                    tmux server "upfyn"                               │
│  ┌────────────────────────────────────────────────────────────────┐ │
│  │ Session: task-a1b2c3d4--my-project--refactor-auth              │ │
│  │  ┌──────────────────────────────────────┐                      │ │
│  │  │  claude --dangerously-skip-perms ... │                      │ │
│  │  │  > Planning implementation...        │                      │ │
│  │  └──────────────────────────────────────┘                      │ │
│  ├────────────────────────────────────────────────────────────────┤ │
│  │ Session: task-e5f6g7h8--my-project--fix-bug                    │ │
│  │  ┌──────────────────────────────────────┐                      │ │
│  │  │  aider --message "Fix the login..." │                      │ │
│  │  │  > Implementing fix...               │                      │ │
│  │  └──────────────────────────────────────┘                      │ │
│  └────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
                    │           │
                    ▼           ▼
┌─────────────────────────────────────────────────────────────────────┐
│                    Git Worktrees                                     │
│                                                                      │
│  .upfyn/worktrees/refactor-auth/    ← branch: task/refactor-auth    │
│  .upfyn/worktrees/fix-bug/          ← branch: task/fix-bug          │
│  .upfyn/worktrees/add-api/          ← branch: task/add-api          │
│                                                                      │
│  Each worktree = isolated copy of the repo for parallel work         │
└─────────────────────────────────────────────────────────────────────┘

Task Workflow

  ┌─────────┐    ┌──────────┐    ┌─────────┐    ┌────────┐    ┌──────┐
  │ BACKLOG │───>│ PLANNING │───>│ RUNNING │───>│ REVIEW │───>│ DONE │
  └─────────┘    └──────────┘    └─────────┘    └────────┘    └──────┘
                      │              │              │              │
                 Create worktree  Agent is      Optional PR    Cleanup
                 Spawn agent     implementing   Push + PR      worktree
                 in planning     (auto-sent     Can resume     Keep branch
                 mode            "proceed")     from here
  • Backlog — Ideas and upcoming tasks. Edit title/description here.
  • Planning — Worktree created, agent spawned in planning mode. Agent analyzes the codebase and creates a plan.
  • Running — Agent is implementing. Upfyn sends "proceed with implementation" automatically.
  • Review — Work done. Optionally create a PR via gh. Resume to address feedback.
  • Done — Worktree cleaned up, tmux session killed. Branch preserved locally.

Canvas View

Press c to switch to the canvas — a spatial view of all tasks with connections:

┌─────────────────────────────────────────────────────────────────────┐
│ CANVAS [c]Board [a]Connect [+/-]Zoom [S]SVG                        │
│                                                                      │
│   ┌──────────────────────┐          ┌──────────────────────┐        │
│   │ Setup Database       │─────────>│ Add API Endpoints    │        │
│   │ [done] claude        │          │ [running] claude     │        │
│   └──────────────────────┘          └──────────────────────┘        │
│                                              │                       │
│                                              │ "after API"           │
│                                              ▼                       │
│   ┌──────────────────────┐          ┌──────────────────────┐        │
│   │ Write Tests          │<─────────│ Frontend Integration │        │
│   │ [backlog] aider      │          │ [planning] claude    │        │
│   └──────────────────────┘          └──────────────────────┘        │
│                                                                      │
└─────────────────────────────────────────────────────────────────────┘
  • Navigate nodes with h/j/k/l, move them with H/J/K/L
  • Draw connections with a (connect mode)
  • Export the entire strategy to SVG with S

SVG Export

Press S from either view to export a publication-ready SVG of your task board or canvas:

Board view → upfyn-board-{timestamp}.svg    (columns + cards)
Canvas view → upfyn-canvas-{timestamp}.svg  (nodes + arrows)

SVGs include full color theming, status badges, agent labels, and connection arrows.

Session Management

Press s to view all active agent sessions:

┌──────────────────────────────────────────────────────┐
│ Agent Sessions                                        │
│                                                       │
│ Active sessions on tmux server "upfyn":               │
│                                                       │
│   task-a1b2c3d4--my-project--refactor-auth            │
│     Created: 12m ago                                  │
│                                                       │
│   task-e5f6g7h8--my-project--fix-bug                  │
│     Created: 45m ago                                  │
│                                                       │
│ Attach: tmux -L upfyn attach -t <session>             │
│ View:   tmux -L upfyn list-sessions                   │
└──────────────────────────────────────────────────────┘

Open any task's live session with Enter to see the agent's output in real-time:

┌──────────────────────────────────────────────────────┐
│ Fix authentication bug                   [Ctrl+q]    │
│                                                       │
│ claude> I'll fix the authentication bug by updating   │
│ the token validation logic in auth.js...              │
│                                                       │
│ Changes made:                                         │
│   src/auth.js - Fixed token expiry check              │
│   src/middleware.js - Added refresh logic              │
│                                                       │
│ Ready for review.                                     │
│                                                       │
│ [Ctrl+j/k] Scroll  [Ctrl+d/u] Page  [Ctrl+g] Bottom  │
└──────────────────────────────────────────────────────┘

Quick Start

Prerequisites

  • tmux — Agent sessions run in a dedicated tmux server
  • git — Worktree isolation for parallel development
  • gh (optional) — GitHub CLI for PR operations
  • At least one AI coding agent (Claude Code, Aider, Codex, etc.)

Install & Run

# Install
npm install

# Run in a git project directory
node src/index.js .

# Or use the binary after npm link
npx upfyn

# Dashboard mode (multi-project, no git required)
npx upfyn -g

Configuration

Global config at ~/.config/upfyn-agents/config.toml (Linux) or %APPDATA%/upfyn-agents/config.toml (Windows):

default_agent = "claude"

[worktree]
enabled = true
auto_cleanup = true
base_branch = "main"

[theme]
color_selected = "#ead49a"
color_normal = "#5cfff7"
color_dimmed = "#9C9991"
color_text = "#f2ece6"
color_accent = "#5cfff7"
color_description = "#C4B0AC"
color_column_header = "#a0d2fa"
color_popup_border = "#9ffcf8"
color_popup_header = "#69fae7"

Per-project config at <project>/.upfyn/config.toml:

default_agent = "aider"
base_branch = "develop"
github_url = "https://github.com/org/repo"
copy_files = ".env,config.json"
init_script = "npm install"

Keyboard Reference

Board View

| Key | Action | |-----|--------| | h / l | Move between columns | | j / k | Move between tasks | | o | Create new task | | Enter | Open task session / edit backlog task | | x | Delete task (with confirmation) | | d | Show git diff for task branch | | m | Move task to next stage | | M | Move directly to Running (skip Planning) | | r | Resume task (Review back to Running) | | / | Search tasks by title | | s | View active agent sessions | | S | Export current view to SVG | | c | Switch to canvas view | | e | Toggle project sidebar | | q | Quit |

Canvas View

| Key | Action | |-----|--------| | h / j / k / l | Select nodes by direction | | H / J / K / L | Move selected node | | a | Start connection (draw arrow) | | x | Delete connection from selected node | | + / - | Zoom in / out | | p | HTML preview of selected node | | b | Open HTML content in browser | | S | Export canvas to SVG | | c / Esc | Back to board view |

Task Session Popup

| Key | Action | |-----|--------| | Ctrl+j / Ctrl+k | Scroll up/down | | Ctrl+d / Ctrl+u | Page down/up | | Ctrl+g | Jump to bottom | | Ctrl+q / Esc | Close popup | | Other keys | Forwarded to the agent session |

PR Creation

| Key | Action | |-----|--------| | Tab | Switch between title and description | | Ctrl+s | Push branch + create PR | | Esc | Cancel |

Task Description Input

| Key | Action | |-----|--------| | # / @ | Open file search (fuzzy find project files) | | Enter | Save and create task | | Esc | Cancel |

Supported Agents

Detected automatically in order of preference:

| Agent | Command | Description | |-------|---------|-------------| | Claude Code | claude | Anthropic's Claude Code CLI | | Aider | aider | AI pair programming in your terminal | | Codex | codex | OpenAI's Codex CLI | | GitHub Copilot | gh copilot | GitHub Copilot CLI | | OpenCode | opencode | AI-powered coding assistant | | Cline | cline | AI coding assistant | | Amazon Q | q | Amazon Q Developer CLI |

Architecture

src/
├── index.js              # Entry point, CLI arg parsing
├── app.js                # Main App class — rendering, key handling, actions
├── db/
│   ├── models.js         # Task, Project, TaskConnection data structures
│   └── database.js       # SQLite operations (CRUD, schema, migrations)
├── config/
│   └── config.js         # Global + per-project TOML configuration
├── agent/
│   └── agent.js          # Agent registry, detection, command building
├── git/
│   ├── git.js            # Git helpers (branch, diff, merge)
│   ├── worktree.js       # Worktree lifecycle (create, init, remove)
│   └── provider.js       # GitHub PR operations via gh CLI
├── tmux/
│   └── tmux.js           # Session management (spawn, capture, kill)
├── tui/
│   ├── board.js          # Board navigation state
│   ├── canvas.js         # Canvas state (nodes, zoom, pan, connections)
│   ├── html-preview.js   # HTML preview (terminal + browser)
│   ├── sidebar.js        # Project sidebar state
│   ├── popups.js         # All popup state classes
│   └── theme.js          # Hex color utilities
└── utils/
    ├── mermaid.js         # Mermaid diagram parser
    └── svg-export.js      # SVG export (board + canvas views)

Database

All data stored centrally — never inside your project directories:

| Platform | Location | |----------|----------| | Linux | ~/.config/upfyn-agents/ | | macOS | ~/Library/Application Support/upfyn-agents/ | | Windows | %APPDATA%/upfyn-agents/ |

  • index.db — Global project index
  • projects/{hash}.db — Per-project task database

License

GNU General Public License v3.0 — see LICENSE for details.