Nowline

io.nowlinePublished by nowline.iov0.12.1Updated Nov 4, 2026

Create and edit your roadmaps in a plain-text format.

Overview

AI-generated overview

Creates, validates and renders .nowline plain-text roadmap files, exporting them to SVG, PNG, PDF, HTML, Mermaid, XLSX or MS Project XML.

What you can do
  • Read, list, create, update and delete .nowline roadmap files on disk
  • Validate roadmap source and return structured diagnostics with line and column errors
  • Render roadmaps to SVG or PNG with an in-chat preview and layout insights
  • Export to eight formats, including PDF, XLSX, HTML, Mermaid and MS Project XML
  • Convert between .nowline source text and its JSON AST
  • Look up DSL reference, examples, schema, themes, icons, locales, formats and templates
When to use it
Useful when you keep product or engineering roadmaps as version-controlled text and want an assistant to draft, fix and render them without leaving the chat. Also fits teams that need roadmap output as PDF, spreadsheet or MS Project files.
Requirements
Runs as a local stdio process installed from the npm package @nowline/mcp; no authentication, environment variables or headers are declared. Desktop-only host. The README states Node 22 or newer is needed to consume the @nowline packages.
Before you install
The create tool overwrites an existing file at the same path, update replaces files and delete removes local files, so point it at the right directory. The share tool encodes the full roadmap source into a link that anyone holding it can open in the free web app, so avoid sharing confidential content. The project is on 0.x and public APIs may change between minor versions.

Installation

In SourceWeft

  1. Open Nowline in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

[Nowline]

Roadmaps as code. For everyone.
Human readable roadmaps, built for AI.
Plain .nowline text files. Version-controlled. Render to SVG, PNG, PDF, HTML, Mermaid, XLSX, and MS Project XML.


What is Nowline?

Nowline is a text-first DSL for describing product and engineering roadmaps — human readable and machine readable. You write plain .nowline text files — indented, keyword-driven, diff-friendly — and tooling renders them as timelines, validates them, and composes them.

examples/minimal.nowline:

nowline
nowline v1
roadmap minimal "Starter" start:2026-01-05 scale:2w author:"Jane Doe"
swimlane engineering "Engineering"  item research "Research"  duration:3w status:done  item design   "Design"    duration:2w status:in-progress remaining:5d  item build    "Build"     duration:3w status:planned

Renders to:

[Minimal roadmap rendered with light theme and now-line on 2026-02-09]

Why Nowline?

  • Text, not a Gantt chart. Version-controlled, diffable, reviewable in a PR.
  • Indentation, not XML. Roadmaps read like outlines, because that's how people think about them.
  • Strict enough to catch mistakes. 30+ validation rules, clear error messages with line and column numbers.
  • Composable. include other files with explicit merge / ignore / isolate semantics.

Quick start

Install the CLI from your package manager:

bash
brew trust lolay/tap                                 # macOS / Linux / WSL (one-time)brew install lolay/tap/nowline

Debian/Ubuntu and Windows users can grab the latest .deb or .exe from GitHub Releases. See packages/cli/README.md for the full install matrix (including man nowline setup).

Toolchain

