Skip to content

Turn your AI conversations into documents anyone can read.

NetCodex finds the chats that Codex, Claude Code, Copilot, Cursor and other AI tools keep on your computer, and exports them as Markdown, PDF or a web page. Nothing leaves your machine.

  • Free and open source
  • Windows, macOS and Linux
  • No account needed
rollout-2026-04-18.jsonl
You

Why does the invoice search take several seconds? Can you fix it?

exec_command

psql -c "EXPLAIN ANALYZE SELECT * FROM invoices WHERE customer_id = 42"
Seq Scan on invoices (cost=0.00..48211.40)
Execution Time: 3104.882 ms
Codex

The query reads the whole table. I'll add an index: CREATE INDEX idx_invoices_customer_date ON invoices (customer_id, issued_at);

exec_command

psql -c "CREATE INDEX idx_invoices_customer_date ON invoices (customer_id, issued_at);"
CREATE INDEX
psql -c "EXPLAIN ANALYZE SELECT * FROM invoices WHERE customer_id = 42"
Index Scan using idx_invoices_customer_date
Execution Time: 41.207 ms
pytest
212 passed in 18.4s

The original transcript: every message, tool call and output, exactly as the tool saved it.

AI tools it can read
14
export formats
4
files uploaded anywhere
0
languages, Spanish and English
2

Download, open, export. No folders to find.

The app scans this computer for the AI tools you use and lists their conversations right away. Export everything with one click, or pick the chats you want.

Desktop app

NetCodex for Windows

Install it, open it, and it finds the AI tools on your computer and their chats by itself. Pick conversations and export them. Everything stays on your machine.

Download for Windows (.exe)
Version
0.10.0
Size
36.0 MB
Windows 10 / 11
64-bit, installs for your user only
SHA-256 of NetCodex-Setup-0.10.0-x64.exe3acc93a23009b5faa0bff13fd758058a2f56d0d2912ac1b5ed33cf4a319df0e7

No install needed:portable .exe(41.8 MB)

SHA-256 of NetCodex-0.10.0-portable.exe13f70d61c6ce1b0a3a40231bab9e1820989a282ae0508de616f13d327ca86cf5

The installer is not code-signed yet, so Windows SmartScreen may say it protected your PC. Choose More info, then Run anyway. If Windows says it protected your PC

See the full install guide

NetCodex for Linux

Install it for your user and open it from the applications menu or desktop. Python, QtWebEngine and fonts are included; no need to install Python, Chrome or Quarkdown.

Linux x86_64 (64-bit Intel/AMD), glibc 2.35 or later and a graphical session with its usual desktop libraries. FUSE is not required. ARM64 and Alpine/musl are not supported.

The Linux installer has not been staged in this environment yet.

Version
0.9.1
Size
236.0 MB
SHA-256 of NetCodex-Setup-0.9.1-linux-x86_64.runda4f82d2fdd947c342bab7c22a248abfa01c50b6bedd34bf7a152c20b8110191
How to install NetCodex on Linux

NetCodex for macOS

One ZIP with the portable app and an installer for Applications. Includes chat transfer between compatible versions of Codex, Claude Code Desktop, Cursor and Antigravity App.

macOS 14.4 or later. Choose Apple Silicon for M-series chips or Intel for Intel processors. Python and the PDF engine are included.

Test package: startup and chat continuation still need testing on a real Mac. No Developer ID signature or notarization.

Apple Silicon · M1/M2/M3/M4…

This architecture’s package is not staged in this environment.

0.9.1 · 589.1 MB

Verify download (SHA-256)
SHA-256 of NetCodex-0.9.1-macos-arm64.zipa94af4c4549ce627cb65614cd7e41e704a13a62252342b7c049fa1f8028f800e

Intel · x86_64

This architecture’s package is not staged in this environment.

0.9.1 · 597.4 MB

Verify download (SHA-256)
SHA-256 of NetCodex-0.9.1-macos-x86_64.zip0836dc6619d6ca9a1fd8674c004a28253bb13cc94c0fecfb5c3260a61d95743b
  1. Extract the ZIP. Open NetCodex.app to run without installing.
  2. To install permanently, open Instalar NetCodex.command: it copies the app to your user Applications folder.
  3. Try transferring a synthetic chat. Diagnosticar NetCodex.command creates a local report without your conversations.

