Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
d8fea25
spec(sod): symmetric replication layer for fold apps
hhff Aug 16, 2026
262102a
spec(sod): expand scope — engine port, portable core, browser/RN/p2p …
hhff Aug 16, 2026
d8f9052
plan(sod): implementation plan (core, engines, sync, transport, demo,…
hhff Aug 16, 2026
570329b
feat(sod): crate scaffold, frame encoding, hash chains, golden format…
hhff Aug 16, 2026
87a735a
feat(sod): version vectors
hhff Aug 16, 2026
ce423f4
feat(sod): LogStore port, MemLog, FileLog with torn-tail recovery
hhff Aug 16, 2026
4e9413c
feat(sod): Engine port and MemEngine oracle
hhff Aug 16, 2026
eabf8cc
feat(sod): Replica — log-first write path, replay, dedup, equivocatio…
hhff Aug 16, 2026
af2e0e3
feat(sod): sans-io sync session, relay, convergence property suite
hhff Aug 16, 2026
352ad20
feat(fold): metadata keyspaces for infrastructure layered over Stream
hhff Aug 16, 2026
4fcd550
fix(fold): Bag preserves negative running sums
hhff Aug 16, 2026
f00609b
feat(sod): FoldEngine with transactional cursor, watermark, different…
hhff Aug 16, 2026
7329c06
spec(sod): record Retain divergence analysis, Bag clamp finding, SOD-…
hhff Aug 16, 2026
61fae79
feat(sod): blocking websocket transport, end-to-end convergence test
hhff Aug 16, 2026
926415a
test(sod): portability gate — no-default-features + wasm32 check
hhff Aug 16, 2026
de88b9f
feat(sod-demo): replicated notes bag example with verified two-replic…
hhff Aug 16, 2026
00d4ee4
feat(sod-demo): Node.js napi-rs addon — cross-runtime sync verified
hhff Aug 16, 2026
fa6ec38
docs(sod): crate README, workspace README integration
hhff Aug 16, 2026
3f4e3df
fix(fold): meta_keyspace collision-checks names like sink keyspaces do
hhff Aug 16, 2026
d4fb363
refactor(sod): consume fold's public API only — zero fold modifications
hhff Aug 16, 2026
1513a3a
fix(sod): harden per adversarial review — 10 findings addressed
hhff Aug 16, 2026
5547d6d
fix(sod): round-2 review — overflow len classified untrustworthy, bou…
hhff Aug 16, 2026
196bffb
spec(sod-web): three-bog convergence demo design
hhff Aug 17, 2026
775db94
plan(sod-web): implementation plan
hhff Aug 17, 2026
255f237
feat(sod): Hello carries replica id; sessions yield SyncReport
hhff Aug 17, 2026
3cae21a
feat(sod): SyncListener/IncomingSession — per-session replica locking
hhff Aug 17, 2026
7ab4cb3
feat(sod-web): workspace + Next.js/addon scaffold
hhff Aug 17, 2026
47c6d79
feat(sod-web): addon — async sync, serve loop, peer liveness tracking
hhff Aug 17, 2026
2bb58ec
feat(sod-web): reaction board app — sync loop, connected badge, nerd …
hhff Aug 17, 2026
edf5b09
feat(sod-web): scripted three-instance partition rehearsal
hhff Aug 17, 2026
8f746a4
feat(sod-web): Dockerfile + Fly config, README runbook — image verifi…
hhff Aug 17, 2026
d21cc50
fix(sod-web): interim review findings — connect before locking, eager…
hhff Aug 17, 2026
c960ba5
fix(sod-web): final review round — 10 findings addressed
hhff Aug 17, 2026
a93d0a0
docs(sod-web): hub deployed to Fly (sanctuary-computer) and verified …
hhff Aug 17, 2026
7ddff8f
docs(sod-web): live-demo status, DNS/IP deploy gotchas, ignore .sod-*…
hhff Aug 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
target/
**/target/
**/node_modules/
**/.next/
.git/
.claude/
**/*.node
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/target
target/
.DS_Store
.DS_Store
*.node
node_modules/
.next/
.sod-*/
201 changes: 199 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 12 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,17 @@
[workspace]
resolver = "3"
members = ["fold", "anny", "ese", "examples/*"]
members = [
"fold",
"anny",
"ese",
"sod",
"examples/*",
"examples/sod-demo/node",
"examples/sod-web/addon",
]
# examples/sod-web is a Next.js app (no Cargo.toml at its root); its Rust
# crate is the explicit member above
exclude = ["examples/sod-web"]

# hoisted from fold; applies workspace-wide
[profile.release]
Expand Down
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,22 @@ ESE, our first take on a compiler oriented approach to static embedding. It’s
### Approximate Nearest Neighbors... yeah (ANNy)
This is a very fast crate for creating HNSWs.

### Sod
Symmetric replication for fold apps: local-first replicas ("sods") that
always accept writes and converge by exchanging hash-chained delta logs —
client↔server and p2p are the same protocol. Portable core (compiles to
wasm32) with fold as the default engine. See `sod/README.md` and the
`sod-demo` example.

### Examples
In this directory you'll find a few examples that show bog style databases in various use cases.

- `starter` — the smallest possible fold database: a persistent count and bag, with inserts, reads, and retraction. `cargo run -p starter`
- `timeseries` — weather readings bucketed into hourly and daily aggregates, updated incrementally. `cargo run -p timeseries`
- `chat` — a chat backend where fold is the source of truth and every update is broadcast to clients over a websocket. `cargo run -p chat`, then open http://localhost:3000
- `search` — text search three ways over one document stream: BM25 keyword search, HNSW semantic search over ese embeddings, and hybrid rank fusion. A good base for agent memory or document search projects. `cargo run -p search`
- `sod-demo` — a replicated notes bag: two or more local sod replicas (native CLI and a Node.js addon) converging over websocket sync. `cargo run -p sod-demo -- <dir> add hello`
- `sod-web` — the three-bog demo: a Next.js emoji reaction board where each instance embeds a sod replica; a Fly-deployed hub (live at https://sod-web-demo.fly.dev) plus two local instances survive a real wifi partition and converge on heal. See `examples/sod-web/README.md`

## More about Bog
Bog is a database runtime that makes every attempt to do as much work as possible as early as possible, to make reads incredibly fast. This means compiling queries into functions that eagerly update their output as mutations occur.
Loading