- cube-bench crate: real-code-path throughput/latency over cubestore, cubecrypt (aes/gcm/chacha/xts), cubecode VM, and cubesys Session. Every section asserts correctness before timing. Wired into ./check as an opt-in 'bench' stage. - cubesys Session: per-command latency histogram + per-C-namespace record counts, exposed via a new 'stats' command over the live socket. - Deployed rebuilt cube-server to /home/luulu/.cubelinux/bin and restarted the system cube.service; verified stats live.
5.9 KiB
cubeai vs cubesys — was cubeai the intended interface for the 5 crates?
Short answer: No. cubeai is the top AI/ML + agent tier that sits
above the storage substrate (the 5 crates). It was never the interface to
the 5 crates. The intended integration interface for those crates — the thing
that holds the store and exposes it for use — was cubed-daemon (gRPC/HTTP)
plus cubecli, serviced by a cubesys integration crate. That role is
exactly what cubesys (cube-server + cubec + the shared Session
interpreter) already fills in CUBELinux-2.
This doc is written from the PDF spec (CUBELinux.pdf, extracted to /tmp/cubelinux-spec.txt) and the CUBELinux-2 source tree, and is the "comparison" the user asked for.
1. What the PDF actually specified (package arc)
| Package | PDF name | CUBELinux-2 crate | In scope? |
|---|---|---|---|
| 1 | cubecoords+cubestore | cubecoords+cubestore |
yes |
| 2 | cubefs | cubefs |
yes |
| 3 | cubevm/cubecode | cubecode |
yes |
| 4 | cubecrypt | cubecrypt |
yes |
| 5 | XTS | cubecrypt (feature) |
yes |
| 6 | cubeai (AI-OS) | — | excluded on this hardware |
The PDF's own "Prototype / Minimum Viable Build" section (CUBELinux.pdf, prototype outline) defines the integration surface separately from the AI layer:
cubed-daemon— a standalone server holding the store, speaking gRPC/HTTP (coverscubefsFUSE, CLI, and possibly/v1/...cloud APIs).cubecli— command-line client talking tocubed-daemon.cubesys— the integration crate binding Packages 3-5 over ONE sharedCubeStore.
cubeai (in the PDF's outline: cubeai-core + cubeai-agent) is described as
a separate top tier: "the AI/ML + agent layer that would consume the
substrate" — i.e. it is a client of cubed-daemon, not the daemon itself.
2. Where cubeai would have lived (the layer stack)
cubeai-agent (orchestration, planning, tool use) <- AI tier [excluded]
cubeai-core (model registry, runs, metrics) <- AI tier [excluded]
cubedbt (trace analytics) <- [excluded]
cubetrace (execution capture/replay) <- [excluded]
cubed-daemon + cubecli (store service + client) <- INTEGRATION [= cubesys]
─────────────────────────────────────────────────
cubecrypt cubecode cubefs cubestore cubecoords <- the 5 crates [built]
cubeai is above the dashed line. The 5 crates are below it. The dashed
line is the cubed-daemon/cubecli boundary — which cubesys implements.
3. cubeai as specified vs what we built
| Concern | PDF cubeai (intended) |
CUBELinux-2 cubesys (actual) |
|---|---|---|
| Layer | Top AI/ML + agent tier | Integration tier (the daemon boundary) |
| Purpose | Run models, plan, call tools, learn over traces | Hold the store; expose one command language |
| Speaks to crates? | As a CLIENT of cubed-daemon |
IS the daemon (cube-server + cubec) |
| Storage | Reads/writes records via cubed-daemon |
Owns the CubeStore<HashBackend> session |
| AI primitives | model registry, training runs, metrics, agents | none — deliberately out of scope |
| Excluded here? | YES (would consume the substrate) | NO — this is the built, in-scope integration |
Conclusion: confusing cubeai with "the interface to the 5 crates" inverts
the layering. cubeai would have been a consumer of that interface, not the
interface itself. We built the interface (cubesys == cubed-daemon role)
and deliberately stopped at the dashed line — exactly as the user's directive
required ("target = PDF vision up to, not including, the AI OS").
4. What cubesys actually delivers (evidence, not claims)
cube-serverholds a long-livedSessionover oneCubeStoreand serves it over a Unix-domain socket (cubec).cubesys::commands::Sessionis the single command interpreter shared by the REPL, thecubecsocket client, and the daemon, so behaviour cannot drift between front-ends../check mount(27/27) exercised the live FUSE path end-to-end through this same store.cubesysis the crate the PDF's "composition layer" implies but never names as Package 6 — it proves the 5 packages interoperate over a shared store.
5. If we later add cubeai (out of scope now)
Per the spec, cubeai-core would be a new crate that:
- connects to the running
cube-serverover the socket (reusingcubesys::net), - treats
cubeprograms / VM cells as tools it can invoke, - records model runs/metrics as
CodeCells ofKind::Checkpoint/Layer, - and is fed by
cubetrace/cubedbt(also excluded).
It would NOT modify the 5 crates' APIs — it would sit on top of cubesys, the
interface we already built. So the architecture is forward-compatible: the
exclusion was a scope cut, not a structural gap.
6. Measured reality (./check bench, 2026-08-11, warm in-mem)
These are the success metrics for the built substrate (correctness asserted before every timing):
- cubestore: ~6.1M puts/s (164 ns/op), 65 ns/op get, 100k-record scan.
- cubecrypt: AES-GCM seal 1.4µs / open 2.4µs; ChaCha/XTS ~2.5/4.8µs (1 KB).
- cubecode VM: 278 ns/op for a cross-cell call-graph run, 137 ns single cell.
- cubesys:
progwrite 560 ns,rundispatch 1.3µs,lsdirectory listing OK.
The substrate is fast and correct; it is ready to be consumed by a cubeai tier whenever that tier is in scope.