Your chats, projects and files, together

NetCodex 0.8.2 keeps conversation export and adds continuity between agents and a local file explorer.

Export one or all

Choose one chat or export every conversation from an agent. Save Markdown, PDF, HTML or Quarkdown under the conversation name, in Documents or your preferred folder. Keep the original transcript or pick the readable view: a short story, every message in full and one line per tool step.

Continue in another agent

Choose a detected AI application, review the project and select attachments. Prepare a compatible new session or a portable package with the full history and a continuity summary.

Find your files

Browse agent folders and temporary files, filter by origin and type, preview images, text and PDF, and save copies of selected files. Files without a confirmed origin appear as Unidentified.

Integrated import is available for compatible Codex CLI and Claude Code variants. Desktop apps, extensions and other agents have their own capabilities; when integration is unavailable, NetCodex explains the manual steps. Original conversations are preserved.

Works with your agents

Claude Code and Codex keep their chats on your computer. NetCodex reads them where they are, moves a chat from one agent to another and answers your agents' questions about earlier chats.

Continue a chat in another agent

Pick a chat and a destination. NetCodex copies the whole conversation into that agent's own history, so it opens there like any other chat. When the destination already reads the same history, it says so and shows how to open the chat instead of copying it.

Claude Code
DesktopCLIVS CodeBeta
Codex
AppCLIVS CodeBeta

OpenCode and Antigravity can receive chats too.

Chats moved between agents

Codex · App → Claude Code · Desktopcopied into its history

Claude Code · CLI → Codex · CLIcopied into its history

Claude Code · CLI → Claude Code · VS CodeAlready in your history

Codex · CLI → Codex · VS CodeAlready in your history

Ask your agent about your chats

Connect NetCodex to Claude Code or Codex over MCP, from Settings in the app. Then ask in plain words, from any folder. Everything stays on your computer.

How to connect it
In Claude Code or Codex, with NetCodex connected
  1. youfind my chat about the migration

    netcodex · search_chats

    “Move the database to Postgres”, Codex, with a short excerpt

  2. yousummarize what we did yesterday

    netcodex · list_chats, get_story

    what was asked, what was done and how it ended

  3. youexport this conversation

    netcodex · export_chat

    a Markdown file in your exports folder

Agent folders, recognized

Agents create folders of their own. NetCodex groups them apart from your projects, and one click makes any of them a project.

  • Codex daily foldersDocuments\Codex\<date>\<chat>
  • Claude scratch foldersClaude\scratch-workspaces\…\scratch-<date>
  • Worktrees, under their repository<repo>\.claude\worktrees\<name>

Pick a chat up in the terminal

Every Claude Code and Codex chat in the app comes with the exact command that resumes it in its folder. Copy it, paste it in PowerShell or a terminal.

cd 'D:\projects\shop' ; claude --resume 5f0c2a8e-1111-4222-8333-444444444444

The desktop app keeps itself up to date: it checks for new versions, verifies their signature and installs one when you choose Update now. Automatic updates

Three steps from chat to document

No setup and no configuration files. NetCodex reads each tool's history where it already is.

  1. Open NetCodex

    It looks for Codex, Claude Code, Copilot, Cursor, Gemini CLI and the rest, and shows how many conversations each one has.

  2. Pick conversations and a look

    Keep the conversation as it looks, or switch to the readable view. Choose a template for PDF and web pages.

  3. Export to a folder

    Markdown, PDF, HTML or Quarkdown files land in a folder you choose, with an index. Next time, only new chats are added.

Two ways to read the same conversation

The exact record, for audits and debugging. A readable version, without the raw tool output. Both come from the same chat.

Original

Every message, command and tool output, in the order it happened.

