Skip to content

Roadmap

Where tallow is headed. These are concrete features in design, not vague aspirations. Each one has a detailed design document in the repository.

Teams Live Dashboard

Medium complexityShipped

The teams extension now includes a live dashboard with teammate cards, task board status icons, and a rolling activity feed. Toggle with /team-dashboard [on|off|status]. Wide terminals show tasks and teammates side-by-side; narrow terminals stack vertically. The dashboard auto-updates as team state changes and disappears on team_shutdown.

Extension: teamsCommand: /team-dashboard [on|off|status]

Parallel Plan Execution via Git Worktrees

High complexityDraft

One plan, N worktrees, N models. Give tallow a task, pick three models, and it spins up isolated git worktrees, one per model, all running the same plan in parallel. When they finish, compare approaches side-by-side: diffs, test results, token costs, wall-clock time.

This is real model evaluation on your actual codebase. Not synthetic benchmarks, your code, your constraints, your judgment on what “better” means.

The system uses two extensions: worktree-arena for orchestration (worktree lifecycle, agent spawning, cleanup) and an optional terminal pane provider (WezTerm, tmux, Zellij) for visual multi-pane display. Without a display extension, agents run in the background with log files.

Invocation: tallow plan exec —models claude,gpt-4o,geminiConfig: .tallow/plans/*.yamlSetup: .tallow/worktree.yaml

Unified Plugin System (Claude Code + pi compatible)

High complexityMostly shipped

One plugin system that understands both ecosystems. tallow reads from .claude/ (Claude Code convention) and .tallow/ (pi convention) at every level: project-local, user-global, and system. Both directory trees are scanned, merged at runtime, and project-local always wins.

Claude Code users bring their existing setup. pi users get the additional structure pi expects: extensions, prompts, skills, agents. No migration, no duplication. Drop a command in .claude/commands/ or .tallow/commands/ and it works.

Claude Code compatibility maps CC config locations (~/.claude/.claude.json, .claude/commands/, CLAUDE.md) into tallow’s runtime. Lifecycle hook behavior is supported, but hook config keys use tallow event names (tool_call, tool_result, etc.) rather than automatic PreToolUse/ PostToolUse key translation. MCP servers declared in tallow settings register through the mcp-adapter. Slash commands merge into tallow’s command system.

pi-native paths add what CC doesn’t have: extensions, typed prompts with subcommands, skills, and agents at the project level.

Scopes:

  • Commands. .tallow/commands/ and .claude/commands/ at project and user levels, via command-prompt extension. Also scans commands/ in local paths listed in settings.json packages.
  • Prompts. .tallow/prompts/ and ~/.tallow/prompts/ natively discovered by pi. Registered as /name slash commands.
  • CC Hooks. hooks.json from packages, extensions, and project/global paths all merged additively. Extension-level hooks.json scanning in ~/.tallow/extensions//hooks.json and .tallow/extensions//hooks.json. Runtime hooks via hooks:merge event bus.
  • CC Context. CLAUDE.md and AGENTS.md loaded natively by pi from cwd, ancestor directories, and ~/.tallow/. Injected into system prompt automatically. The context-files extension supplements this by loading both files when they coexist (pi picks only one) and scanning subdirectories.
  • Settings. .tallow/settings.json deep-merges with ~/.tallow/settings.json via SettingsManager. Project overrides user defaults.
  • Hooks. .tallow/hooks.json and .tallow/settings.json (hooks key) merge with global hooks. Supports standalone files, settings-embedded hooks, and extension-level hooks.json scanning.
  • Skills. .tallow/skills/ discovered natively by pi at project level, layered on top of ~/.tallow/skills/.
  • Agents. .tallow/agents/ discovered at project level by agent-commands and subagent extensions, layered on top of ~/.tallow/agents/.
  • Extensions. .tallow/extensions/ discovered natively by pi at project level, alongside ~/.tallow/extensions/.

Remaining: .claude.json settings passthrough.

CC paths: .claude/*, CLAUDE.md, .claude.jsonpi paths: .tallow/*, AGENTS.mdDone: commands, prompts, CC hooks, context files, settings, hooks, skills, agents, extensions

Complexity Tiers

Medium complexityMostly shipped

Basic model resolution already shipped via the context-fork extension — model: sonnet resolves to the right Anthropic model ID. What’s next: intent-based tiers that work across providers.

Shipped: routing keywords and auto-routing. Agent frontmatter now supports model: auto-cheap, auto-balanced, and auto-premium — intent-based routing that picks the best model from available providers based on cost preference. The task classifier determines type (code/vision/text) and complexity (1-5), then the model matrix ranks candidates. Per-call hints (costPreference, taskType, complexity) let the parent LLM override routing for individual invocations.

The bundled explore agent uses auto-cheap for economical codebase discovery. See subagent-tool, routing keywords.

Remaining: user-facing tier mapping in settings (let users define which of their models map to light/medium/heavy tiers independently of the matrix).

Config: settings.json or models.jsonShipped: Routing keywords (auto-cheap/premium), task classifier, model matrix, per-call hints, bundled explore agent

Plugin Source Caching & Git Support

Medium complexityPlanned

The plugin system re-scans all local sources from disk on every session start. Git sources (git:github.com/user/plugin@v1.0.0) warn and skip entirely.

The fix: mtime-based caching for local sources (skip re-scan if unchanged), immutable caching for pinned git sources (clone once), and TTL-based refresh for unpinned git sources (1-hour TTL, re-clone when stale).

Extension: pluginsCache: ~/.tallow/plugins-cache/

Prompt Stash (Ctrl+S)

Low complexityPlanned

Ctrl+S stashes the current input. Ctrl+S again pops it back (toggle behavior based on whether input is empty). Stack semantics with last-in-first-out. In-memory only. Not yet implemented.

Extension: stash-prompt (planned)Keybinding: Ctrl+S (modal toggle)

Modular Project Rules (.tallow/rules/)

Medium complexityMostly shipped

Shipped: unconditional rules. The context-files extension scans three directories: ~/.tallow/rules/ (user global), .tallow/rules/ (project), and .claude/rules/ (CC compatibility). All .md and .txt files are discovered and injected into the system prompt at session start, alongside AGENTS.md / CLAUDE.md content.

Shipped: path-scoped rules. Rules with paths: (multi-pattern) or path: (single-pattern shorthand, Claude-compatible) YAML frontmatter only inject when the agent reads, edits, or writes matching files. This keeps context lean: API conventions don’t pollute frontend work and vice versa.

---
paths:
- "src/api/**/*.ts"
- "src/middleware/**/*.ts"
---
# API Rules
- Validate input with Zod
- Use standard error envelope
- Include OpenAPI JSDoc on every handler

Still planned: /rules command to list loaded rules with scope and path filters, and /rules:add to create new rule files.

Extension: context-filesScopes: ~/.tallow/rules/, .tallow/rules/, .claude/rules/Shipped: Unconditional + path-scoped rule loading (paths/path) across .tallow and .claude rules directories