kr0ki playb00k

Generated by kr0ki docgen. Pattern derived from b00t-cli/src/commands/docgen.rs.


enum (20)

mod (21)

fn (41)

const (4)

trait (2)

type (2)

struct (54)


Diagram Example

The following D2 diagram is part of kr0ki's template suite and can be rendered via POST /render/d2:

# b00t Stack Orchestration Pattern — Executable Diagram Template
# Render: POST /render/d2 with this file as body → SVG via kr0ki
# https://github.com/PromptExecution/kr0ki

direction: right

# ── Upstream Model Side (not kr0ki's; owned by systhread / ufo-types / ledgrrr) ──
model_side: {
  shape: rectangle
  style.fill: "#e8f4f8"
  label: |md
    **MODEL SIDE** (upstream)
    Owned by `systhread` / `ufo-types` / `ledgrrr`
  |

  rust_types: Rust types { shape: circle; style.fill: "#c8e6c9" }
  iso_ir: iso_ir Node/Edge { shape: circle; style.fill: "#c8e6c9" }
  kerml: KerML snapshot { shape: circle; style.fill: "#c8e6c9" }
  ufo_graph: UFO semantic graph { shape: circle; style.fill: "#c8e6c9" }
  sysml_views: SysML v2 viewpoints { shape: circle; style.fill: "#c8e6c9" }

  rust_types -> iso_ir: derive
  iso_ir -> ufo_graph: lift
  kerml -> ufo_graph: deserialize
  ufo_graph -> sysml_views: expose
}

# ── The Cut-Node: kr0ki (rendering + CDN cache) ──
kr0ki: {
  shape: rectangle
  style.fill: "#fff3e0"
  style.stroke: "#e65100"
  style.stroke-width: 2
  label: |md
    **kr0ki** — cut-node
    Render + Cache + Artifact Resolver
  |

  cache: Content-addressed cache { shape: cylinder; style.fill: "#ffe0b2" }
  render_2d: 2D RenderBackend { shape: rectangle; style.fill: "#ffe0b2" }
  render_iso: Isometric 3D RenderBackend { shape: rectangle; style.fill: "#ffe0b2" }
  resolver: Artifact ref resolver { shape: rectangle; style.fill: "#ffe0b2" }

  cache -> render_2d: miss
  cache -> render_iso: miss
  cache -> resolver: refs
}

# ── 2D / 3D Rendering Library as a Service ──
render_library: {
  shape: rectangle
  style.fill: "#f3e5f5"
  label: |md
    **Rendering Library as a Service**
    (Kroki-family + systhread-core)
  |

  kroki_family: {
    label: Kroki-family 2D
    style.fill: "#e1bee7"
    plantuml: PlantUML
    graphviz: GraphViz
    d2: D2
    vegalite: Vega-Lite
    c4: C4 PlantUML
  }

  systhread: {
    label: systhread-core isometric
    style.fill: "#e1bee7"
    layout: Cassowary layout
    svg_out: SVG output
  }
}

# ── Downstream Consumers (leaves; not kr0ki's core) ──
consumers: {
  shape: rectangle
  style.fill: "#e8f5e9"
  label: |md
    **Downstream Consumers**
    (leaves — attach to kr0ki surface)
  |

  docs: Docs site
  comic: Comic engine
  explorer: 3D explorer
  cli: b00t CLI
}

# ── Crossings ──
model_side.sysml_views -> kr0ki.cache: validated model
kr0ki.render_2d -> render_library.kroki_family: POST slash slug slash svg
kr0ki.render_iso -> render_library.systhread.layout: layout JSON
render_library.systhread.svg_out -> kr0ki.cache: artifact
kr0ki.cache -> consumers.docs: SVG
kr0ki.cache -> consumers.comic: SVG
kr0ki.cache -> consumers.explorer: SVG refs
kr0ki.resolver -> consumers.cli: datum URLs

Render it live:

curl -X POST http://localhost:8787/render/d2 \
  -H "Content-Type: text/plain" \
  --data-binary @templates/b00t-stack-orchestration.d2 \
  --output diagram.svg

Rendered Rust flow → KerML / SysML v2

This playb00k fixture models the implemented Box-5 path: Axum route → RenderService → cache/backend → artifact. It is not a substitute for the deferred upstream ModelSnapshot → UFO → recognizer → ViewDefinition pipeline.

HTTPcallerAxumrouteRenderServiceFsCacheHttpKrokiBackendcache hit returns artifact; miss calls backend
Cache hits bypass HttpKrokiBackend; misses render and atomically write the artifact.
D2 source
# kr0ki Box-5 Rust code-flow — executable playb00k view source.
direction: right
client: HTTP caller { shape: person }
router: Axum router { shape: hexagon }
service: RenderService { shape: rectangle; style.fill: "#d8eaff" }
cache: FsCache { shape: cylinder; style.fill: "#e9f7df" }
backend: HttpKrokiBackend { shape: rectangle; style.fill: "#fff0cc" }
kroki: Kroki renderer { shape: cloud }
artifact: SVG or PNG { shape: document; style.fill: "#f7e6ff" }
client -> router: POST /render/:format
router -> service: route + auth
service -> cache: lookup
cache -> service: hit or miss
service -> backend: miss only
backend -> kroki: render
kroki -> backend: bytes
backend -> service: artifact
service -> cache: atomic write
service -> client: headers + bytes
client -> artifact: receives
KerML representation
// Playb00k fixture: KerML view of the implemented Box-5 Rust flow.
// It does not replace the upstream UFO/model pipeline.
package kr0ki_playbook {
    classifier RenderRoute;
    classifier RenderService;
    classifier FsCache;
    classifier HttpKrokiBackend;
    classifier KrokiRenderer;
    classifier RenderedArtifact;
    dependency routeToService : RenderRoute -> RenderService;
    dependency serviceToCache : RenderService -> FsCache;
    dependency serviceToBackend : RenderService -> HttpKrokiBackend;
    dependency backendToRenderer : HttpKrokiBackend -> KrokiRenderer;
    dependency serviceToArtifact : RenderService -> RenderedArtifact;
}
SysML v2 representation
// Playb00k fixture: SysML v2 structural view of kr0ki's implemented render path.
// Production ModelSnapshot -> UFO -> recognizer -> ViewDefinition remains upstream.
package kr0ki_playbook {
    part def RenderRoute;
    part def FsCache;
    part def RenderBackend;
    part def HttpKrokiBackend :> RenderBackend;
    part def RenderedArtifact;
    part def RenderService {
        part cache : FsCache;
        part backend : RenderBackend;
    }
    part render_flow {
        part route : RenderRoute;
        part service : RenderService;
        part renderer : HttpKrokiBackend;
        part artifact : RenderedArtifact;
    }
}

Capability examples and test evidence

LAN documentation: . Start with just run or just dev; both bind 0.0.0.0:8787 by default.

export KR0KI_URL=http://<LAN-host>:8787
curl "$KR0KI_URL/health"
curl "$KR0KI_URL/formats"
curl -X POST "$KR0KI_URL/render/graphviz?output=svg" --data-binary 'digraph {{ kr0ki -> cache }}' --output flow.svg
curl "$KR0KI_URL/docs/api.tomllm"

just test       # unit + in-process HTTP
just check      # formatting + clippy
just test-live  # opt-in live render