Noureddine RAMDI / Ghist: repo-native task management for AI coding agents with conflict-free JSON storage

Created Mon, 04 May 2026 10:23:02 +0000 Modified Sat, 23 May 2026 20:41:27 +0000

unnecessary-special-projects/ghist

Ghist tackles a common frustration in developer workflows: managing tasks and project events without the friction of external tools and Git conflicts. Instead of pushing tasks to a remote Jira or Linear board, Ghist lives inside your code repository, storing tasks as individual JSON files. This approach is especially designed to support AI coding agents like Claude by injecting task-sync instructions directly into agent session files.

repo-native task tracking with JSON files for AI agents

At its core, Ghist is a Go CLI tool that replaces external project management systems with a local-first, repo-integrated task tracker. It organizes tasks and events as separate JSON files inside a dedicated .ghist/ directory within your project. This design makes branching and merging seamless because each task is a discrete file — Git can easily handle conflicts or merges without the headaches of binary or monolithic database files.

The app injects synchronization instructions into agent-specific files like CLAUDE.md or AGENTS.md. This means that AI coding agents automatically load the latest task state when they start a session, persist their plans across interactions, and link commits to tasks without manual intervention.

Originally, Ghist used a SQLite database (ghist.sqlite) to store task data. However, this posed a problem on teams: SQLite files are binary and not merge-friendly, causing conflicts and lost data when multiple branches updated tasks concurrently. The migration to per-task JSON files solved this fundamental Git conflict problem. The migration process is automatic and seamless on the first run of a post-upgrade Ghist command, exporting all data to JSON and backing up the old SQLite file.

Ghist also includes a built-in web UI served on port 4777 for browsing and managing tasks interactively. It supports importing CSV exports from Jira and Linear, easing the transition from those tools.

balancing local-first design with team collaboration: tradeoffs and code quality

What sets Ghist apart is its tight coupling with AI coding agents and its design decision to avoid a centralized server or database. By storing every task and event as its own JSON file, it cleverly leverages Git’s strengths in handling text files and merges. This architecture avoids complex conflict resolution logic or locking mechanisms you might need with a monolithic database.

The tradeoff is in performance and data integrity guarantees. JSON files are simple and transparent but less performant for complex queries compared to a database. Also, atomicity and transactional guarantees are limited to Git commits rather than database transactions. For many team workflows, this is an acceptable compromise, especially since tasks are relatively lightweight.

The code written in Go is straightforward and pragmatic, focusing on developer experience and reliability. The automatic migration from SQLite to JSON files is a notable UX win, reducing friction for existing users. The injection of synchronization instructions into agent session files shows the project is tuned specifically for AI-assisted development workflows, a niche but growing area.

This repo is a good example of how tooling can evolve by rethinking data storage formats to align better with Git-based collaboration patterns. The web UI and CSV import features round out the experience, making it accessible beyond CLI users.

quickstart using official commands

To try Ghist, you can install it with Homebrew on macOS:

brew install unnecessary-special-projects/tap/ghist

For Linux or Windows, download the latest binary from the GitHub releases page.

Initialize Ghist in your project directory:

ghist init

From there, your AI agent will automatically run the following at the start of each session to sync tasks:

ghist status

To open the built-in web UI, run:

ghist serve

Then open your browser to http://localhost:4777.

After upgrading Ghist, refresh your project to apply new features:

ghist refresh

The first time you run any Ghist command after upgrading from v0.1, the tool automatically migrates your old SQLite database to the JSON file format, backing up the original.

verdict: ideal for AI-driven teams who want conflict-free repo-native task tracking

Ghist is a practical tool for teams working with AI coding agents who want to embed task tracking directly in their repositories without the overhead or conflicts of traditional project management databases. Its JSON file-per-task architecture respects Git’s strengths, making branching and merging painless.

It’s not designed for large-scale or complex query-heavy task management; the tradeoff favors simplicity, mergeability, and AI integration. If your workflow involves AI agents like Claude and you prefer local-first tools that avoid external dependencies, Ghist is worth exploring.

The automatic migration path from SQLite to JSON is a thoughtful touch that eases adoption. While the web UI is handy, the core value lies in its tight integration with AI session workflows and Git.

If you’re managing tasks in a more traditional way or need advanced analytics and search, you’ll find Ghist limited. But for the niche it serves, it’s a clean, well-implemented solution that addresses a concrete pain point with a clever architectural shift.


→ GitHub Repo: unnecessary-special-projects/ghist ⭐ 167 · Go