Tool

Visualize coding-agent sessions on a 3D codebase map

mindwalk replays Claude Code and Codex coding-agent sessions as glowing light moving across a 3D map of your codebase, fully local.

Works with claudecodex

91
Spark score
out of 100
Updated 16 days ago
Version 0.3.0
Models
claude

Add to Favorites

Why it matters

Understand how AI coding agents explored and modified your codebase by replaying their session logs as animated 3D visualizations that show which files were searched, read, and edited, revealing the agent's mental model of the task.

Outcomes

What it gets done

01

Replay Claude Code and Codex session logs as glowing paths through a 3D repository map

02

Identify agent exploration patterns, scope drift, and friction signals like error rates and churned files

03

Inspect individual file visit histories and jump to specific moments in the agent's timeline

04

Evaluate session quality using local LLM judges that anchor findings to timeline events

Install

Add it to your toolbox

Run in your project directory:

curl -fsSL https://spark.entire.vc/get/cosmtrek-mindwalk | bash

Overview

Mindwalk

mindwalk is a local Go tool that replays Claude Code and Codex coding-agent session logs as light moving across a 3D map of the codebase, showing at a glance where the agent searched, read, and edited, with an optional local-CLI-powered evaluation of the session's trajectory. Use it to visually review how a Claude Code or Codex agent explored and modified a codebase instead of reading a raw JSONL transcript; viewing sessions is fully local, and only the explicit, opt-in evaluation feature sends a session summary to your own claude/codex CLI's model.

What it does

mindwalk is a visualization tool that replays coding-agent sessions on a 3D map of your codebase. A raw session log records what an agent did, but not how it understood the task - which parts of the repo it treated as relevant, where it explored before acting, whether its footprint matched the intended scope - and reading JSONL line by line doesn't answer that. mindwalk instead draws the repository as a night map and plays the session back as light moving through it: wherever the agent searched, read, or edited glows, everything else stays dark, so the agent's understanding of the task becomes a shape visible at a glance.

It's a single Go binary that reads Claude Code and Codex session logs, runs fully local, and sends nothing anywhere while viewing sessions - the one exception is an explicit, opt-in session evaluation feature. The UI offers Tree and Terrain views of the repo (radial tree or treemap, glow proportional to how deeply and often a file was touched), tracks each file's deepest touch state (seen, read, edited, or unvisited, with files no longer in the repo lingering as wireframe ghosts), and folds friction signals - error rate, churned files, edits after the last verify - into a review strip on the HUD. A playback deck scrubs or plays the session over a bucketed histogram on a cool/warm spectrum (observation cool, mutation warm), with timeline marks for context compactions, subagent launches, and user turns, each a click-to-jump target. When a session launched subagents, an "agent lenses" panel lets you replay any subagent's trace on the same map and step back out to the main trace. A separate mindwalk map <repo> mode renders any repository's citymap with no session attached, with height encoding lines of code instead of agent attention.

Session evaluation asks a local agent CLI (your own claude or codex) to judge how a session went - exploration, scope, wandering, verification - with every finding anchored to a clickable timeline event; this is the only feature that sends data anywhere, and only when explicitly invoked, sending that session's summary (user message wording, file paths, one-line event digests) to the model behind your own CLI account. The judge subprocess runs sealed, with no tools, MCP servers, or session persistence, and reports are cached locally per session, going stale (never auto-rerunning) only when the underlying session's content changes.

When to use - and when NOT to

Use mindwalk when you want to understand or review how a Claude Code or Codex agent actually approached a task - whether it explored the right parts of the codebase, stayed in scope, or wandered before converging - rather than manually reading a raw JSONL session transcript. It's a fit for reviewing an agent's work after the fact, debugging unexpected behavior, or building intuition for how an agent explores a codebase before making changes.

It's scoped specifically to Claude Code and Codex session log formats (via dedicated adapters) rather than being a general-purpose agent-log viewer for arbitrary formats. The optional evaluation feature depends on having the claude or codex CLI installed and authenticated locally, and it does send a session summary to that CLI's backing model - if that's undesirable, the visualization itself (which never sends anything) is still fully usable on its own.

Inputs and outputs

Install with the official script and run with no arguments to auto-scan default session directories:

curl -fsSL https://raw.githubusercontent.com/cosmtrek/mindwalk/master/scripts/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"
mindwalk

Input is Claude Code session logs (~/.claude/projects) and Codex session logs (~/.codex/sessions) by default, or a specific session file (mindwalk open <session.jsonl>) or repository (mindwalk map <repo>). Additional commands write intermediate artifacts directly: mindwalk build <repo> -o out writes the repository citymap JSON, and mindwalk trace <session> -o out writes the normalized trace JSON.

Output is a local web UI (served on a random port and opened in a browser) rendering the 3D repo map and session playback, plus, for mindwalk analyze, a cached JSON evaluation report with evidence-anchored findings stored in ~/.mindwalk/reports. Playback can be exported client-side to a .webm video via the deck's menu.

Integrations

mindwalk reads Claude Code and Codex session log formats natively through dedicated internal adapters, and its optional evaluation feature shells out to your locally installed and authenticated claude or codex CLI as the judging model - it does not call any model API directly itself. The frontend is React and Three.js, served by a local Go server; exported JSON contracts for traces, citymaps, and reports are documented under schema/.

Who it's for

