Packages
reckon_db
2.3.2
5.11.0
5.10.4
5.10.3
5.10.1
5.10.0
5.9.1
5.9.0
5.8.3
5.8.2
5.8.1
5.8.0
5.7.0
5.6.1
5.6.0
5.5.5
5.5.4
5.5.3
5.5.2
5.5.1
5.5.0
5.4.0
5.2.2
5.2.1
5.2.0
5.1.0
5.0.0
4.0.0
3.1.2
3.1.1
3.0.0
2.3.7
2.3.6
2.3.5
2.3.4
2.3.3
2.3.2
2.3.1
2.3.0
2.2.2
2.2.0
2.1.4
2.1.3
2.1.2
2.1.1
2.1.0
2.0.0
1.7.7
1.7.6
1.7.5
1.7.4
1.7.3
1.7.2
1.7.1
1.7.0
1.6.3
1.6.2
1.6.1
1.6.0
1.5.1
1.5.0
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.3
1.3.2
1.3.1
1.3.0
1.2.7
1.2.6
1.2.5
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.1.1
1.1.0
1.0.3
1.0.2
1.0.1
1.0.0
BEAM-native Event Store built on Khepri/Ra with Raft consensus. Event sourcing, persistent subscriptions, snapshots, and automatic cluster formation via UDP multicast discovery. Ships embedded Rust NIFs for 3-15x acceleration of crypto, hashing, compression, aggregation, filter matching, and grap...
Current section
Files
Jump to
Current section
Files
assets/khepri_paths.svg
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 520">
<defs>
<linearGradient id="rootGradPath" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#667eea"/>
<stop offset="100%" style="stop-color:#764ba2"/>
</linearGradient>
<linearGradient id="streamGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#4299e1"/>
<stop offset="100%" style="stop-color:#3182ce"/>
</linearGradient>
<linearGradient id="snapGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#48bb78"/>
<stop offset="100%" style="stop-color:#38a169"/>
</linearGradient>
<linearGradient id="subGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#f6ad55"/>
<stop offset="100%" style="stop-color:#ed8936"/>
</linearGradient>
<linearGradient id="schemaGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#9f7aea"/>
<stop offset="100%" style="stop-color:#805ad5"/>
</linearGradient>
</defs>
<!-- Background -->
<rect width="800" height="520" fill="#f7fafc"/>
<!-- Title -->
<text x="400" y="30" text-anchor="middle" font-family="system-ui, sans-serif" font-size="18" font-weight="bold" fill="#2d3748">Khepri Storage Paths</text>
<!-- Root Node -->
<rect x="350" y="50" width="100" height="40" rx="8" fill="url(#rootGradPath)" stroke="#5a67d8" stroke-width="2"/>
<text x="400" y="75" text-anchor="middle" font-family="monospace" font-size="12" fill="white">[root]</text>
<!-- Level 1 branches -->
<!-- Streams -->
<line x1="400" y1="90" x2="100" y2="130" stroke="#4a5568" stroke-width="2"/>
<rect x="30" y="130" width="140" height="35" rx="6" fill="url(#streamGrad)" stroke="#2b6cb0" stroke-width="2"/>
<text x="100" y="152" text-anchor="middle" font-family="monospace" font-size="11" fill="white">[streams]</text>
<!-- Snapshots -->
<line x1="400" y1="90" x2="260" y2="130" stroke="#4a5568" stroke-width="2"/>
<rect x="190" y="130" width="140" height="35" rx="6" fill="url(#snapGrad)" stroke="#276749" stroke-width="2"/>
<text x="260" y="152" text-anchor="middle" font-family="monospace" font-size="11" fill="white">[snapshots]</text>
<!-- Subscriptions -->
<line x1="400" y1="90" x2="420" y2="130" stroke="#4a5568" stroke-width="2"/>
<rect x="350" y="130" width="140" height="35" rx="6" fill="url(#subGrad)" stroke="#dd6b20" stroke-width="2"/>
<text x="420" y="152" text-anchor="middle" font-family="monospace" font-size="11" fill="white">[subscriptions]</text>
<!-- Schemas -->
<line x1="400" y1="90" x2="580" y2="130" stroke="#4a5568" stroke-width="2"/>
<rect x="510" y="130" width="140" height="35" rx="6" fill="url(#schemaGrad)" stroke="#6b46c1" stroke-width="2"/>
<text x="580" y="152" text-anchor="middle" font-family="monospace" font-size="11" fill="white">[schemas]</text>
<!-- Links -->
<line x1="400" y1="90" x2="720" y2="130" stroke="#4a5568" stroke-width="2"/>
<rect x="660" y="130" width="100" height="35" rx="6" fill="#fc8181" stroke="#c53030" stroke-width="2"/>
<text x="710" y="152" text-anchor="middle" font-family="monospace" font-size="11" fill="white">[links]</text>
<!-- Streams Subtree -->
<line x1="100" y1="165" x2="100" y2="195" stroke="#4299e1" stroke-width="1"/>
<rect x="30" y="195" width="140" height="30" rx="4" fill="#ebf8ff" stroke="#90cdf4" stroke-width="1"/>
<text x="100" y="215" text-anchor="middle" font-family="monospace" font-size="9" fill="#2b6cb0">[StreamId]</text>
<line x1="100" y1="225" x2="100" y2="250" stroke="#4299e1" stroke-width="1"/>
<rect x="30" y="250" width="140" height="30" rx="4" fill="#ebf8ff" stroke="#90cdf4" stroke-width="1"/>
<text x="100" y="270" text-anchor="middle" font-family="monospace" font-size="9" fill="#2b6cb0">[PaddedVersion]</text>
<line x1="100" y1="280" x2="100" y2="305" stroke="#4299e1" stroke-width="1"/>
<rect x="30" y="305" width="140" height="40" rx="4" fill="white" stroke="#4299e1" stroke-width="1"/>
<text x="100" y="325" text-anchor="middle" font-family="monospace" font-size="9" fill="#2d3748">#event{}</text>
<text x="100" y="340" text-anchor="middle" font-family="system-ui, sans-serif" font-size="8" fill="#718096">Event record</text>
<!-- Snapshots Subtree -->
<line x1="260" y1="165" x2="260" y2="195" stroke="#48bb78" stroke-width="1"/>
<rect x="190" y="195" width="140" height="30" rx="4" fill="#f0fff4" stroke="#9ae6b4" stroke-width="1"/>
<text x="260" y="215" text-anchor="middle" font-family="monospace" font-size="9" fill="#276749">[StreamId]</text>
<line x1="260" y1="225" x2="260" y2="250" stroke="#48bb78" stroke-width="1"/>
<rect x="190" y="250" width="140" height="30" rx="4" fill="#f0fff4" stroke="#9ae6b4" stroke-width="1"/>
<text x="260" y="270" text-anchor="middle" font-family="monospace" font-size="9" fill="#276749">[PaddedVersion]</text>
<line x1="260" y1="280" x2="260" y2="305" stroke="#48bb78" stroke-width="1"/>
<rect x="190" y="305" width="140" height="40" rx="4" fill="white" stroke="#48bb78" stroke-width="1"/>
<text x="260" y="325" text-anchor="middle" font-family="monospace" font-size="9" fill="#2d3748">#snapshot{}</text>
<text x="260" y="340" text-anchor="middle" font-family="system-ui, sans-serif" font-size="8" fill="#718096">Snapshot record</text>
<!-- Subscriptions Subtree -->
<line x1="420" y1="165" x2="420" y2="195" stroke="#ed8936" stroke-width="1"/>
<rect x="350" y="195" width="140" height="30" rx="4" fill="#feebc8" stroke="#f6ad55" stroke-width="1"/>
<text x="420" y="215" text-anchor="middle" font-family="monospace" font-size="9" fill="#c05621">[SubName]</text>
<line x1="420" y1="225" x2="420" y2="250" stroke="#ed8936" stroke-width="1"/>
<rect x="350" y="250" width="140" height="40" rx="4" fill="white" stroke="#ed8936" stroke-width="1"/>
<text x="420" y="270" text-anchor="middle" font-family="monospace" font-size="9" fill="#2d3748">#subscription{}</text>
<text x="420" y="285" text-anchor="middle" font-family="system-ui, sans-serif" font-size="8" fill="#718096">Subscription record</text>
<!-- Schemas Subtree -->
<line x1="580" y1="165" x2="580" y2="195" stroke="#9f7aea" stroke-width="1"/>
<rect x="510" y="195" width="140" height="30" rx="4" fill="#faf5ff" stroke="#d6bcfa" stroke-width="1"/>
<text x="580" y="215" text-anchor="middle" font-family="monospace" font-size="9" fill="#6b46c1">[StoreId]</text>
<line x1="580" y1="225" x2="580" y2="250" stroke="#9f7aea" stroke-width="1"/>
<rect x="510" y="250" width="140" height="30" rx="4" fill="#faf5ff" stroke="#d6bcfa" stroke-width="1"/>
<text x="580" y="270" text-anchor="middle" font-family="monospace" font-size="9" fill="#6b46c1">[EventType]</text>
<line x1="580" y1="280" x2="580" y2="305" stroke="#9f7aea" stroke-width="1"/>
<rect x="510" y="305" width="140" height="40" rx="4" fill="white" stroke="#9f7aea" stroke-width="1"/>
<text x="580" y="325" text-anchor="middle" font-family="monospace" font-size="9" fill="#2d3748">schema_map()</text>
<text x="580" y="340" text-anchor="middle" font-family="system-ui, sans-serif" font-size="8" fill="#718096">Schema definition</text>
<!-- Example Path Box -->
<rect x="50" y="370" width="700" height="130" rx="10" fill="#edf2f7" stroke="#cbd5e0" stroke-width="1"/>
<text x="400" y="395" text-anchor="middle" font-family="system-ui, sans-serif" font-size="12" font-weight="bold" fill="#2d3748">Example Paths</text>
<!-- Examples -->
<text x="70" y="425" font-family="monospace" font-size="10" fill="#4299e1">[streams, "orders-123", "000000000042"]</text>
<text x="450" y="425" font-family="system-ui, sans-serif" font-size="10" fill="#718096">→ Event at version 42</text>
<text x="70" y="450" font-family="monospace" font-size="10" fill="#48bb78">[snapshots, "orders-123", "000000000100"]</text>
<text x="450" y="450" font-family="system-ui, sans-serif" font-size="10" fill="#718096">→ Snapshot at version 100</text>
<text x="70" y="475" font-family="monospace" font-size="10" fill="#ed8936">[subscriptions, "my-projection"]</text>
<text x="450" y="475" font-family="system-ui, sans-serif" font-size="10" fill="#718096">→ Subscription config</text>
<text x="70" y="500" font-family="monospace" font-size="10" fill="#9f7aea">[schemas, my_store, "OrderPlaced"]</text>
<text x="450" y="500" font-family="system-ui, sans-serif" font-size="10" fill="#718096">→ Schema for OrderPlaced</text>
</svg>