reqlan {
    semantic *engineering* toolset
}
Get started
Star on GitHub

Why reqlan

Build high-quality, verifiable systems quickly by describing the parts that matter and how they relate

  • less input tokens, better output tokens
  • integrate your system with your actual intent
  • demand excellence from your clanker, with the right atomic specification
  • static analysis for specifications
  • vibecode without the constant doubt
  • tightly control the scoping of your context, with the best of a file system hierarchy and the best of a knowledge graph
  • shorter prompts, better agentic search, less rework and more focus
  • make your precise intent explicit, leave implicit details latent
  • make your intent compilable
  • core implemented in rust, so you know it's fast and reliable
  • integrate compliance, testing, functional requirements, non-functional requirements, and more into your system
  • build docs that resist drift, and store the things you actually care about

What is reqlan?

A token efficient data format for writing functional requirements - supporting personal knowledge management inspired naming linking and tagging, plus an editor extension and a CLI on the same index. Engineers who wrangle complexity use it so they can focus on describing their highest-alpha ideas.

How are ideas actually written

reqlan is super easy to learn, here's a few self explanatory examples.

one-liner
one_line_idea an idea is prose after an identifying name
block
block_idea {
    A name followed by curly braces holds a longer body and optional attributes.
    The first unmarked text is the main description.
}
links & attributes
reference_target a named idea other ideas can point at

links_and_attributes {
    Bracket refs like [reference_target] connect ideas in the graph.
    @status draft
    @tags (syntax, reference)
}
imports
import "pythonmodule.py" as importable_python_module

imports {
    You can import [importable_python_module] - arbitrary files, not only .rq.
}
file refs
file_reference {
    Point at a whole file ["./module.py"], a symbol ["./module.py".SessionStore],
    or a named test ["./module.test.py:rejects expired token"].
}
wildcards
wildcard_refs {
    One edge that fans out - path glob plus idea pattern.
    ["../panels/*.rq".*_pane] matches every *_pane idea under panels/.
}
typescript
// rq:["./syntax.rq".comment_reference]
// An rq: comment in TypeScript pins this location back to an idea.
markdown
<!-- rq:["./syntax.rq".comment_reference] -->
An `rq:` comment in Markdown pins this doc back to an idea.
python
# rq:["./syntax.rq".comment_reference]
# An rq: comment in Python pins this location back to an idea.

A slice of a real graph

Imports, file anchors, wildcards, wikilinks, status, tags, and tests - one idea that tools can find.

from "auth.rq" import login
import "./session.rq" as session

session_refresh {
    refresh tokens rotate on use
    aligns with [session.session_expiry] and [login]
    related panes ["./ui/**/*.rq".*_pane]
    implemented in ["./src/auth/session.ts".rotateRefresh]
    proven by ["./src/auth/session.test.ts:rejects reused refresh token"]

    @status in-progress
    @tags (auth, security)
    @todo reject reuse of the old refresh token
}

Roadmap

Where we're going.

Now

Context that decides

Activity-bar signals for the next move - not just where a file came from.

Next

Rank the neighbourhood

Pagerank and multi-seed distance so agents get the right slice.

Later

Idea git history

CodeLens timeline on an idea - relative dates, moves included.

Later

How the graph is walked

Remember traversal patterns; recommend better next hops.

A note from the maker

Tony Cerqui, smiling, with shoulder-length curly brown hair

Hi, I'm Tony. These days code's easy to write but hard to keep in your head, especially with AI agents doing half the typing. reqlan started as my way of writing down the ideas that actually matter and tying them to the code that proves them. It's mostly just me (plus a few agents), and it's built using itself. In a sea of agents, I'm a real, friendly human on the other end, so if it helps you, breaks on you, or you just need a hand, let me know.

Tony CerquiProcess engineer & software developer · Brisbane, Australia

Go deeper

Packages