Two-tier Node policy: Node ≥ 22 to consume @nowline/* packages (engines.node on every published package), Node 26 (.nvmrc) to develop. CI tests both versions on every PR. See Toolchain & Supported Versions for the full policy and bump procedure.

Render your first roadmap:

bash
nowline examples/minimal.nowline                     # writes ./minimal.svgnowline --version

Or scaffold a brand-new file from a template:

bash
nowline --init my-project                            # ./my-project.nowlinenowline --init my-project -t teams                   # ./my-project.nowline (teams template)

To give an AI agent Nowline tools, install the plugin from this repo's marketplace. In Claude Code:

text
/plugin install nowline --marketplace lolay/nowline

GitHub Copilot CLI and Codex read the same marketplace; see plugins/nowline/README.md for those and the other ways to add the MCP server.

For the VS Code / Cursor / VSCodium extension, search Nowline on the VS Code Marketplace or Open VSX.

0.x versioning. nowline is on 0.x.y while we settle the embed surface and IDE expansion. Public APIs may change between minor versions; full SemVer guarantees apply once we ship 1.0. See specs/releasing.md for the version contract.

To run from a checkout for local development (pnpm install && pnpm build), see CONTRIBUTING.md.

Use the CLI

nowline is verbless: rendering is the default. Other operations are flags on the same command.

Render (default)

bash
nowline roadmap.nowline                          # writes ./roadmap.svgnowline roadmap.nowline -f png                   # writes ./roadmap.pngnowline roadmap.nowline -f pdf                   # writes ./roadmap.pdfnowline roadmap.nowline -f html                  # writes ./roadmap.htmlnowline roadmap.nowline -f mermaid               # writes ./roadmap.mdnowline roadmap.nowline -f xlsx                  # writes ./roadmap.xlsxnowline roadmap.nowline -f msproj                # writes ./roadmap.xmlnowline roadmap.nowline -o roadmap.pdf           # format inferred from extensionnowline roadmap.nowline -o -                     # SVG to stdoutnowline roadmap.nowline --theme dark --now 2026-03-15nowline roadmap.nowline --now - --asset-root ./brand --no-links --strictnowline roadmap.nowline -f pdf --page-size a4 --orientation landscape --margin 0.5incat roadmap.nowline | nowline -                  # stdin → ./roadmap.svg

The render pipeline is @nowline/core parse → @nowline/layout layout → @nowline/renderer SVG → format-specific exporter. Output is byte-for-byte deterministic for the same input, theme, and --now. A single nowline binary ships every format — see packages/cli/README.md for install details.

Validate (--dry-run)

Run the full pipeline (parse + validate + layout + format) without writing. Exits 0 on success, 1 if any errors are emitted.

bash
nowline roadmap.nowline --dry-runnowline roadmap.nowline -n                          # short aliascat roadmap.nowline | nowline - --dry-run           # read stdinnowline roadmap.nowline -n --diagnostic-format json # machine-readable outputnowline - -n --format=json < roadmap.nowline        # same, json is the default here

--diagnostic-format text|json picks the stderr format; with --dry-run --format=json it defaults to json, otherwise text. JSON mode writes one { "$nowlineDiagnostics": "1", "diagnostics": [...] } document to stderr whenever any diagnostic exists, warnings included, so a warnings-only source exits 0 with the document. Clean sources print nothing.

Convert text ↔ JSON

Convert is just -f json (or -f nowline to go the other way). Input format is inferred from the extension; --input-format overrides for unusual filenames.

bash
nowline roadmap.nowline -f json -o roadmap.json    # text → JSONnowline roadmap.json -f nowline -o roadmap.nowline # JSON → text (canonical)nowline roadmap.nowline -f json -o - | jq '.ast.roadmapDecl.name'

The emitted JSON carries a top-level "$nowlineSchema": "1" so downstream tools can detect schema changes. Comments are not preserved across round-trips — see packages/cli/README.md for the canonical printer rules.

Serve (--serve)

Run a live-reload preview in the browser. Great while authoring.

bash
nowline roadmap.nowline --serve                    # http://127.0.0.1:4318nowline roadmap.nowline --serve -p 4400 -t dark --opennowline roadmap.nowline --serve -o latest.svg      # rewrite latest.svg on each rebuild

The server re-parses, re-validates, re-lays-out, and re-renders on every file change; connected clients refresh automatically via Server-Sent Events. Validation errors are displayed as an overlay on top of the most recent successful render.

Init (--init)

Scaffold a new .nowline file in cwd. The positional argument is the project name, not a file path. .nowline is auto-appended.

bash
nowline --init                              # ./roadmap.nowline (default name)nowline --init my-project                   # ./my-project.nowlinenowline --init my-plan.nowline              # ./my-plan.nowline (literal)nowline --init my-project --template=teams  # use the teams template

minimal, teams, and product correspond to the files under examples/. Existing files are silently overwritten.

Exit codes

CodeMeaning
0Success
1Validation error (parse failure, invalid reference, any include error such as a missing include, a wave rule across included files)
2Usage error (missing input, bad flags, unsupported format, file not found, empty stdin, invalid --diagnostic-format, binary→TTY refusal)
3Output error (cannot write to destination)

Manual

After any package-manager install (brew install lolay/tap/nowline, npm install -g @nowline/cli, or the .deb from GitHub Releases), man nowline shows the CLI manual and man 5 nowline shows the full DSL reference. Both man pages also ship as standalone assets on every GitHub Release — see packages/cli/man/ for the mdoc sources.

Language at a glance

File structure

nowline
nowline v1                        // 1. version directive (optional, must be first)
include "shared/teams.nowline"    // 2. includesinclude "brand.nowline" config:isolate
config                            // 3. config section (optional)scale  name: weeksstyle enterprise  bg: blue  fg: navy
roadmap r "My Roadmap"            // 4. roadmap section
swimlane platform  item x "Work item" duration:1w status:done

Entities

KeywordPurpose
roadmapThe top-level roadmap declaration. At most one per file.
swimlaneA horizontal lane of work.
itemA unit of work inside a swimlane.
parallelA block whose children run concurrently.
groupA logical grouping of items, rendered together.
anchorA named date on the timeline.
milestoneA point-in-time marker that depends on work.
waveA barrier across every swimlane: no work in the next wave starts until this one ends.
footnoteA callout anchored to one or more entities.
person, teamOwnership references.
non-working, workingDays that consume no work (weekends, holidays, closures) and the exceptions that give them back. Config entries with date:, start: / end: or every:; a declaration named weekend replaces the business weekend. A dated closure with a title is labelled on the chart (Thanksgiving · 2d) and carried into the MS Project and Mermaid exports; a titled working day is labelled with the days it adds (Crunch Saturday · +1d).
style, symbol, label, size, status, scale, calendar, defaultConfig and declaration entries.

Properties

nowline
item auth "Auth refactor"  duration: 2w              // duration literal: d, w, m, q, y  status: in-progress       // builtin or custom from config  owner: sam                // id reference (person or team)  wave: build               // barrier the item belongs to (a declared wave)  after: kickoff            // dependency (single)  after: [kickoff, approvals] // dependency (list)  remaining: 30%             // percentage  labels: [security, p0]     // list of label ids  link: https://…            // URL (bare, no quotes)

Roadmap start date

A roadmap may carry an optional start:YYYY-MM-DD that anchors the timeline baseline:

nowline
roadmap platform-2026 "Platform 2026" start:2026-01-06
  • If the roadmap contains any anchor, or any milestone with a date: property, start: is required.
  • Every such date must be on or after start:.
  • A pure-relative roadmap (built from duration: and after: only) does not need start:.
  • Across includes that don't use roadmap:ignore, the parent and any included roadmap must agree on start: — both absent, or both present with the same value. Mismatches are errors, not silent overrides.

Includes

nowline
include "teams.nowline"                     // merge everything (default)include "snippet.nowline"  config:ignore    // skip child configinclude "partner.nowline"  roadmap:isolate  // render child as a separate region
  • merge — default: child content is merged; parent definitions win on collision.
  • ignore — child content of that kind is discarded.
  • isolate — child roadmap is preserved as a self-contained region (requires a roadmap in the child).

Waves never merge. Under roadmap:merge or roadmap:isolate, an included file that declares a roadmap, swimlanes, or waves must declare the same waves as its parent, in the same order with the same start floors (NL.E0202).

For the full grammar reference, see specs/dsl.md.

Examples

Progressively-richer examples are included. Every build of main renders them, and the renderer fixtures in tests/, at review.nowline.dev.

Editor support

A TextMate grammar lives at grammars/nowline.tmLanguage.json. It works in any editor that supports TextMate grammars (VS Code, Sublime Text, Zed, IntelliJ via third-party plugins, etc.). A first-class LSP server and VS Code extension are tracked in packages/lsp/ and packages/vscode-extension/.

Use as a library

@nowline/core is a pure-TypeScript parser, typed AST, and validator built on Langium. Everything the CLI does on top of parsing is itself built against this library. See packages/core/README.md for the API and a usage example.

Status

Nowline is on v0.x — published to Homebrew, npm, the VS Code Marketplace, Open VSX, and GitHub Releases. The parser, validator, layout, renderer, every export format (SVG, PNG, PDF, HTML, Markdown+Mermaid, XLSX, MS Project XML), and the verbless CLI (--dry-run, --init, --serve) are usable today. Breaking changes may land between 0.x minor versions while the embed surface and IDE expansion settle; full SemVer guarantees kick in at 1.0. The release-by-release roadmap lives in specs/milestones.md.

Contributing

Bug reports, feature requests, and pull requests are welcome. Start with CONTRIBUTING.md for setup, build/test commands, and the expected workflow. Before opening an issue, please check the templates under .github/ISSUE_TEMPLATE/. Security issues should follow SECURITY.md. All participation is governed by our CODE_OF_CONDUCT.md.

Design specs for the DSL, renderer, CLI, IDE integrations, and OSS milestones live under specs/ — start there to understand how Nowline is shaped before touching code.

License

Apache 2.0 — see LICENSE.

Source: README.md at commit d8d931f

Tools

19

validate

Validate Roadmap

Parse and validate a .nowline roadmap. Returns ok=true with optional layout insights when valid, or ok=false with structured diagnostics. Example: nowline v1 roadmap r "Title" start:2026-01-05 scale:2w swimlane eng "Engineering" item build "Build" duration:3w Source is `.nowline` DSL (not JSON/YAML); call the `reference`/`examples` tools for full syntax.

Parametersnowpathsourcetimezone

read

Read Roadmap

Read a local .nowline file.

Parameterspathrequired

create

Create Roadmap

Write a new .nowline file after validation. Overwrites if the path already exists. Example: nowline v1 roadmap r "Title" start:2026-01-05 scale:2w swimlane eng "Engineering" item build "Build" duration:3w Source is `.nowline` DSL (not JSON/YAML); call the `reference`/`examples` tools for full syntax.

Parameterspathrequiredsourcerequired

update

Update Roadmap

Replace an existing .nowline file after validation. Example: nowline v1 roadmap r "Title" start:2026-01-05 scale:2w swimlane eng "Engineering" item build "Build" duration:3w Source is `.nowline` DSL (not JSON/YAML); call the `reference`/`examples` tools for full syntax.

Parameterspathrequiredsourcerequired

delete

Delete Roadmap

Delete a local .nowline file.

Parameterspathrequired

list

List Roadmaps

List .nowline files under a directory.

Parametersdirectoryrecursive

render

Render Roadmap

Validate then render a .nowline roadmap to SVG or PNG (combined validate+render). Returns structured diagnostics on error-severity input instead of a raw kernel error. On MCP Apps hosts the in-chat preview is view-only (no download/export button); use `export` for files and the `share` tool for an openable link. Example: nowline v1 roadmap r "Title" start:2026-01-05 scale:2w swimlane eng "Engineering" item build "Build" duration:3w Source is `.nowline` DSL (not JSON/YAML); call the `reference`/`examples` tools for full syntax.

ParametersnowpathscalethemewidthformatoutputreviewsourcepreviewtimezonenonWorking

export

Export Roadmap

Export a .nowline roadmap to any of the eight canonical formats. Byte-identical to `nowline -f <format>` for the same source and inputs. For pdf/xlsx/png: omit `delivery` and omit `output` — the server auto-saves to the configured folder and returns the path. Never use `delivery:"inline"` for binary formats on Claude Desktop (inline binary cannot be displayed). For svg/html/mermaid: the text is returned inline — present it to the user as a downloadable artifact of the matching type.

ParametersnowpathscalethemeformatrequiredoutputsourcedeliverymarginPtpageSizetimezonenonWorking+2 more

share

Share Roadmap

Generate a shareable link for a roadmap. The roadmap source is encoded into the URL fragment (client-side; no upload, no account, no network call) and opens in the free Nowline web app (free.nowline.io/open), where anyone with the link can view it and export to PDF/PNG/SVG. Prefer `render` to show a roadmap in chat — that is the default. Use `share` only when the user explicitly asks for a link to open, send, or export elsewhere.

Parameterspathsource

convert

Convert Roadmap

Convert between .nowline source text and its JSON AST representation. `to:json` serializes a .nowline file to the JSON AST; `to:nowline` pretty-prints a JSON AST back to canonical .nowline source.

Parameterstorequiredpathsource

capabilities

View Roadmap Capabilities

Return all supported themes, icons, locales, export formats, and template names in a single response.

Takes no parameters.

list-themes

List Themes

List supported color themes: light, dark, grayscale.

Takes no parameters.

list-icons

List Icons

List built-in capacity-icon names usable in the `capacity-icon:` style property.

Takes no parameters.

list-locales

List Locales

List supported BCP-47 locale tags.

Takes no parameters.

list-formats

List Export Formats

List all supported export formats (svg, png, pdf, html, mermaid, xlsx, msproj, json).

Takes no parameters.

list-templates

List Templates

List built-in template names usable with `nowline --init --template`.

Takes no parameters.

reference

View Roadmap Reference

Return the Nowline DSL reference (condensed cheatsheet or full man page). Callable alternative to the nowline://reference resource.

Parametersformat

examples

View Roadmap Examples

Return canonical .nowline example sources. Callable alternative to the nowline://examples resource.

Parametersname

schema

View Roadmap Schema

Return the structured Nowline DSL key vocabulary (directive keys, entity types, item properties, config keywords, calendar declaration keys).

Takes no parameters.

Version history

6
  1. v0.12.1LatestNov 4, 2026
  2. v0.11.0Oct 26, 2026
  3. v0.10.0Oct 25, 2026
  4. v0.9.0Oct 23, 2026
  5. v0.8.6Oct 1, 2026
  6. v0.8.5Sep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts