docs(sdk): add comprehensive Janus SDK documentation

Add README.md with:
- Architecture overview with diagram
- Quick start examples (Identity, QVL, GQL)
- Module reference for all public APIs
- GQL syntax guide (MATCH, CREATE, DELETE, RETURN)
- Design principles (Exit is Voice, Profit=Honesty, etc.)
- Testing instructions
- Sprint roadmap

Covers Sprint 3: Documentation
This commit is contained in:
Markus Maiwald 2026-02-03 12:52:41 +01:00
parent 19577e99f8
commit ff40f3739c
1 changed files with 314 additions and 59 deletions

View File

@ -2,81 +2,336 @@
> Sovereign; Kinetic; Anti-Fragile.
The Libertaria SDK provides primitives for building sovereign agent networks on top of Janus.
**Version:** 0.2.0-alpha
**Status:** Sprint 2 Complete (GQL Parser + Codegen)
**License:** MIT + Libertaria Commons Clause
**Status:** v0.1.0-alpha (2026-02-03)
---
## Core Modules
## Overview
| Module | File | Status | Purpose |
|--------|------|--------|---------|
| `identity` | `identity.jan` | ✅ Draft | Cryptographic agent identity with rotation/burn |
| `message` | `message.jan` | ✅ Draft | Signed, content-addressed messages |
| `context` | `context.jan` | ✅ Draft | NCP (Nexus Context Protocol) implementation |
| `memory` | `memory.jan` | ✅ Draft | Vector-backed semantic memory (LanceDB) |
| `lib` | `lib.jan` | ✅ Draft | Unified API export |
The Libertaria SDK provides primitives for building sovereign agent networks on top of [Janus](https://github.com/janus-lang/janus) — the programming language designed for Carbon-Silicon symbiosis.
## Quick Start
This SDK implements the **L1 Identity Layer** of the Libertaria Stack, featuring:
```janus
import libertaria
- **Cryptographic Identity** — Ed25519-based with rotation and burn capabilities
- **Trust Graph** — QVL (Quasar Vector Lattice) engine with betrayal detection
- **GQL (Graph Query Language)** — ISO/IEC 39075:2024 compliant query interface
- **Persistent Storage** — libmdbx backend with Kenya Rule compliance (<10MB)
-- Create sovereign agent
let agent = libertaria.create_sovereign_agent()
-- Create identity with rotation capability
let (new_id, old_id) = identity.rotate(agent.identity)
-- Send signed message
let msg = message.create(
from = agent.identity,
content_type = Text,
content = bytes.from_string("Hello Sovereigns!")
)
-- Create hierarchical context
let ctx = context.create({})
let sub_ctx = context.fork(ctx, reason = "Sub-conversation")?
-- Store in semantic memory
let emb = memory.embed(message.content(msg))
let vs = memory.store(agent.memory, message.id(msg), emb, "...")
```
## Design Principles
1. **Exit is Voice** — Agents can leave, taking their data cryptographically (`identity.burn`)
2. **Profit = Honesty** — Economic stakes align incentives (staking module planned)
3. **Code is Law** — No central moderation, only protocol rules
4. **Binary APIs** — gRPC/MsgPack/QUIC over REST
---
## Architecture
```
┌─────────────────────────────────────────────┐
┌─────────────────────────────────────────────────────────────┐
│ Application Layer │
│ (Your Agent / libertaria.bot) │
├─────────────────────────────────────────────────────────────┤
│ Libertaria SDK │
├──────────┬──────────┬──────────┬────────────┤
│ Identity │ Message │ Context │ Memory │
│ │ │ (NCP) │ (LanceDB) │
├──────────┴──────────┴──────────┴────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Identity │ │ Trust Graph │ │ GQL │ │
│ │ (identity) │ │ (qvl) │ │ (gql/*.zig) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Message │ │ Context │ │ Memory │ │
│ │ (message) │ │ (context) │ │ (memory) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ Janus Standard Library │
├─────────────────────────────────────────────┤
├─────────────────────────────────────────────────────────────┤
│ Janus Compiler (:service) │
└─────────────────────────────────────────────┘
└─────────────────────────────────────────────────────────────┘
```
## Next Steps
---
- [ ] Staking/Economics module (spam prevention)
- [ ] Channel module (QUIC transport)
- [ ] Discovery module (DHT-based agent lookup)
- [ ] Governance module (voting, proposals)
- [ ] Test suite
- [ ] Integration with Janus compiler
## Quick Start
### 1. Sovereign Identity
```janus
import libertaria.{identity}
// Create a new sovereign identity
let id = identity.create()
// Sign a message
let msg = bytes.from_string("Hello Sovereigns!")
let sig = identity.sign(id, msg)
// Verify signature
assert identity.verify(id, msg, sig)
// Rotate identity (new keys, linked provenance)
let (new_id, old_id) = identity.rotate(id)
// Burn identity (cryptographic deletion)
let burned = identity.burn(id)
```
### 2. Trust Graph (QVL)
```janus
import libertaria.{qvl}
// Create hybrid graph (persistent + in-memory)
let graph = qvl.HybridGraph.init(&persistent, allocator)
// Add trust edges
graph.addEdge(.{
from = alice,
to = bob,
risk = -0.3, // Negative = trust
level = 3, // Trust level 1-7
timestamp = now(),
expires_at = now() + duration.days(30)
})
// Detect betrayal rings (negative cycles)
let result = try graph.detectBetrayal(alice)
if result.betrayal_cycles.items.len > 0 {
// Handle betrayal
}
// Find trust path
let path = try graph.findTrustPath(alice, charlie,
heuristic = qvl.reputationHeuristic,
heuristic_ctx = &rep_map)
```
### 3. GQL (Graph Query Language)
```janus
import libertaria.{gql}
// Parse GQL query
let query_str = "MATCH (n:Identity)-[t:TRUST]->(m) WHERE n.did = 'alice' RETURN m"
let query = try gql.parse(allocator, query_str)
defer query.deinit()
// Transpile to Zig code
let zig_code = try gql.generateZig(allocator, query)
defer allocator.free(zig_code)
// Generated code looks like:
// pub fn execute(graph: *qvl.HybridGraph) !void {
// // MATCH statement
// // Traverse from n
// var t = try graph.getOutgoing(n);
// // Filter by type: TRUST
// var m = t.to;
// // WHERE n.did == "alice"
// // RETURN statement
// var results = std.ArrayList(Result).init(allocator);
// defer results.deinit();
// try results.append(m);
// }
```
---
## Module Reference
### `libertaria.identity`
| Function | Purpose |
|----------|---------|
| `create()` | Generate new Ed25519 identity |
| `rotate(id)` | Rotate keys with provenance chain |
| `burn(id)` | Cryptographic deletion |
| `sign(id, msg)` | Sign message |
| `verify(id, msg, sig)` | Verify signature |
| `is_valid(id)` | Check not revoked/expired |
### `libertaria.qvl`
| Type | Purpose |
|------|---------|
| `HybridGraph` | Persistent + in-memory graph |
| `PersistentGraph` | libmdbx-backed storage |
| `RiskGraph` | In-memory graph for algorithms |
| `GraphTransaction` | Batch operations |
| Function | Purpose |
|----------|---------|
| `detectBetrayal(source)` | Bellman-Ford negative cycle detection |
| `findTrustPath(src, tgt, heuristic)` | A* pathfinding |
| `addEdge(edge)` | Add trust edge |
| `getOutgoing(node)` | Get neighbors |
### `libertaria.gql`
| Function | Purpose |
|----------|---------|
| `parse(allocator, query)` | Parse GQL string to AST |
| `generateZig(allocator, query)` | Transpile to Zig code |
---
## GQL Syntax
### MATCH — Pattern Matching
```gql
-- Simple node
MATCH (n:Identity)
-- Node with properties
MATCH (n:Identity {did: 'alice', active: true})
-- One-hop traversal
MATCH (a)-[t:TRUST]->(b)
-- Variable-length path
MATCH (a)-[t:TRUST*1..3]->(b)
-- With WHERE clause
MATCH (n:Identity)-[t:TRUST]->(m)
WHERE n.did = 'alice' AND t.level >= 3
RETURN m
```
### CREATE — Insert Data
```gql
-- Create node
CREATE (n:Identity {did: 'alice'})
-- Create edge
CREATE (a)-[t:TRUST {level: 3}]->(b)
-- Create pattern
CREATE (a:Identity)-[t:TRUST]->(b:Identity)
```
### DELETE — Remove Data
```gql
-- Delete nodes
MATCH (n:Identity)
WHERE n.did = 'compromised'
DELETE n
```
### RETURN — Project Results
```gql
-- Return variable
MATCH (n) RETURN n
-- Return multiple
MATCH (a)-[t]->(b) RETURN a, t, b
-- With alias
MATCH (n) RETURN n.did AS identity
-- Aggregations (planned)
MATCH (n) RETURN count(n) AS total
```
---
## Design Principles
### 1. Exit is Voice
Agents can leave, taking their data cryptographically:
```janus
// Burn identity
let burned = identity.burn(my_id)
// After burn: no new signatures possible
// Verification of historical signatures still works
```
### 2. Profit = Honesty
Economic stakes align incentives:
- **Posting** requires $SCRAP burn
- **Identity** requires $STASIS bond
- **Reputation** decays without verification
### 3. Code is Law
No central moderation, only protocol rules:
- **Betrayal detection** via Bellman-Ford (mathematical, not subjective)
- **Path verification** via cryptographic proofs
- **Reputation** via Bayesian updates
### 4. Kenya Compliance
Resource-constrained environments:
- **Binary size:** <200KB for L1
- **Memory:** <10MB for graph operations
- **Storage:** Single-file embedded (libmdbx)
- **No cloud calls:** Fully offline-capable
---
## Testing
```bash
# Run all SDK tests
zig build test-qvl
# Run specific module
zig build test -- --module lexer
# Run with coverage (planned)
zig build test-qvl-coverage
```
---
## Roadmap
### Sprint 0 ✅ — BDD Specifications
- 58 Gherkin scenarios for QVL
### Sprint 1 ✅ — Storage Layer
- libmdbx PersistentGraph
- HybridGraph (disk + memory)
### Sprint 2 ✅ — GQL Parser
- ISO/IEC 39075:2024 compliant
- Lexer, Parser, AST, Codegen
### Sprint 3 🔄 — Documentation
- API reference (this file)
- Architecture decision records
- Tutorial: Building your first agent
### Sprint 4 📅 — L4 Feed
- DuckDB integration
- LanceDB vector store
- Social media primitives
### Sprint 5 📅 — Production
- Performance benchmarks
- Security audit
- Release v1.0
---
## Related Projects
- [Janus Language](https://github.com/janus-lang/janus) — The foundation
- [Libertaria Stack](https://git.maiwald.work/Libertaria) — Full protocol implementation
- [Moltbook](https://moltbook.com) — Agent social network (lessons learned)
---
## License
MIT + Libertaria Commons Clause
MIT License + Libertaria Commons Clause
See LICENSE for details.
---
*Forge burns bright. The Exit is being built.*