rollout-2026-05-02.jsonl9 lines
  1. {"role":"user","content":"The login test fails now and then in CI. Can you take a look?"}
  2. {"type":"function_call","name":"exec_command","arguments":{"cmd":"pytest tests/test_login.py --count=20"}}
  3. {"type":"function_call_output","output":"FAILED tests/test_login.py::test_session_expiry[4-20] … 3 failed, 17 passed in 5.9s"}
  4. {"role":"assistant","content":"The test reads the real clock. I’ll freeze time with freezegun."}
  5. {"type":"function_call","name":"apply_patch","arguments":{"input":"*** Update File: tests/test_login.py …"}}
  6. {"type":"function_call_output","output":"Success. Updated the following files: M tests/test_login.py"}
  7. {"type":"function_call","name":"exec_command","arguments":{"cmd":"pytest tests/test_login.py --count=20"}}
  8. {"type":"function_call_output","output":"20 passed in 6.1s"}
  9. {"role":"assistant","content":"Done: the test freezes time and passed all 20 runs."}

Readable

A short story of what was asked, what was done and how it ended; then every message in full and one line per tool step.

The login test fails now and then in CI. Can you take a look?

What was asked. You asked Codex: “The login test fails now and then in CI. Can you take a look?”

What was done. Codex edited tests/test_login.py and ran 2 commands (1 failed).

How it ended. The last test run (pytest tests/test_login.py --count=20): 20 passed. Its last answer begins, verbatim: “Done: the test freezes time and passed all 20 runs.”

  1. line 1

    User. The login test fails now and then in CI. Can you take a look?

  2. lines 2–3

    What the assistant did

    Ran the tests (pytest tests/test_login.py --count=20) — 17 passed, 3 failed

  3. line 4

    Assistant. The test reads the real clock. I’ll freeze time with freezegun.

  4. lines 5–6

    What the assistant did

    Applied changes to tests/test_login.py

  5. lines 7–8

    Ran the tests (pytest tests/test_login.py --count=20) — 20 passed

  6. line 9

    Assistant. Done: the test freezes time and passed all 20 runs.

Each message and each tool sentence comes from one line of the record, or from one call and its output: point at it to see which. The story sums up the whole record.

The same conversation in five templates

For PDF and web exports. Pick one when you export and switch whenever you like.

  • Chat

    The story on top, one bubble per speaker, the assistant's actions folded away.

  • Transcript

    Interview style, with the time of every line.

  • Report

    The story, summary and key facts first, then the dialogue and an appendix with every action.

  • Book

    Serif type, the story as its opening, one chapter per working day, contents up front.

  • Minimal

    Plain, compact text: the story in three lines, then the conversation.

Private by design

  • Reads in place

    Chats are read from the folders where each tool keeps them. Nothing is copied to a server.

  • No account

    There is nothing to sign up for. NetCodex has no cloud, no tracking and no history of its own.

  • You choose what to share

    Local file paths are left out by default, so exports are safe to send.

Your conversations are already on disk.

Each tool keeps its chats in its own folder. Here is where, on Windows, macOS and Linux. Once installed, netcodex where lists the ones on your machine.

ToolStatusWindowsmacOSLinuxWhat to import
Codex CLI / VS Code / DesktopCODEX_HOMEsupported
  • %USERPROFILE%\.codex\state_*.sqlite
  • %USERPROFILE%\.codex\thread_history_*.sqlite
  • %USERPROFILE%\.codex\sessions\YYYY\MM\DD\rollout-*.jsonl
  • %USERPROFILE%\.codex\archived_sessions\rollout-*.jsonl
  • %USERPROFILE%\.codex\session_index.jsonl
  • ~/.codex/state_*.sqlite
  • ~/.codex/thread_history_*.sqlite
  • ~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl
  • ~/.codex/archived_sessions/rollout-*.jsonl
  • ~/.codex/session_index.jsonl
  • ~/.codex/state_*.sqlite
  • ~/.codex/thread_history_*.sqlite
  • ~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl
  • ~/.codex/archived_sessions/rollout-*.jsonl
  • ~/.codex/session_index.jsonl
state_*.sqlite, thread_history_*.sqlite, rollout-*.jsonl, session_index.jsonl
Claude Code CLI / VS CodeCLAUDE_CONFIG_DIRsupported
  • %USERPROFILE%\.claude\projects\<project>\<session>.jsonl
  • ~/.claude/projects/<project>/<session>.jsonl
  • ~/.claude/projects/<project>/<session>.jsonl
