Skip to content

Mistral Vibe

Hansard reads two legacy Mistral Vibe session formats. Vibe 1.x saves each session as one JSON file. The legacy Vibe 2.x engine saves session details in meta.json and one message per line in messages.jsonl. Hansard keeps each session’s original files together.

Vibe 2.26.0 uses Unified Harness by default. Hansard also reads its logs/session/unified/<id>/CURRENT generation store in format v1, minor 8. The commands below import both engines.

Source Use it for
vibe Legacy session files and Unified Harness history under ~/.vibe/logs/session.

Hansard reads the legacy and Unified Harness formats under ~/.vibe/logs/session. The messages supply user, assistant, system, and tool content in order, including reasoning, tool calls and results, resources, image references, and shell commands you ran yourself. The session details add the working directory, Git state, model settings, token and price totals, and tool results. Nested agents/ folders become linked subagent sessions.

For Unified Harness, Hansard verifies the current generation, pooled chunks, and recovery journal. It preserves recorded message clocks, tool outcomes, configuration changes, lineage, and session token totals. An incomplete journal or unsupported version produces a capture error and leaves archived history intact.

For legacy split files, Hansard checks that total_messages matches the number of message lines. It rejects a session with unknown roles, empty records, damaged nested data, invalid timestamps, or an end time earlier than its start time. Every accepted line becomes exactly one message in the conversation.

Vibe’s own upgrade from 1.x to 2.x copies the system message into the new message file. Hansard keeps that as the same single system message, and does not add a second one from the system_prompt field. A 2.x session that contains both is rejected as ambiguous.

Newer Vibe 2.x releases save a last_message_fingerprint. When it is present, Hansard recomputes it and rejects a session whose fingerprint does not match. Earlier 2.x sessions do not have this field, so Hansard notes that it could not confirm that the two files belong together.

Terminal window
hansard import --source vibe --since all
hansard index rebuild
  1. When the import finishes, open Sessions and selectFilter & sort.
  2. Set Source to Mistral Vibe and setTime to the window you imported. UseFolder to narrow the list when you use this harness in several projects.
  3. Select a conversation to check its messages, tool calls, files, commits, model, and token usage.

To keep archiving new sessions from a local harness, openSettings → Imports. Automaticfollows every supported harness installed on this computer.Custom lets you turn individual harnesses on or off. Cloud sources turn on separately under Cloud agents, and ChatGPT, Claude.ai, Gemini, and Gemini Notebook / NotebookLM exports import withImport export…. Each also has its own import command. If a conversation you expect is missing after you reset the filters, run the import command on this page again with --explain-skips where the source supports it.

  • Exact copies of the 1.x session file, or of the 2.x meta.json and messages.jsonl pair.
  • Verified Unified Harness generation documents, pooled chunks, and recovery journals.
  • Messages, reasoning, tool calls and results, resources, inline image bytes, image references, and shell commands you ran yourself.
  • Unified Harness message times, tool failures, cancelled approvals, and session attachments.
  • Each message as its own message, even when you repeated a prompt.
  • Working directory, Git commit and branch, model settings, tokens, prices, and tool-result totals from the session details.
  • Subagent folders as linked conversations.
  • Which format the session used and whether its fingerprint was confirmed.
  • Legacy Vibe messages have no timestamps. Hansard anchors them to the session start and marks them as session order only. Resuming a session does not move earlier messages.
  • For earlier 2.x sessions without a fingerprint, Hansard checks the message count but cannot confirm that the two files belong together.
  • The project comes from the session details, because Vibe does not group sessions by project.
  • The tested local Vibe stores record model settings, not historical response models or per-model usage. Hansard preserves that setting without assigning tokens to it.
  • Recorded session costs use current model prices for all accumulated tokens. Hansard labels those costs as estimates. Explicit zero counters remain zero.
  • Inline images and session-owned files under attachments/ enter the attachment archive. External file references do not include the referenced bytes, and Hansard does not open arbitrary image paths.
  • A shorter or rewritten native transcript cannot replace archived history. Compaction and edits that change earlier records require separate review.
  • A 2.x session with an empty messages.jsonl and total_messages: 0 is treated as intentionally empty. It is not an error, and it does not create a conversation.
  • Native acceptance covers Vibe 2.26.0 legacy and Unified Harness CLI/ACP trials with a local synthetic endpoint. Native branches, compaction, delegation, voice, hosted billing, and other Unified store minors remain unverified.

Older imports could merge a repeated prompt into the message before it. To update Vibe conversations that an older Hansard version imported, reimport them from Vibe’s files:

Terminal window
hansard import --source vibe --since all
hansard index rebuild

Preserved raw bundles can also rebuild without Vibe’s files:

Terminal window
hansard rebuild --from-raw --source-type vibe-cli-history

Stats counts Unified Harness edits as edits. To refresh the totals of complete transcripts with plain event files without a reimport, run:

Terminal window
hansard rebuild --since all

Older event records retain the version protections described in Maintenance. Use reimport or raw replay when those protections prevent a refresh.