Concepts

Understanding HZL’s design and core primitives.

Why HZL?

Most task trackers are built for humans. HZL is built for agents:

  • Backend-first - Task database with a CLI, not another Trello
  • Model-agnostic - Tasks live outside any vendor’s memory
  • Multi-agent safe - Atomic claiming prevents duplicate work
  • Resumable - Checkpoints let work survive session boundaries

If you already have a favorite human todo app, keep it. HZL is for shared task state that multiple agents can read and write.

Installation Model

HZL uses a machine-level installation with a user-level database:

Component Location Scope
CLI binary Global (npm/Homebrew) Per machine
Database ~/.local/share/hzl/ Per user account
Projects Logical containers in database Cross-repo

You install HZL once. It’s not cloned into each repo, not installed per-project. One global CLI serves all your work.

The database is shared. All projects across all your repos write to the same ~/.local/share/hzl/events.db. This enables cross-repo coordination.

Common Misconceptions

Misconception Reality
“I need to clone the HZL repo” No—install the CLI (npm install -g hzl-cli)
“Each repo gets its own HZL” No—one installation covers all repos
“Projects map to filesystem paths” No—projects are logical groupings you define
“I need hzl init in each repo” No—run once per machine

What Goes in Repos?

Only the agent policy snippet in AGENTS.md or CLAUDE.md. This teaches agents when to use HZL—it doesn’t install anything.

Simplicity through Constraints

HZL enforces intentional limits that keep task management tractable:

One Level of Nesting

Project
└── Task (can be a parent)
    └── Subtask (max depth)

Subtasks cannot have their own subtasks. This prevents deeply nested hierarchies.

Dependencies Within Projects Only

Dependencies (--depends-on) only work between tasks in the same project. No cross-project dependencies.

Why? Cross-project dependencies create complexity:

Level Problem
Technical Tracking relationships across task graphs
Mental Hard to reason about external blockers
Practical “When can I start?” becomes a distributed query

Project-to-Repo Mapping

Typical pattern: One repository = one HZL project.

Repo Structure HZL Mapping
Single repo One project
Monorepo One project (intra-repo deps work)
Split repos with shared features One project per initiative

Core Primitives

Projects

Stable containers for related work. Think of them as folders that group tasks together.

hzl project create auth-feature

Tasks

Units of work with statuses, ownership, and progress tracking.

hzl task add "Implement login" -P auth-feature
hzl task claim 1 --assignee claude-code

Subtasks

Break a task into smaller pieces. Max one level of nesting.

hzl task add "Write tests" --parent 1

Dependencies

Sequence work. A task with unmet dependencies is blocked.

hzl task add "Deploy" -P auth-feature --depends-on 1

Checkpoints

Progress snapshots that preserve context across sessions.

hzl task checkpoint 1 "Schema designed, moving to implementation"

Claiming & Leases

Ownership and time-limited claims for coordination.

hzl task claim 1 --assignee claude-code --lease 30

Cloud Sync

Optional backup and multi-device access via Turso.

hzl init --sync-url libsql://<db>.turso.io

How They Work Together

Project: auth-feature
├── Task 1: Design API schema
│   └── Subtask 1a: Define user table
│   └── Subtask 1b: Define session table
├── Task 2: Implement endpoints (depends on Task 1)
└── Task 3: Write tests (depends on Task 2)
  • Projects group related tasks
  • Tasks are claimed and worked on
  • Subtasks break down complex tasks
  • Dependencies enforce ordering
  • Checkpoints preserve progress
  • Leases enable stuck detection

What HZL Does Not Do

HZL is deliberately limited:

  • No orchestration - Doesn’t spawn agents or assign work
  • No task decomposition - Doesn’t break down tasks automatically
  • No smart scheduling - Uses simple priority + FIFO ordering
  • No reminders - Pair with a scheduler for time-based triggers

These are features for your orchestration layer, not the task tracker.


Table of contents


Back to top

HZL - External task ledger for coding agents

This site uses Just the Docs, a documentation theme for Jekyll.