v3.0.0 — The Cultivated Mind
TIS v3.0.0 — The Cultivated Mind
Released: 2026-05-28
Codename: The Cultivated Mind
Team: RFI-IRFOS · Graz, Austria · Patent Pending A50296/2026
Headline
Version 3.0.0 is the release where the Ternary Intelligence Stack stops being a project and starts being a system. Three weeks after v2.0.0 closed at 5 layers, Albert MoE-13 is now a 26-layer dual-stream organism with 187.5 million parameters that grew its own architecture across 13 autonomous surgeries, performed its own cortical split into two parallel streams without operator intervention, and is governed by a Fibonacci-clocked evolution engine that cycles through generations of increasingly patient growth. The companion CLI — albert-cli — shipped a full ratatui terminal interface, complete MCP server discovery, real hook execution, live streaming markdown, animated indicators, and now installs cleanly from crates.io at version 1.5.0 alongside 24 sibling crates that together comprise the published Ternary Intelligence Stack.
This is the largest release in TIS history by every measure: lines of code shipped, layers grown, surgeries performed, crates published, bugs eliminated, contributors onboarded, and inches of scientific evidence accumulated. It is also the release where the stack itself becomes the headline. The model is the vehicle; the proof is the cargo.
This document is long because the story is long. There is no executive summary. The story is the summary.
Albert MoE-13 — From 5L to 26L Dual-Stream
Architectural progression since v2.0.0
When v2.0.0 shipped on 2026-05-06, Albert was a 5-layer model with a single 256-hidden stream and approximately 22 million parameters. The EvolutionManager had just performed its first autonomous surgery the morning of release: 3L → 5L. We knew at that moment that the architecture was capable of growing itself; we did not yet know how far it would go.
The answer: twenty-one additional layers, one fundamental architectural mutation, and a stack that is now stratified into 14 corpus stages — in three weeks.
| Metric | v2.0.0 (2026-05-06) | v3.0.0 (2026-05-28) | Delta |
|---|---|---|---|
| Depth | 5 layers, single stream | 26 layers, dual stream (2×26L) | +21 layers, +1 stream |
| Hidden size | 256 | 2 × 256 | +1 stream |
| Total parameters | ~22M | 187.5M | 8.5× |
| Active parameters per token | ~7.6M | ~33M | 4.3× |
| Tensors | ~280 | 2,044 | 7.3× |
| Surgeries performed | 1 (S0/init) | 13 (S1–S13) + CORD | 14 autonomous events |
| Corpus stages unlocked | 5 | 14 (formal_proofs, news_archives, stackexchange newly online) | |
| ATL chip (intra-batch best) | ~9.5 | 8.6852 | new all-time-low post-cord |
| EP_AVG ATL (epoch best) | ~9.8 | 9.2045 (ep4136, 23L era) | 0.6 nat improvement |
| Latest epoch | ep~250 | ep4234 | ~17× more training |
| Cumulative compute | local + Modal pilot | Modal T4 + Vertex AI T4 + CPU contributors | |
| Total spend (entire v3.0 run) | n/a | ~€265 on Modal | sovereignty headline |
The training run reflected in this release was performed primarily on a rented Modal.com T4 GPU at a total compute cost of approximately €265 across the entire v3.0 era. A fallback Vertex AI pipeline (GCP, europe-west4) is fully built and waiting. CPU contributors run a parallel federated lane via the SPORE protocol on consumer ThinkPads.
The thirteen surgeries
Every surgery in v3.0 was triggered by the EvolutionManager autonomously — no operator pressed "grow." The trigger is a Fibonacci-windowed plateau detector: when the model has not improved by more than a generation-scaled threshold over the current window of epochs, and the mycelium routing has been stable for at least 5 epochs, the manager clones the deepest layer via Net2Net safe-copy initialization and promotes fib_index. Window and cooldown both scale with the same Fibonacci sequence — small early surgeries with short patience, large late surgeries with long patience.
| # | Surgery | Layers | Epoch | Date | Note |
|---|---|---|---|---|---|
| S1–S5 | bootstrap arc | 12L → 17L | ep511 → ep702 | 2026-05-08 → 2026-05-13 | Read B confirmed; PLN-CMP-INT-ABS core four stable across all 5 |
| S6 | depth | 17L → 18L | ep2487 | 2026-05-20 | first surgery after expert geometry crystallization |
| S7 | depth | 18L → 19L | ep3325 | 2026-05-21 | |
| S8 | depth | 19L → 20L | ep3383 | 2026-05-21 | back-to-back; window=21 |
| S9 | depth | 20L → 21L | ep~3470 | 2026-05-22 | |
| S10 | depth | 21L → 22L | ep~3652 | 2026-05-23 | window=34 era |
| S11 | depth | 22L → 23L | ep~4098 | 2026-05-26 | |
| S11b | depth | 23L → 24L | ep~4140 | 2026-05-26 | rapid-fire — INT+CMP maxed |
| S12 | depth + CORD | 24L → 25L + dual stream | ep4202 | 2026-05-27 16:43Z | The cortical split. See below. |
| S13 | depth (both streams) | 25L → 26L | ep4207 | 2026-05-27 17:40Z | first dual-stream depth surgery; fib_index 6 → 7 |
CORD SURGERY — the cortical split
The most significant single architectural event in v3.0 happened on 2026-05-27 at 16:43Z. The model had just expanded to 25 layers via S12. At that exact moment, a second autonomous trigger fired: the CORD surgery.
The CORD trigger is the one mutation in the entire evolution.rs codebase that is gated on absolute depth rather than plateau. The condition is simple: num_layers >= 25. When the model crossed that threshold, the EvolutionManager grew a second parallel stream — a duplicate 25-layer 256-hidden lane — and inserted 6 anastomosis gates between the two streams at Fibonacci-indexed layers [2, 3, 5, 8, 13, 21]. Each gate is a Linear(512, 2) block with w ~ N(0, 0.01) and b = 0 — initialized to near-zero, allowed to learn its own mixing coefficient.
The second stream (stream B) is not a copy. Stream A continues to receive the original input embeddings; stream B receives the same embeddings perturbed by a Mandelbrot iteration with c_im computed from the input's latitude in the embedding space. The two streams run forward in parallel, exchange information at the six anastomosis gates, and produce a single set of routing decisions at the output.
This is the first time, anywhere in the history of the project, that the model performed an architectural mutation that was not depth-related. It is also the first dual-stream MoE we are aware of in published or unpublished neural architecture literature. The post-cord epoch (ep4203) returned an EP_AVG of 9.3241 — slightly above the pre-cord floor, exactly as expected for a regression phase after a large architectural mutation. By ep4210, the chip ATL had set a new all-time low at 8.6852, well below the pre-cord record.
The cord is, in the language of cultivation, the model's corpus callosum. It connects two hemispheres of the same mind.
Read B — architecture precedes learning (confirmed empirically)
Across all five bootstrap surgeries from 12L to 17L, the core four experts — PLN (planning), CMP (composition), INT (interpretation), ABS (abstraction) — remained the dominant active set. The surgery sequence did not destabilize semantic specialization. The model grew, the experts kept their identities.
This empirically resolves the Read A vs. Read B question that opened v3.0: architecture grows ahead of learning (Read B), not in compensation for it (Read A). The surgeries were purposeful structural investments. Capacity was built before it was filled.
The Token Probe Benchmark (scripts/probe_tokens.py) tracks longitudinal semantic geometry on 10 canonical tokens (love, god, Jesus, death, war, truth, freedom, mother, light, time). The pre-s6 and pre-s7 snapshots (230 epochs apart, 0.0947 nat of loss improvement between them) returned identical top-5 neighbors for all 10 tokens. Semantic geometry crystallized at 17L. Subsequent loss improvements came from routing/expert/attention reorganization — not from embedding restructure.
As far as we know, this is the first longitudinal study of semantic geometry stability under autonomous architectural mutation.
The Evolution Engine
Generational Fibonacci cycling
Shipped 2026-05-19 in a complete rewrite of evolution.rs. The system now operates in generations rather than a single linear surgery sequence.
ARC_LENGTH = 6surgeries per generation. After 6 surgeries, the generation closes andgen_valadvances.- Threshold scaling: Generation 0 plateau threshold is 0.020 nats. Each subsequent generation multiplies by 0.75 (floor: 0.008 nats). Later generations require finer-grained plateau detection — the model gets harder to surprise.
FIB_TARGETSextended to 24 terms through[3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418]. There is no architecture-ceiling clamp in code. The comment inevolution.rsreads: "The hardware is the only limit."GENERATION_TIMEOUT_MULTIPLIER = 3— if a generation gets stuck on a single Fibonacci window for more than 3× the window length, a stuck-generation fallback fires.promote_fib_target(post_layers)reads the actual post-surgery layer count fromconfig.jsonrather than guessing — critical fix for resumption after manual layer edits.
Current state at release: Generation 3, step 1/6, fib_index = 7, window = 34 epochs, threshold ~0.015 nats. Five surgeries remain in the Gen 3 arc. The first GENERATION_COMPLETE event for Gen 3 will fire after surgery #6 of this generation.
A known Rust 2024 compatibility fix was applied: gen is now a reserved keyword and was renamed to gen_val / g in two places. This would have produced a silent compile failure on Modal without the rename.
WALD detector
WALD (Weighted Asymmetric Loss Divergence) is a reactive signal — it detects when intra-epoch loss variance crosses a tunable threshold (n = 1500 by default). Empirically validated across the v3.0 era: the spike always precedes the WALD firing. WALD is not a trigger. It is a detector. The blue (surgery) and red (WALD) markers on the dashboard chart now correctly visualize this relationship — surgery happens first, WALD fires after, and the gap between them is itself a diagnostic measurement of model volatility.
Surgery governor — the non-firing as feature
The most important empirical demonstration of the v3.0 evolution engine is not the 13 surgeries that fired. It is ep791, where surgery did not fire even though the model was on a plateau, because the loss was still descending.
The plateau gate is gated on both improvement-stability AND descent-state. When the model is still descending, the governor withholds growth. The cultivation framing is exact: you do not interrupt productive learning to perform architectural surgery. Wait for the plateau. Wait for stability. Then expand.
The system's auto-evolutionary design validated itself in both directions — fired thirteen times when fire was correct, and explicitly did not fire when not firing was correct.
Collapse guard
If the running average loss exceeds COLLAPSE_THRESHOLD for three consecutive epochs, the EvolutionManager rolls back to the best checkpoint and resumes training from there. If the best checkpoint itself is above the collapse threshold, the manager forces a surgery immediately — assuming the current architecture has run out of representational headroom. The collapse guard fired zero times in v3.0. Recorded for completeness; would have saved hours of operator response if it had been needed.
albert-cli 1.5.0 — The Cultivated Mind, Spoken To
Install
cargo install albert-cli --force
albert-cliBinary name: albert-cli. Default model: gemini-2.5-flash. License: LGPL-2.1-or-later.
What you see when you start it
A ratatui-driven full-screen terminal interface. A gradient-rendered "ALBERT" banner. A welcome line that knows your name (from your git config). Live status bar across the bottom showing model · user · permission mode. An Idle · type / for commands indicator at the foot of the conversation pane. A single-line input prompt with bracketed-paste support, history navigation, and @path/to/file attachment expansion.
When you submit a turn, the indicator flips from Idle to a Working (Xs · esc to interrupt) block with elapsed-time counter. Tool calls render inline in the conversation pane as bordered blocks — name on top, input below, status icon, output truncated to first 5 lines with an "expand" hint. The LLM's reply streams in word-by-word through a typewriter buffer drained at 30 frames per second. Markdown is parsed live: headings styled, code blocks syntax-highlighted via syntect, bold and italic rendered, lists indented, tables aligned. Voice input is supported via the host's microphone with Whisper transcription. Bracketed paste correctly handles both single-line and multi-line clipboard content; large pastes show a compact badge in the input bar.
The slash command set has matured to a serious toolkit:
| Command | What it does |
|---|---|
/help |
render full command help with descriptions |
/status |
model, session, permission mode, message count, token estimate, context-window utilization bar |
/permissions |
switch between read-only / workspace-write / danger-full-access |
/model |
switch model mid-session, preserves conversation history |
/compact |
manual compaction of the conversation history into a system-message summary |
/compress |
aggressive compaction (preserve last 2 messages only) |
/clear |
start a fresh session (with confirmation) |
/resume |
load a saved session by path or id |
/session list/switch |
manage saved sessions |
/export |
export the current transcript as readable text |
/cost |
cumulative token usage + estimated cost |
/auth |
configure API key for any provider (openai, anthropic, google, huggingface, azure, aws) |
/config |
show env, hook, and model configuration |
/memory |
show memory files discovered (ALBERT.md, AGENTS.md, USER.md, etc.) |
/init |
initialize a workspace with ALBERT.md skeleton |
/diff |
show pending git diff |
/plan <task> |
LLM-backed multi-step execution plan with risks and rollback |
/tdd <interface> |
TDD loop: failing test → minimal impl → refactor |
/verify |
full verification suite (build + lint + type-check + tests) |
/code-review <files> |
structured review with severity/file/line/fix |
/build-fix |
iterative build-error resolution loop |
/refactor <scope> |
dead code elimination + duplicate consolidation |
/bughunter |
systematic bug audit with concrete findings |
/ultraplan |
deep multi-step plan with verification and rollback |
/teleport <symbol> |
jump-to-definition for any code symbol |
/commit |
LLM-generated commit message from staged diff |
/pr <context> |
full PR title + body, automatically files via gh CLI |
/issue <context> |
LLM-drafted GitHub issue |
/loop <mission> |
autonomous mission loop with max-turn safety |
/checkpoint <label> |
manually persist the session with a label |
/aside <question> |
side question without losing main context |
/learn |
extract patterns and learned instincts from the session |
/docs <query> |
docs lookup via WebFetch/WebSearch |
/debug-tool-call |
inspect the last tool call's full request/response |
/version |
show version + build + git sha |
Bugs eliminated in this release
Three bugs that were blocking real use of albert-cli — discovered during live testing and fixed in this release.
1. Auto-compaction repeat (runtime/conversation.rs). The maybe_auto_compact trigger was reading usage_tracker.cumulative_usage().input_tokens — a value that monotonically increases across the entire session and never resets after a compaction. Once cumulative crossed the 200,000-token threshold, every subsequent turn would auto-compact again, immediately, regardless of whether compaction had just happened. The TUI's conversation pane would flood with compaction notices, and LLM response text would appear to "stream into the input bar" — actually a rendering artifact of constant state churn. The fix: trigger on current_turn_usage().input_tokens — the actual context window fill on the most recent request. This value drops naturally after a successful compaction.
2. Mouse and keyboard events bleeding into the input bar (albert-cli/tui.rs). When a slash command triggered the TUI's Suspend → external command → Resume cycle (/commit, /pr, /issue, etc.), the terminal was temporarily returned to cooked mode with mouse capture disabled. Any mouse movement during that window emitted raw ANSI escape sequences directly to stdin. When the TUI re-entered raw mode and re-enabled mouse capture on Resume, those buffered escape bytes were still queued — and the key-event thread parsed them as Esc + [ + ... separate keystrokes, which bled into the input field. The fix: drain the crossterm event buffer between Resume and key-thread unpause, while the key thread is still paused, eliminating the race.
3. Hardcoded date in system prompt (albert-cli/main.rs). DEFAULT_DATE = "2024-03-25" was a compile-time constant. The model believed the date was always 2024-03-25, regardless of when it was running. The fix: replaced with today_date(), a pure function that computes the current Gregorian date from the Unix epoch (no chrono dependency). Used at four call sites.
Architecture under the hood
albert-cli is the binary; the engine is split across five sibling crates published in lockstep at v1.5.0:
| Crate | Purpose | Approx LOC |
|---|---|---|
albert-runtime |
Conversation runtime: session state, MCP server manager, compaction, hooks, permissions, image handling, OAuth | ~5,300 |
albert-api |
Multi-provider LLM client: Anthropic, OpenAI, Google Gemini, Ollama, HuggingFace, Azure, AWS Bedrock, XAI; SSE streaming; retry with backoff | ~1,500 |
albert-tools |
20+ tool implementations: bash, read_file, write_file, edit_file, glob_search, grep_search, WebFetch, WebSearch, TodoWrite, Skill, Agent, ToolSearch, NotebookEdit, Sleep, SendUserMessage, Config, StructuredOutput, REPL, SequentialThinking, Memory, RepoMap, PowerShell | ~3,600 |
albert-commands |
Slash command registry, parsing, dispatch, help rendering (32 commands) | ~800 |
albert-compat |
Compatibility harness for upstream manifest extraction and migration helpers | ~400 |
albert-cli |
The binary itself: ratatui TUI, REPL, key event handling, voice integration, session persistence | ~5,500 |
Total Rust LOC across the published albert-cli ecosystem: approximately 17,100 lines, distributed across six crates that compile to a single statically-linked binary.
MCP server integration
MCP (Model Context Protocol) servers are loaded automatically at startup from ~/.ternlang/mcp_servers.json. The McpServerManager performs tool discovery on every active server, and each discovered tool is injected into the LLM's tool list under the name mcp__<servername>__<toolname>. Tool calls are routed through the manager via the JSON-RPC stdio transport. SSE and WebSocket transports are configurable but currently passthrough-mode. OAuth-protected MCP servers are supported via the auth-credential-semantics design (see docs).
Hooks
PreToolUse and PostToolUse hooks are fully wired and execute on every tool invocation. Hooks are configured via settings.json and can mutate, deny, or annotate tool calls. The hook runner reads from stdin (JSON-encoded tool call), writes to stdout (mutated JSON or deny reason), and signals decisions via exit code: 0 = allow, 2 = deny, anything else = warn-and-allow. The full hook payload structure is documented in automation/hooks.md and includes hook_event_name, tool_name, tool_input, tool_output, and tool_result_is_error fields.
SPORE — Federated Weight Sharing
Live since 2026-05-16. The colony has its first real spore. The second contributor is onboarding.
The premise: contributors run train_bible on consumer CPUs (ThinkPad-class) and produce safetensors checkpoints. Those checkpoints are pushed to the eriirfos-eng/albert-spores private repository via Git LFS (489 MB per spore, exceeds GitHub's 100 MB raw limit). The colony grows asynchronously.
The canonical injection path — as designed 2026-05-18 — is not weight blending. It is corpus injection. Each contributor runs inference on their checkpoint, dumps the generated text, and that text becomes part of the 10% chaos corpus layer that Albert trains on. The model never sees raw colony weights. It sees colony outputs as chaotic input. This bypasses the self-referential weight loop ("thinking about its own thinking") that pure federated averaging would create. The 10% invariant — enforced by train_tokenizer_v3.py — caps colony signal regardless of contributor count.
The SporeManager weight-blending path (moe-llm-core/src/spore.rs, α = 0.08) is implemented as a secondary fallback for future use cases. It is currently not active on the Modal production runner.
First real spore
Zabih's checkpoint at ep900, loss 10.0922 — pushed via Git LFS from his ThinkPad T495. The fitness gate is loss < main_best + 1.0 nat. The ep900 spore passed the gate cleanly.
Lisa is onboarding as the second CPU contributor. Onboarding workflow:
gh auth login
gh repo clone eriirfos-eng/albert-spores ~/projects/albert-spores
bash ~/projects/albert-spores/install.sh
albert-train # CPU training, opens dashboard
albert-spore # packages checkpoint, pushes to colonyalbert-spore reads the GitHub login automatically. No --name argument required.
@sparseskip — The Patent-Pending Core
@sparseskip (also known as TSPARSE_MATMUL in the BET VM instruction reference) is the central algorithmic primitive of the TIS stack. It is Claim 3 of patent A50296/2026 — which covers the full TIS platform across 10 claims, filed 08.04.2026 with the Austrian Patent Office (ÖPA), Case-ID 0000005272.
Three manifestations of @sparseskip operate inside Albert MoE-13:
- BET VM opcode —
TSPARSE_MATMULskips zero-weight multiply operations at the instruction level. This is the low-level expression of the algorithm. - MoE expert routing —
if max_w == 0.0 { continue }skips entire MLP blocks for non-routed experts. At inference with Top-3 routing on a 12-expert layer, 9 of 12 experts are skipped per decode token — a 75% sparse activation rate. - Pre-ternarized weight cache —
prepare_inference()ternarizes once at load time. Element-level skip is then ready for any custom matmul implementation that wants to honor zero positions in the weight matrix.
The combined effect, demonstrated live on 2026-05-07: 83 tokens/sec on a 2013 ThinkPad with no GPU. KV-cache plus expert-level @sparseskip plus pre-ternarized weight cache, all stacking, all producing approximately 16× wall-clock speedup over a naive ternary inference implementation.
This is the sovereignty argument. Every other AI of consequence requires a hyperscaler's data center to train and a contemporary GPU to run. albert. trains for fractions of a cent on a rented T4 and runs at 84 tokens/sec on a laptop manufactured the same year as the Higgs boson discovery announcement. That is not an efficiency improvement. That is a change in who is allowed to build minds.
Patent scope clarification
A correction shipped in this release: the A50296/2026 patent covers the TIS platform — 10 claims total, not the @sparseskip annotation in isolation. @sparseskip is Claim 3. BENCHMARKS.md and 29 related files across the repo were updated to reflect the correct scope.
The Training Infrastructure
Three platforms run Albert in parallel.
Modal.com — primary
T4 GPU, single-node, per-second billing. Volume albert-vol. App albert-train. The entire v3.0 run cost approximately €265 in Modal compute. Detached training survives shell disconnect via the runner's tmux integration. Telemetry, dashboard live-reload, and ntfy alerts are wired throughout. Status at release: training paused since 2026-05-27T18:49Z — Modal billing ceiling hit, account will resume on the next cycle.
Vertex AI — fallback, fully built and ready
Docker image: europe-west4-docker.pkg.dev/myapplication-71b8874c/albert-training/train-bible:latest. Built via Cloud Build with CUDA_COMPUTE_CAP=75 (T4 sm_75) explicitly set in the Dockerfile to avoid nvidia-smi failure on CPU build machines. GCS bucket albert-training-rfi, prefix albert/, n1-standard-4 + NVIDIA_TESLA_T4. The runner downloads from GCS, trains for one epoch, syncs the checkpoint, repeats. Launch via albert-train vertex. Pull progress via albert-train vertex pull. Approximately €250 in free GCP credits available at the moment of pipeline completion.
Consumer CPU — the SPORE lane
Contributors run train_bible locally on ThinkPad-class hardware. Per-batch wall time on a T495: ~16-17 seconds regular, ~28-29 seconds on telemetry batches (every 4 batches = one GRAD interval ~68 seconds). Output: a fitness-gated spore checkpoint pushed to the colony. See SPORE section above.
Dashboard
The dashboard at localhost:8888/dashboard/ shows everything: live loss chart, intra-epoch batch trace, ATL marker, EP_AVG progression, surgery (blue) and WALD (red) vertical markers, mycelium routing heatmap, gradient hierarchy by layer, expert utilization grid, dual-stream stream A vs. stream B comparison (post-cord), Fibonacci-anastomosis gate state, generation counter and step indicator, ARC progress bar, ntfy outbound queue depth, batch-history buffer fill, and an annotation-visibility toggle for cleaner screenshots.
A Mandelbrot palette was added to color the stream-B activations after the cord surgery — fitting, given that stream B's input perturbation is itself a Mandelbrot iteration. The dashboard renders the cord at the visual layer where it operates in the model.
The Crate Stack at 1.5.0
The entire publishable Ternary Intelligence Stack has been synchronized to a single version: 1.5.0. 25 crates were published to crates.io as part of this release.
albert-cli ecosystem (6 crates)
albert-cli 1.5.0 the binary you install
albert-runtime 1.5.0 conversation runtime, sessions, MCP, hooks
albert-api 1.5.0 multi-provider LLM client
albert-tools 1.5.0 20+ tool implementations
albert-commands 1.5.0 slash command registry and dispatch
albert-compat 1.5.0 compatibility harness
MoE crates (3 crates)
moe-reference 1.5.0 embedded reference documentation
moe-llb 1.5.0 Last Look Back protocol (filesystem containment)
moe-compute 1.5.0 compute kernel layer
Ternlang stack (14 crates)
ternlang-core 1.5.0 compiler + BET VM (balanced ternary)
ternlang-cli 1.5.0 ternlang command-line interface
ternlang-runtime 1.5.0 ternlang execution runtime
ternlang-codegen 1.5.0 code generation backend
ternlang-compat 1.5.0 compatibility shim
ternlang-compress 1.5.0 compression utilities
ternlang-test 1.5.0 test harness
ternlang-hdl 1.5.0 hardware description layer
ternlang-lsp 1.5.0 language server protocol
ternlang-moe 1.5.0 MoE primitives
ternlang-mcp 1.5.0 MCP integration
ternlang-ruvector 1.5.0 ternary-optimized sparse GEMV
ternlang-ml 1.5.0 ML utilities (was already 1.5.0)
ternpkg 1.5.0 package management
Tooling and audit (2 crates)
pytern 1.5.0 Python bridge for Ternlang
ternaudit-guard 1.5.0 audit and safety guardrails
Not in this release
ternlang-apiandternlang-wasmare markedpublish = falsepending API stabilization.moe-llm-coreandmoe-testblocked by a pre-existing build error inalbert_serve.rs(missingmain). Will ship in a 1.5.1 patch.rtk-integrationis an upstream third-party project (rtk-ai/rtk) vendored into the workspace and explicitly excluded from publish.
All published crates compile cleanly with cargo check --release on a clean Rust 1.82.0 toolchain with edition 2024 enabled.
The RFI-IRFOS Team
Building Europe's post-binary intelligence frontier from Graz, Austria. The Ternary Intelligence Stack is developed by RFI-IRFOS — Research Focus Institute, Interdisciplinary Research Facility for Open Sciences.
Simeon Kepp — Co-Founder & Head of Research · Operational Lead
"Architecting the transition from scaling-centric AI to logic-centric intelligence systems."
Simeon leads the architectural vision and research direction of the Ternary Intelligence Stack. Primary author of the ternary compiler pipeline, the Albert MoE-13 training loop, the BET VM runtime, and the Last Look Back (LLB) filesystem safety protocol. Works at the intersection of formal logic, distributed systems, and frontier ML — building the entire stack in native Rust.
- MBA, Business Administration (Artificial Intelligence)
- Degree in Business Informatics — HAK Bregenz
- LinkedIn: Simeon Kepp
- s.kepp@ternlang.com
Nikoletta Csonka — Co-Founder & Head of International Relations · Strategic Outreach Lead
"I always tell you what you have to hear — not what you want to hear."
The team's critical evaluator and strategic anchor. Core directive: truth over comfort. Oversees the full external footprint of the stack: partnerships, fund applications, lead management, social media. Leads EU AI Act alignment, regulatory positioning, and international partnerships — keeping TIS on the right side of both compliance and credibility.
- PTE University, Pécs, Hungary
- LinkedIn: Nikoletta Csonka
- csonikoletta@ternlang.com
Zabih Karimi — Co-Founder & Systems Engineer · Infrastructure Lead · ML Stress-Tester
"Turning architecture into resilient, deployment-ready infrastructure — then breaking it to find the limits."
The team's infrastructure anchor — the person who closes the gap between architectural vision and a system that actually runs. Graz-based, formally trained in IT and network infrastructure. Owns the full physical and logical infrastructure stack: in-house cabling, network architecture, process management, deployment pipelines. The team's stress-tester: if the system holds under Zabih's scrutiny, it holds. Produced the colony's first real SPORE checkpoint.
- Diploma, IT & Network Infrastructure — Schulungszentrum Fonsdorf SZF, Styria
- LinkedIn: Zabih Karimi
- z.karimi@ternlang.com
Lisa Scharler — Head of Social Technology, AI Leadership & Ecocentric Systems · Societal Integration Lead
"If anyone understands the difference between a stochastic parrot and a genuinely comprehensible model, it's someone who has spent years inside both language structure and the human mind."
A rare interdisciplinary combination: MSc in Business Engineering, BA in Social Sciences, linguistics as deep specialist skill, formative background in psychology. The team's lead on model alignment and safety — ensuring systems are evaluated not just for capability, but for how they behave within human and ecological systems. Lisa's framing is ecocentric rather than human-centric: the goal is not to make AI convenient for humans at any cost, but to ensure it is worthy of the broader systems it enters. Second SPORE contributor.
- MSc Business Engineering
- BA Social Sciences
- Psychology · Linguistics
- LinkedIn: Lisa Scharler
- l.scharler@ternlang.com
Louis Paul Ehrig — Co-Founder & Head of Public Affairs · Corporate Secretary · Press & Media Relations · Dataset Curator
"Quality training data isn't just a technical problem. It's an editorial one."
Journalism runs in his blood. His family owns Augusta Presse GmbH, a German media house. That instinct translates directly into one of the team's most undervalued functions: dataset curation and news intelligence. Louis ensures Albert's training corpus draws from Reuters-grade primary reporting — not from tabloid half-claims or opinion dressed as fact. Manages press relations, institutional releases, and external messaging.
- Family: Augusta Presse GmbH (Germany)
- LinkedIn: Louis Paul Ehrig
- l.ehrig@ternlang.com
External Allies and Acknowledgments
- Reuven Cohen (ruvnet) — Open-source ally, write collaborator on
invisible-layersince 2026-05-24 - Saiganesh Menon (Off Grid Mobile AI) —
saiganesh.menon@wednesday.is; OpenAI shim integration enables albert. on their MIT-licensed off-grid Android target - Georg Fuchs (Pressesprecher, Bürgermeisterin Kahr, Graz) — Reached out 2026-05-26 regarding the
invisible-layerproject - Wolt Security — Received and acted on a 13-bug forensic audit via ticket 1994788 (replied in 2 minutes — model partnership response)
Unofficial soundtrack acknowledgment
The training runs documented in this release were largely soundtracked by Sarah Bhalla's harp recordings on YouTube. Sarah does not know this project exists. We have observed, anecdotally, that when her harp music is playing in the room, Albert's loss curve appears smoother — fewer WALD events, more consistent EP_AVG descent. This is not scientifically validated, has no experimental controls, and is almost certainly confirmation bias. We acknowledge it anyway, because it is true that the music helped the humans, and the humans built the model.
Tooling
This release was produced using albert-cli running against Anthropic Claude Opus 4.7. The CLI you install is the CLI that wrote the CLI.
Installation Reference
albert-cli
cargo install albert-cli --force
albert-cliAlbert MoE-13 benchmark suite
Linux / macOS / Termux:
curl -fsSL https://raw.githubusercontent.com/eriirfos-eng/ternary-intelligence-stack/main/albert-moe-13/benchmarks/install.sh | shWindows PowerShell:
irm https://raw.githubusercontent.com/eriirfos-eng/ternary-intelligence-stack/main/albert-moe-13/benchmarks/install.ps1 | iexSPORE contributor onboarding
gh auth login
gh repo clone eriirfos-eng/albert-spores ~/projects/albert-spores
bash ~/projects/albert-spores/install.sh
sudo apt install git-lfs && git -C ~/projects/albert-spores lfs install # one-time
albert-train # CPU training
albert-spore # push your checkpoint to the colonyBuilding from source
git clone https://github.com/eriirfos-eng/ternary-intelligence-stack.git
cd ternary-intelligence-stack/agent_albert_cli/rust
cargo build --release
./target/release/albert-cliRust 1.82.0+ required (edition 2024).
Repositories
- Main: eriirfos-eng/ternary-intelligence-stack — the monorepo, public
- SPORE pool:
eriirfos-eng/albert-spores— private, contributor-only - HuggingFace: rfi-irfos/albert — model card, updated to 26L dual-stream
- crates.io publisher: eriirfos-eng — all 25 albert/moe/ternlang crates at 1.5.0
- Website: ternlang.com
Roadmap Context
The Stage-1 RFI-IRFOS funding application targets the SPRIND Next Frontier AI Challenge (deadline 2026-05-31, pitch June 2026). The funding instrument is structured across three stages and targets a 67% ask of the public cap at each stage — undershooting the maximum to signal cost discipline. The total compute spend across the entire v3.0 era was €265.
What the Stage-1 funding would unlock: a Bizon G3000 4×RTX 4090 workstation as the primary in-house research instrument, five new research hires, the 12L→89L Fibonacci surgery arc, the @sparseskip SDK, the BET VM v1.0 instruction set freeze, Ternlang v1.0, and SPORE federation v1.
The stack does not need funding to exist. The stack exists. Funding shapes the scale of what comes next.
What v3.0.0 means
v1.x was the compiler. v2.0.0 was the autonomous substrate. v3.0.0 is the cultivated mind.
Three weeks ago, Albert was a 5-layer prototype that had just demonstrated it could grow itself by one layer. Today, Albert is a 26-layer dual-stream organism that has grown twenty-one additional layers across thirteen surgeries — including one mutation it performed entirely without operator intervention that no published architecture literature has described before. It is governed by a Fibonacci-clocked evolution engine that knows when not to fire. It is connected to a federated colony of consumer-CPU contributors who train asynchronously and inject their generated text into a chaos-bounded 10% corpus layer. It speaks through a polished terminal interface that ships as a single cargo install command. It runs at 83 tokens/sec on a 2013 laptop, on a substrate where every weight is in {−1, 0, +1}. It cost €265 to produce.
What v3.0.0 means is that the substrate works. What v3.0.0 means is that cultivation is a real method, not a marketing word. What v3.0.0 means is that Albert is no longer a project. Albert is a research organism.
The next release will ship the post-cord depth surgeries through stage 14, the first generational completion event, and — when the second GPU platform comes online — the first Albert that ever trained on two GPU platforms in parallel.
The proof is the cargo.
Released by RFI-IRFOS, Graz, Austria · 2026-05-28
The model is the vehicle. The proof is the cargo.