rela

module
v0.0.0-...-8c068ec Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 20, 2026 License: AGPL-3.0

README

Rela

A database layer on top of markdown. Define entities, link them together, and query their relationships—all stored as human-readable, version-controllable markdown files.

Rela is a schema-driven entity-graph platform. You define the shape of your domain in a YAML metamodel; rela gives you typed entities, typed relations between them, and a set of tools for querying, validating, analyzing, and presenting the resulting graph.

Common domains:

  • Architecture & design — Link requirements to decisions to components
  • Compliance & ISMS — Connect controls to evidence and audit findings
  • Risk management — Trace risks through mitigations to controls
  • Product development — Map features to user stories to tasks
  • Knowledge bases — Relate concepts, documents, and references
  • Project governance — Track goals through milestones to deliverables
  • Issue tracking — Bugs, features, and tickets with their lifecycle

Traceability is one use case, not the identity. Anything with typed entities and typed relations fits. Rela handles the rest: ID generation, bidirectional linking, orphan detection, coverage analysis, validation rules, and graph export.

Quick Start

# Initialize a project
rela init

# Create entities
rela create requirement --title "System must support 1000 users"
rela create decision --title "Use PostgreSQL for persistence"

# Link them together
rela link DEC-001 addresses REQ-001

# View the relationship
rela show REQ-001

# Launch the interactive TUI
rela tui

# Work with a project in a different directory
rela -p /path/to/project list
export RELA_PROJECT=/path/to/project && rela list

Features

  • Entity Management - Create, update, delete entities
  • Relationship Tracing - Link entities and trace dependencies
  • Quality Analysis - Find orphans, check coverage, detect gaps
  • Graph Export - Export to Graphviz DOT format
  • Interactive TUI - Full-featured terminal interface
  • MCP Server - Expose rela to AI assistants via Model Context Protocol
  • Markdown Storage - Human-readable, version-controllable files

Installation

go install github.com/Sourcehaven-BV/rela/cmd/rela@latest

Or build from source:

git clone https://github.com/Sourcehaven-BV/rela.git
cd rela
go build -o rela ./cmd/rela

Documentation

Document Description
Getting Started Installation, first project, core workflow
Concepts Architecture traceability fundamentals
CLI Reference Complete command reference
Metamodel Reference Configure entity types and relations
Export Guide Export, import, and data integration
Best Practices Maintenance tips and team workflows
MCP Server AI assistant integration via MCP
Data Entry Web App Config-driven web UI for entity management
Lua Scripting Programmable automation with embedded Lua
Encrypting a rela repo with git-crypt Use git-crypt for confidentiality when pushing to untrusted git hosts
Scheduled Tasks Run Lua scripts on recurring schedules
Tutorials
Tutorial Description
Tutorial: Building an ISO 27001 ISMS with Rela Build a complete Information Security Management System
Tutorial: Hybrid Project Management with Rela Build a hybrid project management system
Scenarios
Scenario Description
Scenario: DevOps/SRE Runbooks & Infrastructure Operations DevOps/SRE runbooks and infrastructure operations
Scenario: ISO 27001 Information Security Management System ISO 27001 Information Security Management System
Scenario: Hybrid Project Management Hybrid project management documentation

Project Structure

After running rela init:

your-project/
├── metamodel.yaml       # Entity types and relations config
├── entities/            # Markdown entity files (by type)
│   ├── requirements/
│   ├── decisions/
│   └── ...
├── relations/           # Markdown relation files
├── templates/           # Optional: templates for new entities/relations
│   ├── entities/        # One template per entity type
│   └── relations/       # One template per relation type
└── .rela/               # Cache (gitignored)

Core Traceability Chain

Requirement ──addresses──> Decision ──implements──> Solution ──realizes──> Component

Use rela analyze coverage to check for gaps in this chain.

License

AGPL-3.0 - See LICENSE for details.

Directories

