tweag/tricorder

Tricorder provides simple, fast, focused feedback when hacking on Haskell (with or without LLM agents).

Haskell

57

504 commits

updated Sep 22, 2026

See the code

README

Tricorder

Tricorder aims to empower users developing programs with Haskell and LLM coding agents. It does so by providing operations to surface the right information required at a given stage: documentation, build status, diagnostics, etc.

ℹ️ More information about how to use tricorder can be found in this presentation for the Haskell Foundation's "Haskell and AI Workshop".

Like similar tools (ghcid, ghciwatch), it builds the code continuously on every change, presents diagnostics, and runs the tests afterwards. However, Tricorder offers other advantages:

  • Designed for humans - A tricorder ui interactive TUI mode that presents stats in real time for developers.
  • Designed for agents - A SKILL is provided to inform agentic usage via the tricorder CLI.
  • Background builds - Building in the background using a daemon allows different clients to query the build state simultaneously without triggering multiple rebuilds. For instance, we ship the tricorder ui TUI and the tricorder status CLI command that communicate witha single daemon via a socket.
  • Sane defaults - Running tricorder start should Just Work™ for most cabal-based Haskell projects.
    • Daemon restarts automatically when cabal files change
    • If customization is needed it can be provided at different levels via a .tricorder.yaml or CLI args.
      • Optional config includes which cabal packages to watch, which exact command to use to enter a GHCi session, customizable key bindings, etc.
  • Multi-package projects - In a cabal.project workspace, Tricorder discovers every package's components automatically, building and running tests across all of them — no manual target configuration needed.
  • Project context - Tools like tricorder source Some.Module will attempt to find and provide the source code for a given dependency from disk, which allows exploring library APIs more easily.
  • Machine-readable output - Using tricorder status --json we can get build information in a format appropriate for programmatic usage.

For a deeper guide on the various features of Tricorder, see Features of Tricorder.

Usage

With the tricorder CLI in your path, start the Tricorder daemon either explicitly with tricorder start or automatically by just running tricorder ui, which will start the daemon if it's not already running and show you the TUI.

For using Tricorder with Claude Code, Copilot, or another coding agent, see Using with coding agents.

Installation

Tricorder is supported on both Linux and macOS.

Tricorder is published on both on Hackage and on Stackage from Stackage Nightly 2026-08-19 and onwards, so you may install it using either cabal or stack, whichever is your preference:

cabal install tricorder
# Or
stack install tricorder

On NixOS, when installing with cabal, you might get errors like this:

Missing dependency on a foreign library:
* Missing (or bad) C library: z

Pass the following flag to ensure zlib uses the zlib bundled with your system: --constraint='zlib +bundled-c-zlib'.

To install and use Tricorder in your NixOS configuration, see Using with Nix.

Tricorder is also released as pre-built binaries on GitHub.

GHC 9.14 support

Currently, multiple of our dependencies do not support GHC 9.14, and as such we are not able to officially support 9.14 just yet. But stay tuned, as we are eager to utilize the new multi-home features!

Configuring

See Configuring Tricorder

Development

nix develop
tricorder ui

Libraries

This repository also contains Atelier, a set of Haskell libraries providing foundational infrastructure for effect-based applications (to be extracted into their own repository).

Some less maintained Atelier libraries have been moved to atelier-extras.

agent
cli
developer-tools
feedback-loop
haskell
llm
tui

Contributors

Gipphe

314 commits

cgeorgii

163 commits

dependabot[bot]

20 commits

prednaz

2 commits

Languages

Haskell

94.9%

Nix

4.6%

tweag/tricorder

Tricorder provides simple, fast, focused feedback when hacking on Haskell (with or without LLM agents).

Haskell

57

504 commits

updated Sep 22, 2026

See the code

README

Tricorder

Tricorder aims to empower users developing programs with Haskell and LLM coding agents. It does so by providing operations to surface the right information required at a given stage: documentation, build status, diagnostics, etc.

ℹ️ More information about how to use tricorder can be found in this presentation for the Haskell Foundation's "Haskell and AI Workshop".

Like similar tools (ghcid, ghciwatch), it builds the code continuously on every change, presents diagnostics, and runs the tests afterwards. However, Tricorder offers other advantages:

  • Designed for humans - A tricorder ui interactive TUI mode that presents stats in real time for developers.
  • Designed for agents - A SKILL is provided to inform agentic usage via the tricorder CLI.
  • Background builds - Building in the background using a daemon allows different clients to query the build state simultaneously without triggering multiple rebuilds. For instance, we ship the tricorder ui TUI and the tricorder status CLI command that communicate witha single daemon via a socket.
  • Sane defaults - Running tricorder start should Just Work™ for most cabal-based Haskell projects.
    • Daemon restarts automatically when cabal files change
    • If customization is needed it can be provided at different levels via a .tricorder.yaml or CLI args.
      • Optional config includes which cabal packages to watch, which exact command to use to enter a GHCi session, customizable key bindings, etc.
  • Multi-package projects - In a cabal.project workspace, Tricorder discovers every package's components automatically, building and running tests across all of them — no manual target configuration needed.
  • Project context - Tools like tricorder source Some.Module will attempt to find and provide the source code for a given dependency from disk, which allows exploring library APIs more easily.
  • Machine-readable output - Using tricorder status --json we can get build information in a format appropriate for programmatic usage.

For a deeper guide on the various features of Tricorder, see Features of Tricorder.

Usage

With the tricorder CLI in your path, start the Tricorder daemon either explicitly with tricorder start or automatically by just running tricorder ui, which will start the daemon if it's not already running and show you the TUI.

For using Tricorder with Claude Code, Copilot, or another coding agent, see Using with coding agents.

Installation

Tricorder is supported on both Linux and macOS.

Tricorder is published on both on Hackage and on Stackage from Stackage Nightly 2026-08-19 and onwards, so you may install it using either cabal or stack, whichever is your preference:

cabal install tricorder
# Or
stack install tricorder

On NixOS, when installing with cabal, you might get errors like this:

Missing dependency on a foreign library:
* Missing (or bad) C library: z

Pass the following flag to ensure zlib uses the zlib bundled with your system: --constraint='zlib +bundled-c-zlib'.

To install and use Tricorder in your NixOS configuration, see Using with Nix.

Tricorder is also released as pre-built binaries on GitHub.

GHC 9.14 support

Currently, multiple of our dependencies do not support GHC 9.14, and as such we are not able to officially support 9.14 just yet. But stay tuned, as we are eager to utilize the new multi-home features!

Configuring

See Configuring Tricorder

Development

nix develop
tricorder ui

Libraries

This repository also contains Atelier, a set of Haskell libraries providing foundational infrastructure for effect-based applications (to be extracted into their own repository).

Some less maintained Atelier libraries have been moved to atelier-extras.

agent
cli
developer-tools
feedback-loop
haskell
llm
tui

Contributors

Gipphe

314 commits

cgeorgii

163 commits

dependabot[bot]

20 commits

prednaz

2 commits

Languages

Haskell

94.9%

Nix

4.6%