Skip to main content

grafli

A keyboard-driven, plain-text diagram tool for developers.

grafli lets you sketch architecture diagrams, code-review notes, and design sketches without leaving the keyboard. Files are line-oriented .grafli text that diffs cleanly in git and that LLMs can read and produce reliably.

grafli — graph + code-mode notes in one diagram

Documentation and feature tour: https://grafli.mistergc.dev

Pair grafli with your AI

grafli isn't just a diagram editor — it's the canvas your coding agent uses to communicate complex systems back to you. The bundled grafli skill teaches the agent how to produce idiomatic .grafli files — proper layouts, semantic edge labels, code-mode notes for review-oriented diagrams, plus a "plan before you write" loop that keeps the output focused and readable.

Extract the skill from your installed copy and point your agent at it:

# Save to a file, or pipe straight into the right place for your tool.
grafli skill -o SKILL.md
grafli skill --where        # path of the bundled SKILL.md
grafli skill --help         # install URLs for Claude Code, OpenCode, Codex
AI tool Where the skill goes Docs
Claude Code ~/.claude/skills/grafli/SKILL.md https://code.claude.com/docs/en/skills
OpenCode ~/.config/opencode/skills/grafli/SKILL.md https://opencode.ai/docs/skills
Codex CLI append to ~/.codex/AGENTS.md https://agents.md/

Once installed, ask your agent to "draw a diagram of …", "visualize the data flow in this module", or "sketch the OAuth callback as a grafli" — the skill triggers and produces a .grafli you can open in the desktop app or render headless via grafli render.

Install

pip install grafli
grafli my-diagram.grafli

Requirements: Python 3.12+, PySide6 (Qt 6.7+).

Design philosophy

  • Keyboard-first. Modal editing in the spirit of vim — Select, Rect, Text, Connect — composes a small set of keystrokes into rich diagrams.
  • Less is more. Three primitives (boxes, arrows, notes) plus visible containment cover the cases that matter, without a menu maze.
  • Text for AI, git, humans. .grafli files are line-oriented plain text; there are no binary blobs and no cloud dependency.

Capabilities at a glance

  • Modal vim-style editing with directional creation (one keystroke spawns a connected neighbor box or note).
  • Semantic edge labels — prefixes such as call:, data:, event:, verify:, risk: render as colored chips and tint their arrow.
  • Code-mode notes — minimal pseudocode for review-oriented diagrams: a bold function signature on the first line, control/effect keywords (if, for, call, emit, …) in blue, contract keywords (pre, post, verify, risk, …) in red, and clickable @file:line refs.
  • Sketchnote symbols — a curated 30-symbol vocabulary (20 semantic actors and concepts, 10 emphasis marks) drawn from one hand-editable SVG sheet: *lightbulb fills a node, *lead:lock sits beside the label, *badge:flame overlays a corner, and *badge:3 numbers a sequence (1–99). Picked visually via style mode → i.
  • Tasks (T: / TODO:), questions (Q: / QUESTION:, both case-insensitive), and threaded discussions inside notes.
  • Find and focus — combine these at will:
    • Subgraph focus (B) — fade everything not reachable from the selection; cycle direction (incoming / outgoing / both) and depth (1-hop / unlimited).
    • Complexity heatmap (A) — color nodes by connectivity to find hot spots.
    • Dim connectors (,) / dim notes (Shift+N) — fade arrows or text-notes to 8% opacity to read the rest.
    • Minimap (M) — corner overview with boxes, notes, and connector density.
  • Jump labels and graph navigation — every visible element is one or two keys away; hold Alt to follow connectors edge by edge.
  • Sub-graflis — link any node to a deeper diagram in its own file.
  • Bookmarks & flows — save labeled viewpoints (semantic anchors, not pixel coords) and string them into guided tours: step through, auto-play, present fullscreen (F5), or export a slide PDF (grafli export … --flow). Plain text, so an AI can author an explanatory tour through a big graph.
  • Markdown resources — attach a markdown note to any element and edit it in textli, grafli's full-window Markdown editor (its own project, bundled as a dependency).
  • Auto-save and external file watching — open a .grafli next to your editor; changes flow both ways.
  • Yank as PNG (Y), SVG export (Ctrl+E).

File format

@ box frontend "Frontend" 100,100 160x60 %secondary
@ box backend  "Backend"  320,100 160x60 %primary
@ box db       "Database" 320,240 160x60 %subtle

@ arrow frontend -> backend "REST API"
@ arrow backend  -> db      "data: queries" !dashed

@ note 100,240 "SPA with React"
@ note logic 100,320 """
code:
handleRequest(req) -> Response
pre req.id is set
call validate(req)
emit RequestAccepted(req.id)
return ok  @api/handler.py:42
"""
Element Syntax
Box @ box <id> "<label>" <x>,<y> <w>x<h> [color] [^anchor] [~size] [!style] [>parent]
Arrow @ arrow <from> <op> <to> ["label"] [!style] [~size]
Note @ note [<id>] <x>,<y> "<text>" [color] [~size] [!style] [>parent]

Arrow operators: -> right, <- left, <-> both, -- none.

Triple-quoted block notes are supported when a note contains quote characters or spans multiple lines.

Keybindings (selection)

Key Action
v / n / t / c Switch mode: Select / Rect / Text / Connect
Shift+click in n/t mode Stay in create mode for rapid placement
h j k l Move selection (vim directions)
Ctrl+h/k/l Create connected box (left/up/right)
Alt (hold) Graph navigation — follow connectors
/ Search by label
Ctrl+J Jump mode (all visible items)
B / Shift+B Subgraph focus (cycle direction / toggle depth)
, / Shift+N Dim arrows / dim notes (focus on the rest)
Y / Ctrl+E Yank PNG to clipboard / Export SVG
F1 In-app cheat sheet and text-annotation reference

The full set is in the in-app F1 dialog and on the documentation site.

Project

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

grafli-0.6.0.tar.gz (4.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

grafli-0.6.0-py3-none-any.whl (3.1 MB view details)

Uploaded Python 3

File details

Details for the file grafli-0.6.0.tar.gz.

File metadata

  • Download URL: grafli-0.6.0.tar.gz
  • Upload date:
  • Size: 4.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for grafli-0.6.0.tar.gz
Algorithm Hash digest
SHA256 a43e4175b90ca024d09fbd50033ccab67d2c91ffa067b84dbe118fdb5588a1db
MD5 7356ff96c3627c5cc998f49c211f329a
BLAKE2b-256 40ac425ecce225ccb2ae0caf6aa62a5c0fe922d64ac48d1be2eb183e85b05f26

See more details on using hashes here.

Provenance

The following attestation bundles were made for grafli-0.6.0.tar.gz:

Publisher: release.yml on MisterGC/grafli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file grafli-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: grafli-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 3.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for grafli-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1ea0403ddd5a44d536fa1b83f13e73acac19536e28b819ac6eb7a16236a98380
MD5 04f8e1a92693456a7babec7b1d934fff
BLAKE2b-256 d009031446a0b372fa1ed3a0535bd93d96ced3ba217113163fb8788bff70d08f

See more details on using hashes here.

Provenance

The following attestation bundles were made for grafli-0.6.0-py3-none-any.whl:

Publisher: release.yml on MisterGC/grafli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.10.0

2 files

0.9.0

2 files

0.8.0

2 files

0.7.0

2 files

This release

0.6.0 This release

2 files

0.5.0

2 files

0.4.0

2 files

0.3.0

2 files

0.2.0

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page