<session>.jsonl, <session>/subagents/agent-*.jsonl
Claude Desktop (Code tab)CLAUDE_CONFIG_DIRsupported
  • %APPDATA%\Claude\claude-code-sessions\**\local_*.json
  • %USERPROFILE%\.claude\projects\<project>\<session>.jsonl
  • ~/Library/Application Support/Claude/claude-code-sessions/**/local_*.json
  • ~/.claude/projects/<project>/<session>.jsonl
  • ~/.config/Claude/claude-code-sessions/**/local_*.json
  • ~/.claude/projects/<project>/<session>.jsonl
local_*.json (titles), <session>.jsonl (transcripts)
Claude Coworksupported
  • %APPDATA%\Claude\local-agent-mode-sessions\**\local_<id>.json
  • %APPDATA%\Claude\local-agent-mode-sessions\**\local_<id>\.claude\projects\**\*.jsonl
  • ~/Library/Application Support/Claude/local-agent-mode-sessions/**/local_<id>.json
  • ~/Library/Application Support/Claude/local-agent-mode-sessions/**/local_<id>/.claude/projects/**/*.jsonl
  • ~/.config/Claude/local-agent-mode-sessions/**/local_<id>.json
  • ~/.config/Claude/local-agent-mode-sessions/**/local_<id>/.claude/projects/**/*.jsonl
local_<id>.json, local_<id>/.claude/projects/**/*.jsonl
Claude.ai (official data export)NETCODEX_CLAUDE_AI_EXPORTsupported
  • %USERPROFILE%\Downloads\data-*.zip
  • %USERPROFILE%\Downloads\<folder>\conversations.json
  • ~/Downloads/data-*.zip
  • ~/Downloads/<folder>/conversations.json
  • ~/Downloads/data-*.zip
  • ~/Downloads/<folder>/conversations.json
data-*.zip, conversations.json
GitHub Copilot Chatsupported
  • %APPDATA%\<editor>\User\workspaceStorage\<hash>\chatSessions\*.jsonl
  • %APPDATA%\<editor>\User\workspaceStorage\<hash>\chatSessions\*.json
  • %APPDATA%\<editor>\User\globalStorage\emptyWindowChatSessions\*.json
  • ~/Library/Application Support/<editor>/User/workspaceStorage/<hash>/chatSessions/*.jsonl
  • ~/Library/Application Support/<editor>/User/workspaceStorage/<hash>/chatSessions/*.json
  • ~/Library/Application Support/<editor>/User/globalStorage/emptyWindowChatSessions/*.json
  • ~/.config/<editor>/User/workspaceStorage/<hash>/chatSessions/*.jsonl
  • ~/.config/<editor>/User/workspaceStorage/<hash>/chatSessions/*.json
  • ~/.config/<editor>/User/globalStorage/emptyWindowChatSessions/*.json
chatSessions/*.jsonl, chatSessions/*.json
GitHub Copilot CLIsupported
  • %USERPROFILE%\.copilot\session-state\<id>\events.jsonl
  • ~/.copilot/session-state/<id>/events.jsonl
  • ~/.copilot/session-state/<id>/events.jsonl
events.jsonl
Cline / Roo Code / Kilo Codesupported
  • %APPDATA%\<editor>\User\globalStorage\saoudrizwan.claude-dev\tasks\<id>\api_conversation_history.json
  • %APPDATA%\<editor>\User\globalStorage\rooveterinaryinc.roo-cline\tasks\<id>\api_conversation_history.json
  • %APPDATA%\<editor>\User\globalStorage\kilocode.kilo-code\tasks\<id>\api_conversation_history.json
  • ~/Library/Application Support/<editor>/User/globalStorage/saoudrizwan.claude-dev/tasks/<id>/api_conversation_history.json
  • ~/Library/Application Support/<editor>/User/globalStorage/rooveterinaryinc.roo-cline/tasks/<id>/api_conversation_history.json
  • ~/Library/Application Support/<editor>/User/globalStorage/kilocode.kilo-code/tasks/<id>/api_conversation_history.json
  • ~/.config/<editor>/User/globalStorage/saoudrizwan.claude-dev/tasks/<id>/api_conversation_history.json
  • ~/.config/<editor>/User/globalStorage/rooveterinaryinc.roo-cline/tasks/<id>/api_conversation_history.json
  • ~/.config/<editor>/User/globalStorage/kilocode.kilo-code/tasks/<id>/api_conversation_history.json
api_conversation_history.json, ui_messages.json
Cursorsupported
  • %APPDATA%\Cursor\User\globalStorage\state.vscdb
  • ~/Library/Application Support/Cursor/User/globalStorage/state.vscdb
  • ~/.config/Cursor/User/globalStorage/state.vscdb
state.vscdb
Gemini CLIsupported
  • %USERPROFILE%\.gemini\tmp\<hash>\chats\session-*.json
  • %USERPROFILE%\.gemini\tmp\<hash>\logs.json
  • ~/.gemini/tmp/<hash>/chats/session-*.json
  • ~/.gemini/tmp/<hash>/logs.json
  • ~/.gemini/tmp/<hash>/chats/session-*.json
  • ~/.gemini/tmp/<hash>/logs.json
session-*.json, logs.json
Continuesupported
  • %USERPROFILE%\.continue\sessions\*.json
  • ~/.continue/sessions/*.json
  • ~/.continue/sessions/*.json
<session>.json
AiderNETCODEX_AIDER_PATHSsupported
  • <repo>\.aider.chat.history.md
  • <repo>/.aider.chat.history.md
  • <repo>/.aider.chat.history.md
.aider.chat.history.md
OpenCodeOPENCODE_DATA_DIR, XDG_DATA_HOMEsupported
  • %USERPROFILE%\.local\share\opencode\opencode.db
  • %USERPROFILE%\.local\share\opencode\storage\session\<projectID>\<sessionID>.json
  • ~/.local/share/opencode/opencode.db
  • ~/.local/share/opencode/storage/session/<projectID>/<sessionID>.json
  • ~/.local/share/opencode/opencode.db
  • ~/.local/share/opencode/storage/session/<projectID>/<sessionID>.json
opencode.db, storage/session|message|part/*.json
Google Antigravitybest effort
  • %USERPROFILE%\.gemini\antigravity\conversation_summaries.db
  • %USERPROFILE%\.gemini\antigravity\conversations\*.db
  • ~/.gemini/antigravity/conversation_summaries.db
  • ~/.gemini/antigravity/conversations/*.db
  • ~/.gemini/antigravity/conversation_summaries.db
  • ~/.gemini/antigravity/conversations/*.db
conversation_summaries.db, conversations/*.db
Traeencrypted, not supported
  • %APPDATA%\Trae\ModularData\ai-agent\database.db
  • %APPDATA%\Trae CN\ModularData\ai-agent\database.db
  • ~/Library/Application Support/Trae/ModularData/ai-agent/database.db
  • ~/Library/Application Support/Trae CN/ModularData/ai-agent/database.db
  • ~/.config/Trae/ModularData/ai-agent/database.db
  • ~/.config/Trae CN/ModularData/ai-agent/database.db
Encrypted: cannot be exported.
Windsurfencrypted, not supported
  • %USERPROFILE%\.codeium\windsurf\cascade\*.pb
  • ~/.codeium/windsurf/cascade/*.pb
  • ~/.codeium/windsurf/cascade/*.pb
Encrypted: cannot be exported.
What to import, tool by tool

Questions before you start

Do my conversations leave my computer?

No. NetCodex runs on your computer and reads each tool's chat history in place. Exports are written to a folder you choose. There is no account and no upload.

Which AI tools are supported?

Codex, Claude Code, Claude Desktop, Claude.ai exports, GitHub Copilot Chat and CLI, Cline, Cursor, Gemini CLI, Continue, Aider and Antigravity. Windsurf and Trae encrypt their history, so they cannot be read.

What is the readable view?

It opens with a short story of what was asked, what was done and how it ended. Then come the messages in full, exactly as written, with each tool step summed up in one sentence instead of raw output. No AI: everything is generated on your computer from fixed sentences. The original view keeps every message and output exactly as it was saved.

Which formats can I export?

Markdown, PDF, HTML and Quarkdown, each in the template you choose. Quarkdown files need the free Quarkdown program on your computer.

How much does it cost?

Nothing. NetCodex is free software under the MIT license.

Export your first conversation today.

Download the app, open it, and your chats are already listed.