Skip to content

snowtema/drift

Repository files navigation

drift

Lightweight project tracker for AI-assisted coders. Terminal TUI + CLI.

Go Report Card Release License: MIT Go Reference

Track dozens of vibe-code projects without leaving your terminal. Single binary, zero dependencies.

drift TUI demo

Why drift?

You vibe-code 3-7 projects a day with Claude, Cursor, v0. After a week you have 20+ folders and can't remember what each one does, where you left off, or which ones are worth continuing.

Jira is overkill. Notion is too slow. You need something that works at the speed of ls.

drift is a file-based project tracker that lives in your terminal:

  • Fullscreen TUI — dual-panel, keyboard-driven, no flicker
  • 5 color themes — cyan, claude, green, purple, mono — persisted across sessions
  • TUI scanner — browse directories, discover projects, batch-init with checkboxes
  • Tree & flat views — hierarchical or flat, collapsible single-child dirs
  • Fast CLI — all commands work without TUI
  • Open protocol — plain JSON .drift/ files, no database, no server
  • Auto-enrichment — detects stack, repo URL, deploy links
  • Claude Code integration — launch Claude from TUI, auto-sync via CLAUDE.md
  • Single binary — 5MB Go binary, zero runtime dependencies

Install

Homebrew (macOS/Linux):

brew install snowtema/tap/drift

Go install (requires Go 1.21+):

go install github.com/snowtema/drift/cmd@latest

Binary download: Grab a prebuilt binary from Releases.

From source:

git clone https://github.com/snowtema/drift
cd drift
go build -o drift ./cmd/

Quick Start

# Initialize drift in your project
cd ~/my-project
drift init

# Add goals and notes
drift goal "MVP landing page"
drift goal "Stripe integration"
drift note "scaffolded with create-next-app"

# Mark goal done
drift goal done 1

# See status
drift status

# Scan a directory for all projects
drift scan ~/Develop --depth=2 --init

# Open fullscreen TUI
drift

Or use the TUI scanner: press S in the project list to browse directories, pick a folder, and batch-init discovered projects with checkboxes.

Themes

drift ships with 5 color themes. Press T in the TUI to cycle through them:

cyan (default) · claude (warm terracotta) · green (matrix) · purple · mono (grayscale)

Theme, view mode (tree/flat), sort order, and banner state are persisted in ~/.drift/config.json.

TUI Keyboard Shortcuts

Fullscreen dual-panel interface. Press ? inside for full reference.

List View

Key Action
j/k or arrows Navigate projects
Enter Open project detail
s Cycle sort (recent/progress/name/status)
t Toggle tree/flat view
S Scan for new projects (directory browser)
/ Live filter by name
: Jump to project by name
b Toggle ASCII banner
T Cycle color theme
? Full keyboard reference
q Quit

Detail View

Key Action
Tab Cycle sections (info/goals/notes)
Space/Enter Toggle goal done
n Add note
g Add goal
D Edit description
x Delete goal (with confirm)
1-5 Set status (active/idea/paused/done/abandoned)
c Open Claude Code in project
[ / ] Prev/next project
Esc Back to list

Scan Mode (S from list)

Key Action
Enter Enter directory
h / Backspace Go to parent
s Scan current directory
Space Toggle project selection
a / n Select all / none
Enter Batch init selected projects

CLI Commands

All commands work without the TUI:

drift init [dir]              # Initialize project tracking
drift status                  # Show current project status
drift list [--sort=MODE]      # List all tracked projects
drift note "text"             # Add a note
drift goal "text"             # Add a goal
drift goal done N             # Mark goal #N done
drift progress N              # Set progress (0-100)
drift set-status STATUS       # Change project status
drift describe "text"         # Set description
drift tag tag1 tag2           # Add tags
drift link type url           # Set a link (repo/deploy/design)
drift scan [dir] [--depth=N]  # Find untracked projects
drift scan --init [dir]       # Find and auto-init all
drift open name               # Get project path
drift help                    # Show help

Claude Code Integration

drift integrates with Claude Code in three ways:

1. Launch from TUI: Press c in project detail to open an interactive Claude Code session in that project directory.

2. Auto-tracking via CLAUDE.md: drift init adds a ## drift section to the project's CLAUDE.md. Claude Code reads this at session start and automatically maintains notes and goals in .drift/project.json as it works.

3. Claude Code skill: Copy skills/drift/SKILL.md to ~/.claude/skills/drift/ for /drift commands inside Claude Code sessions.

Protocol

drift is protocol-first. The .drift/ file format is the product. CLI and TUI are just consumers.

your-project/
  .drift/
    project.json    # project metadata, goals, notes

~/.drift/
  registry.json     # index of all your projects

Anyone can build a drift-compatible tool. As long as it reads/writes .drift/project.json, it works.

Design Principles

  • File-based — plain JSON, no database, no server
  • Zero-frictiondrift init and you're done
  • Auto-enrichment — detects stack, repo URL from git/package.json/etc.
  • Tool-agnostic — works with Claude, Cursor, any AI, or no AI at all
  • Local-first — your data stays on your machine
  • Single binary — 5MB Go binary, zero runtime dependencies

Contributing

Contributions welcome! Feel free to open issues and pull requests.

License

MIT

About

Lightweight project tracker for AI-assisted (vibe) coders. Terminal TUI + CLI + open protocol. Track dozens of projects without leaving your terminal. Single Go binary, zero dependencies.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages