v1.2.2

Rendered with NanoMD

Last updated


Since v1.2.2 the browser dashboard renders agent replies and Markdown files with NanoMD, so charts, diagrams and formulas show up as figures instead of source.

What renders


MarkdownResult
```chartjs with {"type": ..., "data": {...}}Chart: bar, line, pie, doughnut, radar, polarArea, scatter, bubble
```mermaidDiagram: flowchart, sequenceDiagram, stateDiagram-v2, classDiagram, erDiagram, gantt, timeline
```math or inline $...$KaTeX formula
Any other fenced codeSyntax highlighting with a copy button
GFM tables, task lists, footnotes, ==highlight==, > [!NOTE] calloutsStyled Markdown

A block that fails to parse (invalid JSON, unknown chart type, broken Mermaid syntax) shows its source instead. This page is rendered by NanoMD as well:
  1. {"type": "bar", "data": {"labels": ["Q1", "Q2", "Q3", "Q4"], "datasets": [{"label": "Requests (k)", "data": [12, 19, 15, 24]}]}}

sequenceDiagram
    Browser->>Daemon: POST /v1/send
    Daemon->>Model: prompt + tools
    Model-->>Daemon: Markdown reply
    Daemon-->>Browser: SSE stream
  1. sequenceDiagram
  2. Browser->>Daemon: POST /v1/send
  3. Daemon->>Model: prompt + tools
  4. Model-->>Daemon: Markdown reply
  5. Daemon-->>Browser: SSE stream

A = P\left(1 + \frac{r}{n}\right)^{nt}
  1. A = P\left(1 + \frac{r}{n}\right)^{nt}

Where it renders


SurfaceBehavior
Web chat replies and reasoning (chat- sessions)Rendered while streaming; figures in older messages render as they scroll into view
.md, .markdown, .txt file links in a replyOpen in the side panel, rendered with NanoMD; local images resolve through /v1/file/open
TUI, Telegram, DiscordShow the Markdown source

How the agent uses it


The system prompt tells the agent where figures render. In chat- sessions it adds them to both chat replies and .md files; in every other session it puts them only in .md files, because those chat surfaces would show the raw block. When content holds numbers across three or more items or time points, a process or a formula, the agent adds the matching chart, diagram or formula next to the table or text it summarizes, without being asked. It skips the figure when it would only restate a single number or a two-item comparison.

About NanoMD


NanoMD is a TypeScript Markdown parser that turns Markdown into sanitized HTML and a JSON AST, loading Mermaid, KaTeX and Chart.js only when a page uses them. Agenvoy pins its parser and stylesheet in page/vendor.json (2.0.10 in v1.2.2); the daemon downloads them once into ~/.config/agenvoy/vendor/nanomd/ and serves them locally, so rendering works offline. Syntax reference and playground: nanomd.pardn.io.
See also: Browser Dashboard.
中文