gsxdsm 1f83e21129 feat(KB-018): simplify GitHub import modal remote selection
- Simplify remote selection UI in GitHub import modal
- Refactor GitHubImportModal component for better UX
- Update and expand test coverage for modal interactions
- Add changeset documenting the UI simplification
2026-03-29 18:13:08 -07:00
2026-03-28 23:53:54 -04:00
2026-03-28 23:29:21 -04:00
2026-03-28 22:14:40 -04:00
2026-03-28 22:14:40 -04:00

kb

AI-orchestrated task board. Like Trello, but your tasks get specified, executed, and delivered by AI — powered by pi.

kb dashboard

Workflow

graph TD
    H((You)) -->|rough idea| T["Triage\n<i>auto-specification</i>"]
    T --> TD["Todo\n<i>scheduled for execution</i>"]
    TD --> IP["In Progress\n<i>for each step:\nplan, review, execute, review </i>"]

    subgraph IP["In Progress"]
        direction TD
        NS([Begin step]) --> P[Plan]
        P[Plan] --> R1{Review}
        R1 -->|revise| P
        R1 -->|approve| E[Execute]
        E --> R2{Review}
        R2 -->|revise| E
        R2 -->|next step| NS
        R2 -->|rethink| P
    end

    R2 -->|done| IR["In Review\n<i>ready to merge,\nor auto-merge</i>"]
    IR -->|squash merge| D["Done"]

    style H fill:#161b22,stroke:#8b949e,color:#e6edf3
    style T fill:#2d2006,stroke:#d29922,color:#d29922
    style TD fill:#0d2044,stroke:#58a6ff,color:#58a6ff
    style IP fill:#1a0d2e,stroke:#bc8cff,color:#bc8cff
    style P fill:#1a0d2e,stroke:#bc8cff,color:#e6edf3
    style R1 fill:#1a0d2e,stroke:#bc8cff,color:#e6edf3
    style E fill:#1a0d2e,stroke:#bc8cff,color:#e6edf3
    style R2 fill:#1a0d2e,stroke:#bc8cff,color:#e6edf3
    style NS fill:#1a0d2e,stroke:#bc8cff,color:#e6edf3
    style IR fill:#0d2d16,stroke:#3fb950,color:#3fb950
    style D fill:#1a1a1a,stroke:#8b949e,color:#8b949e

Tasks with dependencies are processed sequentially. Independent tasks run in parallel.

Quick Start

npm i -g @dustinbyrne/kb

Then from the root of your repository:

kb dashboard

Open http://localhost:4040 — create tasks from the board or the CLI.

CLI commands

kb task create "Fix the login redirect bug"
kb task create "Button misaligned" --attach screenshot.png
kb task list
kb task show KB-001
kb task move KB-001 todo
kb task merge KB-001
kb task import owner/repo                  # Import all open issues (batch mode)
kb task import owner/repo --interactive    # Interactive issue selection
kb task import owner/repo --limit 10       # Limit number of issues fetched
kb task import owner/repo --labels bug     # Filter by label(s)

GitHub Import:

  • Batch mode imports all open issues automatically (skipping already-imported)
  • Interactive mode (-i) lets you select specific issues from a numbered list
  • Requires GITHUB_TOKEN env var for private repositories
  • Pull requests are automatically filtered out

Dashboard Import:

  • Click the ↓ (Download) icon in the header to open the GitHub import modal
  • Enter owner/repo, optionally filter by labels
  • Select an issue from the list and click Import
  • Already-imported issues are marked with an "Imported" badge

Agents can use these same commands, or see .agents/skills/ for structured skill docs.

Prerequisites

The AI engine uses pi under the hood:

  1. npm i -g @mariozechner/pi-coding-agent
  2. Run pi and use /login, or set ANTHROPIC_API_KEY

kb reuses your existing pi authentication.

Packages

Package Description
@kb/core Domain model — tasks, board columns, file-based store
@kb/dashboard Web UI — Express server + kanban board with SSE
@kb/engine AI engine — triage (pi), execution (pi + worktrees), scheduling
kb (cli) CLI — kb dashboard, kb task create/list/move/attach

Architecture

Task Storage

Tasks live on disk in .kb/tasks/ in the project root:

.kb/
├── config.json              # Board config + ID counter
└── tasks/
    └── KB-001/
        ├── task.json        # Metadata (column, deps, timestamps)
        ├── PROMPT.md        # Task specification
        └── attachments/     # File attachments — images & text files (optional)