Developers and teams using Claude Code or Codex who want to visually audit, debug, or build intuition about how their coding agents explore and modify a codebase - reviewing scope creep, wasted exploration, or verification gaps at a glance instead of parsing raw session logs. It is licensed under MIT.

Source README

mindwalk

A visualization tool that replays coding-agent sessions on a 3D map of your codebase.

https://github.com/user-attachments/assets/5153481b-3805-45e6-a61f-372250a969eb

The problem

A session log records what an agent did, but not how it understood the task:
which parts of the repo it treated as relevant, where it explored before it
acted, whether its footprint matched the scope you had in mind. Reading the
raw JSONL line by line doesn't answer any of that.

The idea

Draw the repository as a night map, and play the session back as light moving
through it: where the agent searched, read, and edited, the map glows -
everything else stays dark. The agent's understanding of the task becomes a
shape you can see at a glance. One Go binary reads Claude Code and Codex
session logs, fully local; viewing sends nothing anywhere. The one exception
is the optional session evaluation: when you explicitly run it, a summary of
that session (task wording, file paths, event digests) is sent to the model
behind your own claude or codex CLI - see
Session evaluation.

Quick start

curl -fsSL https://raw.githubusercontent.com/cosmtrek/mindwalk/master/scripts/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"
mindwalk

The installer verifies the binary against checksums.txt and installs to
~/.local/bin (override with INSTALL_DIR; pin a release with VERSION).
Windows archives are on GitHub Releases.
To build from source: make setup && make buildbin/mindwalk.

With no arguments, mindwalk scans ~/.claude/projects and ~/.codex/sessions,
serves the UI on a random local port, and opens a browser:

mindwalk serve [--port N] [--no-open] [--claude-dir DIR] [--codex-dir DIR]
mindwalk open [--no-open] <session.jsonl>   open one specific session
mindwalk map [--no-open] <repo>             open a repository map, no session needed
mindwalk build <repo> [-o out]              write the repository citymap JSON
mindwalk trace <session> [-o out]           write the normalized trace JSON
mindwalk analyze <session> [--judge claude|codex] [--model name]
                                            evaluate one session (see below)

Reading the picture

  • Tree / Terrain views - the repo as a radial tree or a treemap plain;
    glow ∝ how deeply and how often a file was touched.
  • Touch states - each file keeps its deepest touch: seen (moss green),
    read (moonlight blue), edited (warm amber), unvisited (dark). Files the
    session touched that are no longer in the repo linger as wireframe ghosts.
    The HUD folds friction signals - error rate, churned files, edits after the
    last verify - into a review strip.
  • Playback deck - scrub or play the session over a bucketed histogram of
    the run. Bars sit on a cool/warm spectrum: observation stays cool (search,
    read, exec), mutation glows warm (edit, verify), so editing phases jump out
    at a glance. Restart, speed, and video export fold into the deck's menu;
    export records the playback to a .webm entirely client-side.
  • Timeline marks - context compactions, subagent launches,
    user turns; every mark is a click-to-jump target.
  • Agent lenses - when a session launched subagents, the HUD carries a
    subagent count and an agents panel: pick a lens to replay any subagent's
    trace on the same map, then step back out to the main trace.
  • Inspector - click a file to pin its visit history; click a visit row to
    jump the playhead to that moment.
  • Evaluate - ask a local agent CLI to judge the session's trajectory;
    session rows carry the evaluation state as a quiet badge. See
    Session evaluation.
  • Repo map - mindwalk map <repo> (or the folder icon in the session
    rail) renders any repository's citymap with no session attached; height
    encodes lines of code instead of attention.

Keyboard: Space play/pause · / step ( ×10) · Home/End ends ·
S speed · V view · E next edit · X next error · M next mark ·
⌘B session rail.

Session evaluation

The evaluate panel (and mindwalk analyze) asks a local agent CLI to judge
how the session went - exploration, scope, wandering, verification - with
every finding anchored to timeline events you can click through to. Pick the
judge (any installed CLI) and its model in the panel; the report records who
actually judged.

What leaves your machine, and only when you ask: evaluation runs your own
claude or codex CLI, which sends that session's summary - the user
messages' wording, file paths, and one-line event digests - to the model
behind your account. Nothing is sent while viewing sessions, and no other
session is included. The judge subprocess runs sealed: no tools, no MCP
servers, no user or project settings, and no session persistence.

Reports are cached in ~/.mindwalk/reports, one per session; a report goes
stale (never auto-reruns) when the session's content changes.

Under the hood

Three artifacts, kept deliberately separate:

  1. a trace - the session log normalized into an ordered stream of
    file-touch events (internal/adapter, one adapter per agent format);
    adapters also correlate subagent sessions into an agent graph, so each
    subagent's trace can be replayed on its own;
  2. a citymap - a deterministic layout of the repository
    (internal/citymap); the same tree always produces the same map, so
    replays are comparable across sessions;
  3. a report - an LLM judge's evidence-anchored findings about one
    session (internal/judge); the judge only contributes findings, verdicts
    are always rolled up mechanically, so reports stay comparable too.

A local Go server (internal/server) joins them and serves the
React/Three.js frontend (web). schema/ mirrors the exported JSON contracts.

Star History

Star History Chart

FAQ

Common questions

Discussion

Questions & comments · 0

Sign In Sign in to leave a comment.