Contact
Redline

Redline

PDF markup, measurement and takeoff for AEC document control — a full-featured alternative to the established Windows-only tools, running first-class on Linux.

Amalgative Redline is a document-control tool for architecture, engineering and construction. You open a drawing set, mark it up, measure off it, count things on it, and send it back out as a PDF that any standards-compliant PDF tool can read.

The north star is a full replacement for the established AEC markup tools. The ones the industry runs on are Windows-only in practice and priced accordingly. Redline is desktop-first with Linux as the primary target, then macOS and Windows.

What it does#

Markup. Rectangle, ellipse, line, arrow, polyline, polygon, pen, arc, text, callout, highlight, dimension, note and flag — with line styles, dash scale, arrowheads, fills, rotation grips, and z-order.

Measurement and takeoff. A calibration and units engine that understands imperial, metric, fractional-architectural and engineering formats, with a scale cascade that runs region → page → set. Length, multi-length, perimeter, area, count and length-dimension tools, all with live-recomputed labels, feeding a markups list with takeoff columns.

Document control. Multi-document viewing with side-by-side, stacked and grid layouts. Pages, bookmarks, layers, sets, hyperlinks, batch operations, printing with a true 1:1 default, and file sessions that reopen where you left off.

Interoperability. Markups are written as real PDF annotations with appearance streams — editable in any PDF tool that understands annotations, not flattened pictures — and a PDF's own annotations are read back as editable markups. That closes the round trip in both directions.

Automation. Every capability in the application is an action on a schema-validated dispatch bus, which is what makes batch operations, scripting and the MCP bridge possible without a second API.

How it is built#

LayerTechnology
ShellTauri v2 (Rust)
UIReact 19 + TypeScript + Vite, docked with dockview
EngineHeadless TypeScript — scene graph, tools, command bus, hit-testing, geometry, units
RenderingThree stacked canvases: raster (pdf.js) / markup (Canvas 2D) / interaction
Writingpdf-lib, with real /AP appearance streams
StorageSQLite .amed, via Rust

Two architectural rules shape almost everything you will notice as a user.

The engine is headless, and React is only chrome. The scene graph, the tools, the command bus and the hit-testing know nothing about the DOM. That is what keeps them testable, and it is why the interaction stays responsive with a lot of markups on a page.

All state changes go through one command bus. Tools never mutate the scene directly. Undo and redo therefore cover everything, uniformly, rather than covering whatever each tool remembered to register.

What is shipped and what is not#

Redline is under active development. The core editor, the tool set, the measurement engine, the panel surface, printing and the PDF round trip are built and tested — 2,280 tests across the TypeScript engine plus a Rust backend suite, with a subset driven end-to-end through a real browser. The single notable gap:

Deferred Collaboration client 1.1

Deferred to 1.1 by decision, not outstanding. The servers are built and tested and the Collaboration panel is the UI seam; nothing in the Redline app dials them, and nothing will before 1.0.

The roadmap is the full list.

Each page states what is shipped where it matters. Two things are worth flagging up front because they are deliberate refusals rather than gaps:

  • 3D PDF (PRC/U3D) content is preserved but not rendered. The model is kept intact through a round trip; it is not displayed. PRC is effectively undocumented and has no open parser, and drawing something approximate would be worse than drawing nothing.
  • Rights-managed (DRM) PDFs are refused on open, with the handler named and the remedy stated. The failure that refusal prevents is partially parsing a protected file and rendering garbage that looks like a drawing — a document-control tool that mis-renders a controlled document is worse than one that declines it.

Where to go next#