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.

Go deeper

Packages