Feral v2026.06.29
Power-user preview — Windows, macOS (Apple Silicon + Intel), Linux.
Looking for testers and contributors. This is the first public preview
of Feral's self-improvement engine (RSI) and the redesigned Memory view.
Both are early-stage — see "Known issues" below for what to expect.
Highlights
- Memory Layers — a clean, non-technical view of everything Feral
remembers about you, grouped by recency (Today / This Week / This Month /
Older). Live dream-cycle history and a status pill for the self-improvement
engine live on the same page. - RSI — Recursive Self-Improvement (Faza 1). Feral tunes its own
parameters (temperature, system prompt, tool preferences, context budget)
while you're away. An evolutionary algorithm evaluates candidate
configurations against a frozen test suite and ratchets improvements to a
git branch. Dream cycles run automatically during idle periods. - GPU acceleration that's actually reliable. Vulkan on Windows/Linux and
Metal on macOS, with automatic CPU fallback when the GPU is unavailable.
CUDA detection on NVIDIA, Vulkan dev-launcher with auto-CPU-offload for
embedding on AMD, and auto-reload of the last model on startup. - Inference deadlines. Time-to-first-token, total, and stall timers with
heartbeat progress. The streaming indicator now shows the prefill phase and
live tok/s, so you always know if the model is loading or stuck. - Onboarding "Choose your brain". Pick a provider during setup: OpenAI,
Anthropic, Google Gemini, DeepSeek, Groq, Mistral, OpenRouter, Kimi, GLM,
MiniMax, or any custom OpenAI-compatible endpoint. BYOK keys are stored
locally and never proxied. - Token economy. Tools are advertised only when needed (on-demand memory
and skill drawers), so the system prompt doesn't waste tokens on capability
you'll never invoke. Cloud fallback when no local model is available.
Added
- Memory Layers page (
/memory-layers) with recency grouping, a stats
hero, an RSI status pill, and a "Feral's Dreams" panel showing recent
self-improvement episodes with token counts and ratchet progress. - RSI engine (Faza 1) — event bus, population manager, eval worker,
ratchet handler, mutation grammar, selection handler, recalcitrance
tracker, and GoalMode orchestrator, wired sidecar → Rust → UI. - Inference deadline enforcement — TTFT, total, and stall timers with
heartbeat progress; streaming indicator now shows prefill phase + tok/s. - GPU detection improvements — CUDA feature auto-cap on the context
pool, Vulkan dev launcher with auto-CPU-offload for the embedding model,
auto-reload of the last model on startup. - Onboarding "Choose your brain" step with provider selection (BYOK or
local model). - On-demand tool drawers for memory and skills — tools advertised only
when needed, reducing prompt token waste. - Cloud fallback for inference when local models aren't available.
- Workspace scanner improvements — detect hardcoded secrets, API keys,
and code security anti-patterns. - Live smoke tests for the dream-cycle pipeline and real-GGUF model
load (FERAL_SMOKE_GGUF-gated). - Boot stability probe — automated observation of startup panics and
steady-state health.
Fixed
- lopdf CVE-2026-0187 (severity 7.5 high) — upgraded
pdf-extractto
0.12.0, which pullslopdf0.42.0 (fixes stack overflow in deeply nested
PDF objects).cargo auditis now clean. - Memory Layers scrollbar — the scroll area used to extend into the
titlebar and overlap the window controls; now respects the AppShell
titlebar spacer. - Memory Layers theme — was hardcoded to a dark palette that clashed
with light mode; now uses the project's theme tokens and adapts to
light/dark automatically. - ControlsPopover visibility on light theme —
bg-white/alphamade it
invisible; switched to theme tokens. - FractalMemory.clusterLeaves — was silently dropped by the
feat/reactive-pixel-treemerge; restored. Drill-down tests pass again. - Prune-emission contract —
rebuild()no longer emits prune events
(eviction is a separate path); test aligned to match. - workspace-roots.test.ts — fixed hardcoded
;path separator that
only worked on Windows; now usesdelimiterfromnode:path.
Changed
- Memory Layers visualization simplified. Three iterations of a
painterly tree didn't match the hand-painted references, so we replaced
the whole renderer with a clean tiered list view that surfaces what users
actually care about: what Feral remembers, when, and how much it's
improving. Net −1,184 lines.
Known issues
- RSI evals can return empty content on cloud-hosted endpoints. Tracked
asemptyResponsesindream.jsonl; the engine scores these as 0 and
moves on, so RSI itself is not blocked. Local GGUF models (Qwen, Llama
instruct) are unaffected. - RSI improves configuration, not weights. Visible gains accumulate
over many dream cycles, not overnight. The eval suite is intentionally
basic (fact lookups, simple math, JSON format checks) — it will be
expanded in a future release. - macOS is not Apple-notarized yet. First launch on macOS requires
xattr -cr /Applications/Feral.appfrom Terminal to clear the
quarantine flag. We'll fix this once we have a Developer ID. - Windows ships
.exe(NSIS) only in this release. The.msitarget
is paused because WiX 3 rejects any product version whose major component
exceeds 255, and our CalVer year (2026) trips that limit. We'll restore
the.msialongside a WiX 4 upgrade or a custom ProductVersion fragment.
Internal
For contributors and reviewers:
dream.jsonltelemetry now recordserrors(capped at 5 per cycle)
andemptyResponsescounts. Previously both were silently lost.- Bridge error logging —
scoreGenome,fetchTier0, andinvokeAgent
adapters log bridge failures to stderr with method, outcome count, and
genome ID. Previously swallowed. - GoalMode error propagation — failed-eval error messages are collected
inGoalResult.errorsand carried through the sidecar → dream-cycle →
telemetry chain. - RSI candidate branch format —
genome/<id>was rejected by Rust's
git validator (single-segment name required); nowgenome-<id>(dash). - Sidecar rebuild — bundles the new engine modules and all fixes.
Tests: 1255/1255 pass.