Ranger

A personal task tracker inspired by Pivotal Tracker, built in Rust.

Ranger strips Pivotal Tracker down to its essentials: tasks, tags, and two lists. No projects, no user management, no role hierarchies — just a focused tool for tracking work.

Why Ranger

Pivotal Tracker does too much. Most of its features — story types, epics, multi-user workflows — serve teams, not individuals. Ranger keeps what matters for solo work and discards the rest.

Design

Tasks

Every item is a task. No stories, bugs, chores, or features — just tasks. Each task has:

  • Title and description
  • Comments for ongoing notes
  • Subtasks for breaking work down
  • Blockers for expressing dependencies
  • Tags for grouping related work

States

A task is always in one of four states:

StateMeaning
IceboxCaptured but not committed to
QueuedCommitted and ordered by priority
In ProgressActively being worked on
DoneFinished

Tags Instead of Projects

Tags replace projects. Filter any backlog by tag to see a focused slice of work. No rigid project boundaries, no duplication when a task spans concerns.

Interface

The webapp uses an expanding modal for editing tasks — no cluttered inline editing. Design is minimalist, built with Utopia fluid responsive CSS.

Getting Started

Build and install:

cargo install --path .

Or run directly:

cargo run --bin ranger -- <command>

Quick start

ranger backlog create "my-project"
ranger task create "First thing to do" --backlog my-project
ranger task create "Second thing" --backlog my-project --state ready --tag urgent
ranger task list --backlog my-project
ranger task edit <key> --state in_progress
ranger comment add <key> "Started working on this"
ranger task show <key>

Use --json on any command for machine-readable output. Backlogs are identified by name. Tasks are referenced by key prefix — type just enough characters to be unique.

Set RANGER_DEFAULT_BACKLOG to skip --backlog on every command.

The database lives at $XDG_DATA_HOME/ranger/ranger.db by default. Override with --db <path> or RANGER_DB env var.

Architecture

Ranger is a single Rust crate with a library and binary target:

  • Library (ranger) — core data model, database operations, key generation
  • CLI (ranger binary) — clap-based binary for humans and AI agents
  • Webapp — for human use (planned)

The CLI exists primarily so AI agents can manage tasks programmatically. The webapp exists for humans who prefer a visual interface.

Releases

Ranger uses a two-forge release pipeline:

  1. Gitea (git.kejadlen.dev) is the source of truth. CI runs on every push to main (and on PRs). When CI passes, a vYYYY-MM-DD+<short-sha> tag is created automatically.
  2. Tags mirror to GitHub (github.com/kejadlen/ranger). A tag push triggers the release workflow, which builds macOS and Linux binaries, creates a GitHub release, and publishes Dotslash configuration.

The version format is calver: the date of the commit plus its short SHA (e.g., v2026-04-21+abc1234).

Roadmap

First milestone: self-host Ranger so an AI agent can use it for task management while building Ranger itself.

After that:

  • Claude Code plugin for AI agent task management
  • Public read-only sharing with permissions
  • Configurable backlog views
  • Browsing completed work