Skip to content
Agent Orchestration
Skill

/dia-source-analysis

Analyze / reverse-engineer the locally installed Dia Browser mac app (The Browser Company; bundle id company.thebrowser.dia; shares ArcCore with Arc). Inspect its app bundle, extract its Bun/TypeScript agent-server source from shipped source maps, fingerprint the runtime, read

BOOST
From plugin
termio
54428 skills
Install
$ npx -y skills add termio-sh/termio --skill dia-source-analysis --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/dia-source-analysis

Context preview

The summary Claude sees to decide when to auto-load this skill.

Analyze / reverse-engineer the locally installed Dia Browser mac app (The Browser Company; bundle id company.thebrowser.dia; shares ArcCore with Arc). Inspect its app bundle, extract its Bun/TypeScript agent-server source from shipped source maps, fingerprint the runtime, read

SKILL.md

dia-source-analysis.SKILL.md
name: dia-source-analysis
description: "Analyze / reverse-engineer the locally installed Dia Browser mac app (The Browser Company; bundle id company.thebrowser.dia; shares ArcCore with Arc). Inspect its app bundle, extract its Bun/TypeScript agent-server source from shipped source maps, fingerprint the runtime, read native-Swift symbols, and map its AI-agent / sandbox / on-device-ML architecture. Invoke when the user wants to study how Dia works internally, extract Dia's agent code, or compare Dia's agent/terminal approach against termio. (User sometimes voice-types the name as 'DotBrowser' — same app.)"

Analyze Dia Browser source

Dia (`/Applications/Dia.app`, The Browser Company, `company.thebrowser.dia`) is a WebKit-based browser (~1.4 GB) that shares `ArcCore.framework` with Arc. termio uses it as a reference for how a shipping product **drives AI coding agents as sandboxed child processes** (Dia shells to the real Claude Code CLI under Seatbelt) and for its agent-server / IPC architecture. This skill captures how to dig into it and what's already known, so analysis doesn't start from scratch each time.

Golden rules

  • **Read-only, on the user's own machine, for research.** This is proprietary code shipped

to the user. Use it to *understand and learn*, never to copy/redistribute verbatim or ship lifted code. State this caveat when sharing recovered source.

  • **Verify before trusting old findings.** The "Established facts" below are version-stamped.

Dia auto-updates (Sparkle); bundle layout, file hashes, runtime versions, and even whether source maps ship can all change. Always re-read `info.json` + `CFBundleShortVersionString` first and treat mismatches as "re-derive from scratch."

  • **Two recoverability tiers:** the Bun/TS agent backend is near-fully recoverable (source

maps); the native Swift app is symbols/structure only (no real source).

Established facts (as of Dia 1.34.2 — RE-VERIFY)

Agent-server `info.json` (1.34.2): version 1.0.0, buildDate 2026-06-10, commit `47de9fbe6c4`, `claudeCodeVersion 2.1.131`. (Was 1.32.0 / commit `55d9d2e174b` / buildDate 2026-05-20.)

  • **⚠️ Source maps NO LONGER SHIP as of 1.34.2.** `extract-sourcemaps.py` returns "No .map

files found" — the Bun/TS agent-server backend is no longer recoverable as near-original TS (only logic compiled into the Mach-O remains). The native-Swift tier is unchanged: symbols + embedded source paths only. So "the big win" in §1 below is gone on current builds; keep the procedure for older installs / in case they return.

  • **Agent backend = Bun-compiled standalone Mach-O** (`agent-server`, `handler`) + **the real

Claude Code CLI** (`claude`, 206 MB, itself a Bun binary). No separate Node/Bun runtime is installed — each binary embeds Bun. They run as **child processes under Seatbelt sandbox** (`sandbox-exec -f agent.sb` / `agent-claude-code.sb`, params via `-D DATA_DIR=…`), talking to the native UI over SSE/IPC (`transport/sse.ts`, `ipc-gateway.ts`). Per-context workspace at `data/contexts/{contextId}` with resumable disk buffers (`session/buffer.ts`, JSONL). **This is the part most relevant to termio** — termio runs agents in real PTYs (`.exec`) instead, but the child-process-under-sandbox + resumable-buffer + IPC design is the directly comparable bit.

  • **Streaming smoothness** comes from native rendering + `session/update-batcher.ts`: deltas are

coalesced and flushed only on **≥256 B** OR **250 ms idle** OR completion — so the UI updates a few times/sec, not per token. The Bun agent-server is backend orchestration and does NOT touch UI perf.

  • **AI chat ("AssistantPanel") renders NATIVELY, not in a webview.** Markdown parsed by

`cmark` (swift-markdown), code highlighted by **Highlightr** (`CodeAttributedString` → NSAttributedString), math by **SwiftMath** (`MTMathListDisplay`, CoreText). UI is AppKit `NSViewController`s (source paths `Frameworks/BoostBrowser/Sources/AssistantPanel/*.swift`).

  • **The AI input is the native AppKit module `BoostCommandBar`** (`Frameworks/BoostBrowser/

Sources/BoostCommandBar/*`): a token/pill `TokenTextView` w/ `SkillPillTokenViewProvider`; Skills = `SkillsV3`; `@`-mentions (`AtMentionKeywords`: @Search/@Slack/@Gmail/@Notion) insert context/tool pills. On-device `cmd_t_router` (3-label intent) + `skills` classifier rank proactive suggestions.

  • **WKWebView (~45 refs) is for web pages + HTML "artifacts"** (reports/slides via

`report-kit`/`slide-kit`), NOT for chat bubbles.

  • **On-device ML** (`OnDeviceLoRAadaptors` bundle, 152 M): one shared **DistilBERT-base** encoder

(126 M, fp16) + three LoRA adapters + heads — `cmd_t_router` (input intent), `skills` (which skill to fire), `sensitive_content` (privacy gate). Run via MLX (`mlx-swift`).

Bundle map

| Path | Size | What | |---|---|---| | `Contents/Frameworks/ArcCore.framework` | ~548 M | browser engine core (WebKit + Arc) | | `Contents/Resources/agent-server-resources/dist` | ~371 M | Bun agent backend + bundled `claude` CLI (206 M) | | `Contents/Resources/OnDeviceLoRAadaptors_…bundle` | ~152 M | DistilBERT base + 3 LoRA classifiers | | `Contents/MacOS/Dia` | ~106 M | native Swift app binary (AssistantPanel etc.) | | `Contents/Frameworks/libAIInfra.dylib` | ~21 M | on-device classification (`LocalClassification`) | | `Contents/Resources/*.bundle` | — | Highlightr, SwiftMath, SwiftProtobuf, mlx-swift, swift-transformers, ARC/BoostBrowser feature bundles | | `dist/*.sb` | — | Seatbelt sandbox profiles |

Procedure

0. Identify version (always first)

/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" /Applications/Dia.app/Contents/Info.plist
cat "/Applications/Dia.app/Contents/Resources/agent-server-resources/dist/info.json"

1. Recover the agent-server source (the big win)

The `.js` bundles are compiled into the Mach-O binaries and NOT shipped, but `entrypoint.js.map` and `handler-entrypoint.js.map` ship with `sourcesContent`

Read more
Ships withtermio

A terminal-first agentic development environment for agentic coding. Build for CLI/TUI agent. Runtime for Coding Agent, Tmux alternative

Get the whole plugin
Stats
544
Stars
42
Forks
Active
Maintenance
Swift
Language
MIT
License
2d ago
Last commit
4mo ago
Created
4h ago
Added

Repo: termio-sh/termio

Other skills on termio.