Lightweight, embeddable task management system for Go — CLI + SDK backed by SQLite.
Platforms: macOS, Linux, Windows
gig gives you task tracking with dependencies, hierarchy, events, and a built-in web UI — all in a single binary with zero runtime dependencies. Use it as a standalone CLI or import it as a Go SDK into your own applications.
# Install
brew install neerajg03/tap/gig
# Or via Go
go install github.com/NeerajG03/gig/cmd/gig@latest
# Initialize
gig init --prefix myapp
# Start tracking
gig create "Fix login bug" --type bug --priority 1 --assignee neeraj
gig create "Add OAuth" --type feature --priority 2
gig list
gig show myapp-a3f8
gig close myapp-a3f8 --reason "Fixed in commit abc123"- SDK-first — the CLI is a thin wrapper; import
github.com/NeerajG03/gigin any Go app. - Pure Go SQLite — single binary, no CGO, no runtime dependencies. Uses modernc.org/sqlite.
- Task hierarchy — parent/child tasks with ladder IDs (
gig-a3f8.1,.1.1). Full tree view viagig list --tree. - Dependency DAG —
gig dep add/remove/tree/cycleswith automatic cycle detection. - Custom attributes — typed key-value metadata (string, boolean, JSON object) with a schema registry.
- Event system — every mutation recorded. SDK callbacks, shell hooks, queryable audit log.
- Web UI — built-in kanban board via
gig uiwith drag-and-drop status changes. - Agent-friendly —
--jsonoutput on all commands,--actorflag for attribution,--quietfor scripting. - Shell completions — dynamic tab-completion for task IDs, flags, and attribute keys (bash/zsh/fish).
- JSONL sync — export/import for backup or git-based collaboration.
| Command | Action |
|---|---|
gig create "Title" --priority 1 |
Create a task. |
gig list |
List open tasks (table view). |
gig list --tree |
Hierarchical tree view. |
gig show <id> |
Task details, comments, deps, subtree. |
gig update <id> --claim |
Atomically claim a task (sets assignee + in_progress). |
gig close <id> --reason "done" |
Close a task. |
gig dep add <task> <blocker> |
Add a dependency. |
gig ready |
Tasks with no unresolved blockers. |
gig search <query> |
Search titles and descriptions. |
gig config set <key> <value> |
Update configuration. |
gig ui |
Launch web kanban board. |
gig uses hierarchical IDs for structured task breakdown:
myapp-a3f8— Epicmyapp-a3f8.1— Taskmyapp-a3f8.1.1— Subtask
Create subtasks with --parent:
gig create "Design API" --type epic
gig create "Implement endpoints" --parent myapp-a3f8
gig create "Write tests" --parent myapp-a3f8import "github.com/NeerajG03/gig"
store, _ := gig.Open("tasks.db", gig.WithPrefix("myapp"))
defer store.Close()
task, _ := store.Create(gig.CreateParams{
Title: "Implement feature X",
Type: gig.TypeFeature,
Priority: gig.P1,
})
store.On(gig.EventStatusChanged, func(e gig.Event) {
fmt.Printf("Task %s: %s -> %s\n", e.TaskID, e.OldValue, e.NewValue)
})
store.UpdateStatus(task.ID, gig.StatusInProgress, "agent-1")All data lives in ~/.gig/ (override with GIG_HOME env var):
~/.gig/
├── gig.db # SQLite database
├── gig.yaml # Configuration
├── tasks.jsonl # Exported tasks (for sync)
└── events.jsonl # Exported event history
Configure via CLI or YAML:
gig config set default_view tree # "list" or "tree"
gig config set show_all true # include closed tasks
gig config set prefix myapp # ID prefix
gig config set hash_length 6 # ID hash length (3-8)source <(gig completion bash) # bash
source <(gig completion zsh) # zsh
gig completion fish | source # fish# Homebrew (recommended)
brew install neerajg03/tap/gig
# Or Go install
go install github.com/NeerajG03/gig/cmd/gig@latest
# Or build from source
git clone https://github.com/NeerajG03/gig.git
cd gig && go build -o gig ./cmd/gig/Requirements: Go 1.21+
- Architecture — system design, data flow, schema
- SDK Reference — full API documentation
- Roadmap — what's done and what's next
- Security — vulnerability reporting and scope
MIT