Board UI

Real-time kanban board at localhost:4040:

  • Drag-and-drop cards between columns
  • Create tasks from the web UI
  • Click cards for detail view with move/delete actions
  • Server-Sent Events for live updates across tabs

AI Engine

The AI engine starts automatically with the dashboard. Three components run:

  • TriageProcessor — Watches triage column. Spawns a pi agent session that reads the project, understands context, and writes a full PROMPT.md specification. Moves task to todo.

  • Scheduler — Watches todo column. Resolves dependency graphs. Moves tasks to in-progress when deps are satisfied and concurrency allows (default: 2 concurrent). When groupOverlappingFiles is enabled in settings, tasks whose ## File Scope sections share files are serialized to prevent merge conflicts.

  • TaskExecutor — Listens for tasks entering in-progress. Creates a git worktree, spawns a pi agent session with full coding tools scoped to the worktree, and executes the specification. Moves to in-review on completion.

Each pi agent session gets:

  • Custom system prompt for its role (triage specifier vs task executor)
  • Tools scoped to the correct directory (createCodingTools(cwd))
  • In-memory sessions (no persistence needed)
  • The user's existing pi auth (API keys from ~/.pi/agent/auth.json)

Development

pnpm install
pnpm dev dashboard              # Board + AI engine
pnpm dev task list              # CLI commands

Building a standalone executable

You can build a single self-contained kb binary using Bun:

pnpm build:exe

This compiles all TypeScript, builds the dashboard client, and produces:

  • packages/cli/dist/kb — the standalone binary
  • packages/cli/dist/client/ — co-located dashboard assets

Run the binary directly — no Node.js, pnpm, or workspace setup needed:

./packages/cli/dist/kb --help
./packages/cli/dist/kb task list
./packages/cli/dist/kb dashboard

To distribute, copy both the kb binary and the client/ directory together.

Cross-compilation

Build binaries for all supported platforms from a single machine:

pnpm build:exe:all

This produces binaries for all supported targets in packages/cli/dist/:

Target Output
bun-linux-x64 kb-linux-x64
bun-linux-arm64 kb-linux-arm64
bun-darwin-x64 kb-darwin-x64
bun-darwin-arm64 kb-darwin-arm64
bun-windows-x64 kb-windows-x64.exe

To build for a specific platform:

pnpm --filter kb build:exe -- --target bun-linux-x64

The client/ directory is shared across all binaries (platform-independent assets).

You can override the dashboard asset path via the KB_CLIENT_DIR environment variable:

KB_CLIENT_DIR=/path/to/client ./kb dashboard

Prerequisites: Bun ≥ 1.0 (bun --version)

GitHub Integration

PR Creation from Dashboard

kb can create GitHub Pull Requests directly from the dashboard for tasks in the In Review column:

  1. Set the GITHUB_TOKEN environment variable with a personal access token (requires repo scope)
  2. Open a task in the In Review column
  3. Click "Create PR" in the Pull Request section
  4. Enter a title and optional description
  5. The PR is created and linked to the task automatically

The dashboard shows real-time PR status (open, closed, merged) with a refresh button to fetch the latest state from GitHub.

PR Comment Monitoring

When a task has a linked PR, kb automatically monitors it for new review comments:

  • Adaptive polling: Checks every 30 seconds when active, 5 minutes when idle
  • Actionable feedback detection: Filters out "LGTM" and "Thanks" comments, detects requests like "fix", "change", "update"
  • Steering comments: Automatically adds actionable review feedback as steering comments on the task
  • Follow-up tasks: When a PR is closed with unaddressed feedback, a follow-up task is created

Configure via the same GITHUB_TOKEN environment variable.

Releases

Packages are published to npm automatically via GitHub Actions and changesets.

Installing from npm

npm install -g kb

Triggering a release

Releases are automated via changesets. See RELEASING.md for the full workflow.

In short: add a changeset with pnpm changeset, merge to main, then merge the auto-generated "Version Packages" PR. Once merged, the workflow automatically publishes all updated packages to npm.

CI pipeline

  • Pull requests & pushes to main — runs tests and build (.github/workflows/ci.yml)
  • Push to main — creates a version PR (if changesets exist) or publishes to npm (.github/workflows/version.yml)

License

ISC

Description
Fork of github.com/Runfusion/Fusion with Coolify-friendly Dockerfile
Readme MIT 124 MiB
Languages
TypeScript 95.4%
CSS 3.3%
JavaScript 1.2%