Transform complexity into clarity with C4 model documentation and LLM integration
loko (Papa Loko) is a modern architecture documentation tool that brings the C4 model to life through conversational design with LLMs, powerful CLI workflows, and beautiful documentation generation.
🤖 LLM-First Design - Design architecture conversationally with Claude, GPT, or Gemini via MCP
📝 Direct Editing - Edit markdown and D2 diagrams in your favorite editor
⚡ Real-Time Feedback - Watch mode rebuilds in <500ms with hot reload
🎨 Beautiful Output - Generate static sites, PDFs, and markdown documentation
🔧 Powerful CLI - Scaffold, build, validate, and serve - all from the terminal
🐳 Docker Ready - Official images with all dependencies included
🎯 Zero Config - Smart defaults with optional customization via TOML
💰 Token Efficient - Progressive context loading + TOON format minimize LLM costs
macOS / Linux (Homebrew)
brew tap madstone-tech/tap
brew install lokoGo Install
go install github.com/madstone-tech/loko@latestDocker
docker pull ghcr.io/madstone-tech/loko:latest# Initialize a new project
loko init my-architecture
cd my-architecture
# Scaffold your first system
loko new system PaymentService
# Edit the generated files
vim src/PaymentService/system.md
vim src/PaymentService/system.d2
# Build and preview
loko serve
# Open http://localhost:8080That's it! You now have a live-reloading documentation site.
# Start MCP server
loko mcp
# In your LLM client (Claude, etc):
# "I'm building a payment processing system with an API and database"
# LLM uses loko to scaffold structure and create diagrams# Watch for changes
loko watch &
# Edit files in your editor
vim src/PaymentService/system.d2
# Automatically rebuilds and refreshes browser# Start API server
loko api
# Trigger builds via HTTP
curl -X POST http://localhost:8081/api/v1/buildContext
└── System
└── Container
└── Component
my-architecture/
├── loko.toml # Configuration
├── src/ # Source documentation
│ ├── context.md
│ ├── context.d2
│ └── SystemName/
│ ├── system.md
│ ├── system.d2
│ └── ContainerName/
│ ├── container.md
│ └── container.d2
└── dist/ # Generated output
└── index.html
loko follows Clean Architecture principles:
loko/
├── cmd/ # CLI commands (thin layer)
│
├── internal/
│ ├── core/ # THE HEART - zero external dependencies
│ │ ├── entities/ # Domain objects: Project, System, Container
│ │ ├── usecases/ # Application logic + port interfaces
│ │ └── errors/ # Domain-specific errors
│ │
│ ├── adapters/ # Infrastructure implementations
│ │ ├── config/ # TOML configuration
│ │ ├── filesystem/ # File operations
│ │ ├── d2/ # Diagram rendering
│ │ ├── encoding/ # JSON + TOON encoders
│ │ └── html/ # Site builder
│ │
│ ├── mcp/ # MCP server + tools
│ ├── api/ # HTTP API server
│ └── ui/ # Terminal UI (lipgloss)
│
├── templates/ # Starter templates
└── docs/ # Documentation + ADRs
loko is designed to minimize LLM token consumption:
# Quick overview (~200 tokens)
query_architecture --detail summary
# System hierarchy (~500 tokens)
query_architecture --detail structure
# Full details for one system (variable)
query_architecture --detail full --target PaymentServiceTOON reduces tokens by 30-40% for structured data:
# JSON: ~380 tokens
{"systems":[{"name":"PaymentService","containers":["API","DB"]},...]}
# TOON: ~220 tokens
systems[4]{name,containers}:
PaymentService,API|DB
OrderService,API|DB
...Global templates (~/.loko/templates/) and project templates (.loko/templates/) powered by ason:
loko new system PaymentService
# Uses template: ~/.loko/templates/c4-system/
# Customize per-project
cp -r ~/.loko/templates/c4-system .loko/templates/custom-system
loko new system --template custom-system MyServiceTemplates use ason's variable interpolation syntax for scaffolding. See ason documentation for template authoring.
Powered by D2 with caching:
# src/System/system.d2
User -> API: Uses
API -> Database: Queriesloko render src/System/system.d2
# Generates: dist/diagrams/system.svgloko build --format html # Static website
loko build --format markdown # Single README.md
loko build --format pdf # PDF documents (requires veve-cli)loko validate
# Checks for:
# - Orphaned references
# - Missing required files
# - C4 hierarchy violations
# - Broken diagram syntaxloko.toml (TOML format):
[project]
name = "my-architecture"
description = "System architecture documentation"
[paths]
source = "./src"
output = "./dist"
[d2]
theme = "neutral-default"
layout = "elk"
cache = true
[outputs.html]
enabled = true
navigation = "sidebar"
search = true
[build]
parallel = true
max_workers = 4See docs/configuration.md for all options.
loko exposes these tools for LLM interaction:
| Tool | Description |
|---|---|
query_project |
Get project metadata |
query_architecture |
Token-efficient architecture queries |
create_system |
Scaffold new system |
create_container |
Scaffold container |
create_component |
Scaffold component |
update_diagram |
Write D2 code to file |
build_docs |
Build documentation |
validate |
Check architecture consistency |
{
"name": "query_architecture",
"parameters": {
"scope": "project | system | container",
"target": "specific entity name",
"detail": "summary | structure | full",
"format": "json | toon",
"include_diagrams": false
}
}- Installation Guide
- Quick Start Tutorial
- Configuration Reference
- Template System
- MCP Integration
- API Reference
- Architecture Decision Records
Check out examples/ for complete projects:
- simple-project - Minimal C4 documentation
- 3layer-app - Standard web → API → database
- serverless - AWS Lambda architecture
# Initialize project
docker run -v $(pwd):/workspace ghcr.io/madstone-tech/loko init my-arch
# Build documentation
docker run -v $(pwd):/workspace ghcr.io/madstone-tech/loko build
# Serve with hot reload
docker run -v $(pwd):/workspace -p 8080:8080 ghcr.io/madstone-tech/loko servegit clone https://github.com/madstone-tech/loko
cd loko
go mod download
make test
go run main.go --helpSee CONTRIBUTING.md for development guidelines.
- ✅ CLI commands (init, new, build, serve, watch)
- ✅ MCP server with token-efficient queries
- ✅ D2 diagram rendering with caching
- ✅ HTML site generation
- ✅ Template system (ason integration)
- ✅ Clean Architecture implementation
- 🚧 HTTP API server
- 🚧 TOON format support for MCP
- 🚧 PDF export via veve-cli
- 🚧 Advanced validation rules
- 📋 Architecture graph visualization
- 📋 Diff and changelog generation
- 📋 Plugin system
See ROADMAP.md for detailed feature plans.
We welcome contributions! loko is building in public - see our development progress.
- 🐛 Bug reports → Open an issue
- 💡 Feature requests → Start a discussion
- 🔧 Pull requests → See CONTRIBUTING.md
MIT License - Copyright (c) 2025 MADSTONE TECHNOLOGY
loko builds on excellent open-source tools:
- D2 - Declarative diagramming
- ason - Template scaffolding
- TOON - Token-efficient notation
- C4 Model - Architecture visualization approach
- Cobra - CLI framework
- Bubbletea - TUI framework
Papa Loko is the lwa (spirit) in Haitian Vodou who guards sacred knowledge, maintains tradition, and passes down wisdom to initiates. As the first houngan (priest), he is the keeper of the ritual knowledge that connects the physical and spiritual worlds.
Like Papa Loko, this tool acts as the guardian of your architectural wisdom - organizing knowledge, maintaining documentation traditions, and making complex systems understandable.
"Papa Loko, you're the wind, pushing us, and we become butterflies." 🦋