Technology Apr 22, 2026 · 4 min read

OpenAI Euphony: A Browser-Based Viewer for Harmony Conversations and Codex CLI Sessions

OpenAI Euphony: A Browser-Based Viewer for Harmony Conversations and Codex CLI Sessions OpenAI just shipped Euphony — an Apache 2.0 open source web app for inspecting two specific formats that have been a pain to read with a text editor: Harmony conversations — the structural wire form...

DE
DEV Community
by 정상록
OpenAI Euphony: A Browser-Based Viewer for Harmony Conversations and Codex CLI Sessions

OpenAI Euphony: A Browser-Based Viewer for Harmony Conversations and Codex CLI Sessions

OpenAI just shipped Euphony — an Apache 2.0 open source web app for inspecting two specific formats that have been a pain to read with a text editor:

  1. Harmony conversations — the structural wire format gpt-oss models are trained on
  2. Codex CLI sessions — the rollout-*.jsonl files auto-created by Codex CLI

There's already a hosted build you can use without installing anything.

Why Euphony Exists

If you've ever looked at a raw Harmony conversation, you know the pain. The format uses explicit role/channel/stop tokens like <|start|>, <|end|>, <|message|>, <|channel|> — great for training, terrible for human reading.

Codex CLI sessions are similar. Every session dumps a JSONL file to $CODEX_HOME/sessions/YYYY/MM/DD/rollout-*.jsonl. If you want to understand what your agent did last Tuesday, you're scrolling through hundreds of lines of structured tool calls and responses.

Euphony fills this gap with a proper timeline UI, filters, and metadata inspection.

What You Get

1. Flexible Input

Three ways to load data:

  • Paste JSON/JSONL from clipboard
  • Drag and drop a local .json or .jsonl file
  • Enter a public HTTP(S) URL (great for Hugging Face datasets)

2. Two Run Modes

Frontend-only (recommended for deployment):

export VITE_EUPHONY_FRONTEND_ONLY=true
pnpm run dev

All processing happens in the browser. URL fetches are client-side. Translation uses the user's own OpenAI API key. Safe to host on GitHub Pages, Cloudflare, etc.

Backend-assisted (local dev only):

uvicorn fastapi-main:app --app-dir server --host 127.0.0.1 --port 8020 --reload

Adds a FastAPI server for large remote files, server-side translation, and Harmony rendering. Do not expose this externally — SSRF risk.

3. JMESPath Filtering

Query large datasets right in the UI:

Goal Query
Assistant messages only messages[?role=='assistant']
Specific tool calls messages[?recipient=='browser']
Last 10 messages `messages \

4. Token Inspector

For Harmony debugging, the token view shows:

  • Raw Harmony renderer output
  • Token ID arrays
  • Decoded token strings
  • Display string conversions

Invaluable if you're tracking down tokenizer mismatches.

5. Embeddable Web Components

This is the feature I find most compelling. You can drop Euphony into any web stack via a custom element:
{% raw %}

<euphony-conversation src="path/to/conversation.json"></euphony-conversation>

Theme with CSS variables:

euphony-conversation {
  --euphony-user-color: #4F46E5;
  --euphony-assistant-color: #10B981;
  --euphony-background: #0D1117;
}

React Usage

import './lib/euphony.js';

declare global {
  namespace JSX {
    interface IntrinsicElements {
      'euphony-conversation': {
        src?: string;
        data?: string;
      };
    }
  }
}

export function ConversationViewer({ url }: { url: string }) {
  return <euphony-conversation src={url} />;
}

Vue 3 Usage

<script setup lang="ts">
import './lib/euphony.js';
defineProps<{ src: string }>();
</script>

<template>
  <euphony-conversation :src="src" />
</template>

Remember to add compilerOptions.isCustomElement for Vue to recognize the tag.

Quick Start

git clone https://github.com/openai/euphony.git
cd euphony
pnpm install

# Recommended: frontend-only
export VITE_EUPHONY_FRONTEND_ONLY=true
pnpm run dev

Open http://localhost:3000/ and drag in any JSONL file.

Building the Library

To embed in your own app:

pnpm install
pnpm run build:library
# Output: ./lib/euphony.js

Deployment Checklist

  • Frontend-only mode: safe to deploy to static hosts
  • Set VITE_EUPHONY_FRONTEND_ONLY=true at build time
  • Backend mode: keep bound to 127.0.0.1, never expose to the internet
  • Translation: pass user's API key at runtime, never hardcode

Practical Use Cases

  1. Codex CLI debugging — Paste a rollout-*.jsonl path and step through the agent's reasoning
  2. Dataset inspection — Point at a Hugging Face URL to audit conversation quality
  3. Agent platform UI — Drop the Web Component into your admin dashboard
  4. Tokenizer debugging — Use the token inspector to track down Harmony rendering issues

Related Resources

Final Thoughts

The fact that OpenAI is open-sourcing their internal inspection tools signals something important: agent workflow debugging is becoming a first-class concern. If you're building on gpt-oss or using Codex CLI, Euphony is worth 10 minutes of your time. And if you're shipping your own agent platform, the Web Components embed means you can have a proper conversation viewer without writing one from scratch.

I'll probably integrate it into my own tooling this week. Curious if anyone else is already using it in production.

DE
Source

This article was originally published by DEV Community and written by 정상록.

Read original article on DEV Community
Back to Discover

Reading List