Path Synopsis
cmd
rela command
rela-desktop command
rela-desktop runs the data entry application as a native desktop app using Wails.
rela-desktop runs the data entry application as a native desktop app using Wails.
rela-server command
rela-server runs the data entry web application as a standalone HTTP server.
rela-server runs the data entry web application as a standalone HTTP server.
internal
ai
Package ai provides LLM access for rela via OpenAI-compatible providers.
Package ai provides LLM access for rela via OpenAI-compatible providers.
app
Package app provides factories that construct the concrete services needed by each rela entry point (cli, data-entry server, desktop, MCP).
Package app provides factories that construct the concrete services needed by each rela entry point (cli, data-entry server, desktop, MCP).
automation
Package automation provides a trigger-action engine for entity lifecycle events.
Package automation provides a trigger-action engine for entity lifecycle events.
cache
Package cache provides small generic cache data structures.
Package cache provides small generic cache data structures.
cli
config
Package config provides read-only access to project-root configuration files — the YAML/JSON files users check into their repo alongside metamodel.yaml (data-entry.yaml, schedules.yaml, and so on).
Package config provides read-only access to project-root configuration files — the YAML/JSON files users check into their repo alongside metamodel.yaml (data-entry.yaml, schedules.yaml, and so on).
conflict
Package conflict provides detection and resolution of git merge conflicts in entity and relation markdown files.
Package conflict provides detection and resolution of git merge conflicts in entity and relation markdown files.
dataentry
Package dataentry provides a config-driven data entry web application built on top of rela's metamodel system.
Package dataentry provides a config-driven data entry web application built on top of rela's metamodel system.
dataentryconfig
Package dataentryconfig contains the configuration types and validation logic for the data-entry web application.
Package dataentryconfig contains the configuration types and validation logic for the data-entry web application.
desktop
Package desktop provides desktop-specific functionality for the Wails desktop app, including user preferences persistence.
Package desktop provides desktop-specific functionality for the Wails desktop app, including user preferences persistence.
entity
Package entity defines the domain types for rela entities and relations.
Package entity defines the domain types for rela entities and relations.
entitymanager
Package entitymanager defines the EntityManager service — the "human intent" write path that runs automations, validation, and any policy concerns (future: ACL, audit logging, rate limiting).
Package entitymanager defines the EntityManager service — the "human intent" write path that runs automations, validation, and any policy concerns (future: ACL, audit logging, rate limiting).
git
Package git provides git operations for the data entry app.
Package git provides git operations for the data entry app.
htmlutil
Package htmlutil provides HTML post-processing utilities.
Package htmlutil provides HTML post-processing utilities.
importer
Package importer provides functionality to import entities and relations from JSON, YAML, and CSV files into rela projects.
Package importer provides functionality to import entities and relations from JSON, YAML, and CSV files into rela projects.
lua
Lua bindings for the ai.* module (ai.chat, ai.complete, ai.embed).
Lua bindings for the ai.* module (ai.chat, ai.complete, ai.embed).
mcp
coverage-ignore: MCP prompt handlers - tested via integration tests
coverage-ignore: MCP prompt handlers - tested via integration tests
migration
Package migration provides schema migration support for rela project files.
Package migration provides schema migration support for rela project files.
natsort
Package natsort provides natural sorting for strings containing numbers.
Package natsort provides natural sorting for strings containing numbers.
openapi
Package openapi provides OpenAPI 3.1 spec generation from rela metamodels.
Package openapi provides OpenAPI 3.1 spec generation from rela metamodels.
pattern
Package pattern provides glob pattern parsing, validation, and regex conversion.
Package pattern provides glob pattern parsing, validation, and regex conversion.
rename
Package rename defines the public types for entity rename operations.
Package rename defines the public types for entity rename operations.
scheduler
Package scheduler runs Lua scripts on simple recurring schedules.
Package scheduler runs Lua scripts on simple recurring schedules.
schema
Package schema provides analysis and cleanup utilities for metamodel schemas.
Package schema provides analysis and cleanup utilities for metamodel schemas.
script
Package script orchestrates script execution for automations and user- initiated script runs.
Package script orchestrates script execution for automations and user- initiated script runs.
search
Package search provides full-text search using Bleve.
Package search provides full-text search using Bleve.
search/bleveindex
Package bleveindex provides a bleve-backed implementation of search.Backend for full-text entity search.
Package bleveindex provides a bleve-backed implementation of search.Backend for full-text entity search.
secrets
Package secrets loads per-script secret values from .rela/secrets.yaml.
Package secrets loads per-script secret values from .rela/secrets.yaml.
state
Package state provides a per-user key/value store for state that persists between runs but isn't part of the project's tracked source — UI state, render caches, scheduler bookkeeping.
Package state provides a per-user key/value store for state that persists between runs but isn't part of the project's tracked source — UI state, render caches, scheduler bookkeeping.
storage
Package storage provides filesystem abstraction for rela's file I/O operations.
Package storage provides filesystem abstraction for rela's file I/O operations.
store
Package store provides the storage abstraction for rela workspaces.
Package store provides the storage abstraction for rela workspaces.
store/fsstore
Package fsstore provides a filesystem-backed implementation of store.Store.
Package fsstore provides a filesystem-backed implementation of store.Store.
store/memstore
Package memstore provides an in-memory implementation of store.Store.
Package memstore provides an in-memory implementation of store.Store.
store/storetest
Package storetest provides a conformance test suite for store.Store implementations.
Package storetest provides a conformance test suite for store.Store implementations.
store/storeutil
Package storeutil provides shared helpers for store.Store implementations.
Package storeutil provides shared helpers for store.Store implementations.
templating
Package templating: fsloader.go contains the filesystem primitives used by FSTemplater to read, discover, and generate entity/relation template files.
Package templating: fsloader.go contains the filesystem primitives used by FSTemplater to read, discover, and generate entity/relation template files.
tracer
Package tracer provides graph traversal operations (trace, path, orphan detection, cycle detection, clustering) as a service separate from the store.
Package tracer provides graph traversal operations (trace, path, orphan detection, cycle detection, clustering) as a service separate from the store.
validation
Package validation provides custom validation rule checking for entities.
Package validation provides custom validation rule checking for entities.
validator
Package validator provides a Validator service that runs metamodel validation rules over a store.
Package validator provides a Validator service that runs metamodel validation rules over a store.
workspace
Package workspace provides a stateful domain session that owns the authoritative store, metamodel, and automation engine.
Package workspace provides a stateful domain session that owns the authoritative store, metamodel, and automation engine.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL