-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathtips.html
More file actions
858 lines (797 loc) · 56.2 KB
/
Copy pathtips.html
File metadata and controls
858 lines (797 loc) · 56.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="color-scheme" content="dark light" />
<title>RuvNet Brain — the other 90%</title>
<!-- Same version-free brain mark as the console. -->
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 64 64%22><rect x=%222%22 y=%222%22 width=%2260%22 height=%2260%22 rx=%2216%22 fill=%22%230b0d12%22 stroke=%22%232c3850%22 stroke-width=%221.5%22/><path d=%22M25 48 C17 48 11.5 41.5 13.5 34.5 C10 29 13 21 19 19 C21 12.5 29 9.5 35 12 C43 9 50.5 14.5 50.5 22 C55 26 55 34.5 50 38 C49 43.5 43 47.5 37 46.5 L31 47.5 Z%22 fill=%22none%22 stroke=%22%23f0a830%22 stroke-width=%223.4%22 stroke-linejoin=%22round%22/><path d=%22M31 47 L31 33 M31 33 L24 27 M31 33 L40 24.5 M31 33 L41 36.5%22 fill=%22none%22 stroke=%22%23f0a830%22 stroke-width=%222.4%22 stroke-linecap=%22round%22 opacity=%22.9%22/><circle cx=%2224%22 cy=%2227%22 r=%223.4%22 fill=%22%235ad6ff%22/><circle cx=%2240%22 cy=%2224.5%22 r=%223.4%22 fill=%22%23f4b13a%22/><circle cx=%2241%22 cy=%2236.5%22 r=%223.4%22 fill=%22%235fd38a%22/></svg>" />
<script>
/* Resolve theme BEFORE first paint — same mechanism as the console (index.html). */
(function () {
var t = null;
try { t = localStorage.getItem('rbc-theme'); } catch (e) {}
if (t !== 'light' && t !== 'dark') {
try { t = matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark'; }
catch (e) { t = 'dark'; }
}
document.documentElement.dataset.theme = t;
})();
</script>
<link rel="stylesheet" href="tips.css" />
</head>
<body>
<!-- ============================================================================
RESTRUCTURED 2026-07-22 around ONE idea the owner stated: "you use RuVector
as a vector DB — here's the other 90%."
Three faults were named in the previous cut, and each one is answered here:
1. "It repeats MetaHarness too many times." It did — the word appeared six
times across four sections, and the ADR-076 figure was printed twice in
two different sections. Now: MetaHarness is named in exactly two places
(one item in the list, and the section that defines the word), and the
28.5%/98.1% figure is cited ONCE. Duplicating a cited figure is not just
repetitive, it doubles the surface an anti-fabrication gate has to guard
(see tests/unit/adr-citation-integrity.test.mjs, born from exactly that).
2. "It does not lead with what people MISS." It opened with reassurance
("you don't have to learn the toolkit"). Reassurance is the wrong first
beat for someone who already owns the thing and is under-using it. The
page now leads with the ten capabilities most people never switch on.
3. "It reads as a feature list, not 'here is what you already own and are
not using'." A feature list says what a thing HAS. Every item below says
what it IS in one plain line, what it BUYS you, and — the part a feature
list never has — HOW YOU'D KNOW IF IT'S ON. That third line is what turns
a brochure into an inventory.
HONESTY CONSTRAINT that shaped every "how to tell" line: this page is static
and reads nothing off the machine (see the footer — that is the console's
job, not this page's). So no item may state a count, a status, or a
percentage. Each one hands you the real command or the real file path and
tells you what a NEGATIVE result looks like, so the page is exactly as
truthful on a bare machine with nothing installed as it is on a loaded one.
Every path and command printed below was run on this machine before it was
written down; none was recalled from memory.
============================================================================ -->
<a class="skip-link" href="#main">Skip to content</a>
<header class="head">
<div class="wrap head-inner">
<div class="brand">
<svg class="mark" viewBox="0 0 64 64" aria-hidden="true">
<rect class="mk-plate" x="2" y="2" width="60" height="60" rx="16" />
<path class="mk-brain" d="M25 48 C17 48 11.5 41.5 13.5 34.5 C10 29 13 21 19 19 C21 12.5 29 9.5 35 12 C43 9 50.5 14.5 50.5 22 C55 26 55 34.5 50 38 C49 43.5 43 47.5 37 46.5 L31 47.5 Z" />
<path class="mk-branch" d="M31 47 L31 33 M31 33 L24 27 M31 33 L40 24.5 M31 33 L41 36.5" />
<circle class="n2" cx="24" cy="27" r="4" /><circle class="n1" cx="40" cy="24.5" r="4" /><circle class="n3" cx="41" cy="36.5" r="4" />
</svg>
<span class="brand-text">RuvNet Brain <span class="brand-sub">the other 90%</span></span>
</div>
<div class="head-right">
<a class="back-chip mono" href="./">‹ console</a>
<button class="theme-toggle" id="theme-toggle" type="button" aria-label="Switch color theme">
<svg class="ic-sun" viewBox="0 0 24 24" aria-hidden="true">
<circle cx="12" cy="12" r="4.5" />
<g class="rays"><line x1="12" y1="2" x2="12" y2="5"/><line x1="12" y1="19" x2="12" y2="22"/><line x1="2" y1="12" x2="5" y2="12"/><line x1="19" y1="12" x2="22" y2="12"/><line x1="4.9" y1="4.9" x2="7" y2="7"/><line x1="17" y1="17" x2="19.1" y2="19.1"/><line x1="4.9" y1="19.1" x2="7" y2="17"/><line x1="17" y1="7" x2="19.1" y2="4.9"/></g>
</svg>
<svg class="ic-moon" viewBox="0 0 24 24" aria-hidden="true">
<path d="M20.4 14.3A8.5 8.5 0 0 1 9.7 3.6a8.5 8.5 0 1 0 10.7 10.7Z" />
</svg>
</button>
</div>
</div>
<div class="spectrum-edge" aria-hidden="true"></div>
</header>
<main id="main" class="wrap">
<!-- ======================================================= HERO
The lead is now the gap, not the reassurance. The vector store is the part
everybody finds on their own — it is the thing with an obvious name and an
obvious API. Everything else got installed at the same time and is sitting
there unasked-for. That is the whole page in two sentences. -->
<section class="intro">
<div class="intro-grid">
<div class="intro-copy">
<p class="eyebrow">RuvNet Brain · the guide</p>
<h1>You're using it as a vector database. <em>That's the smallest thing it does.</em></h1>
<p class="lede">Vectors in, neighbours out — that part is easy to find, so nearly everyone
stops there. What came with it is a <b>harness around the model you already pay for</b>:
hooks that learn from your edits, memory that returns on its own, gates that can refuse a
bad write, routing that quietly picks a cheaper model. Most of it ships switched off, or
simply never asked for. <b>Here's the rest of what you own.</b></p>
<!-- Verbatim from the hackerspace transcript, with ONE correction. The transcript is
machine speech-to-text and mis-renders the spoken product name "Ruflo" four
different ways in one document — "root flow", "rooflow", "RootFlow", "Root Flow".
That inconsistency is the ASR guessing at an unfamiliar proper noun. rUv said
Ruflo; printing the transcript's guess would put a word in his mouth he never
said. Source: docs/Ruv_advice/Ruv hackerspace Transcript.txt (Thu, Jul 16, 2026).
It leads here because it is the counter-argument to this page's own thesis, in
rUv's voice: owning more is worthless if you have to load it all. You don't. -->
<blockquote class="ruv-quote">
<p>“I don't have to load 350 skills in Ruflo that 99% of which I never use.
I can specifically learn and say that, for this particular task, I need a particular
plugin or skill. And the system is smart enough to be able to say, okay, I've seen
this before, therefore, I know that I need this particular skill to do this
particular task.”</p>
<footer class="mono">— rUv · hackerspace call, 2026-07-16 · sourced from the brain (<code>ruv-meetings</code>)</footer>
</blockquote>
</div>
<!-- The one metaphor, stated once and reused everywhere: three depth STRATA under your
prompt. Under the new thesis these strata answer the obvious follow-up — "fine, so how
do I switch the rest on?" — and the same three colours key the ten items below, so the
reader learns the code once. -->
<figure class="hero-art">
<!-- REBUILT 2026-07-24 (owner: "not sure I'm loving the three circles — something more
elegant"). The rings are now a CROSS-SECTION: depth is a vertical idea, so the three
depths read as horizontal strata under the prompt at the surface. This dissolves the
ring composition's structural flaw by construction — the old build needed leader lines
and a side column because seven labels crowded the rings' converging crowns; a stratum
is its own full-width lane, so every label sits inside the band it names. The stroke
encoding is UNCHANGED (solid cyan = always on · dashed amber = asked · dotted green =
named) and so are the label strings, so the legend and the ten cards below still key
perfectly. Depth 1 is now literally the surface — "asks nothing of you" made visual.
Color/type/motion live in tips.css under `.hero-scene`; both themes and
reduced-motion honored. Motion: the caret pulse drops down the plumb line and depth 1
catches it — bands 2 and 3 never stir. That IS the lesson. -->
<svg class="hero-scene" viewBox="0 0 460 300" role="img"
aria-label="A cross-section: a chat prompt reading 'just type' sits at the surface, and a plumb line drops through three depth strata beneath it. Depth one, always on — grounding, memory and gates; you do nothing. Depth two, say it — plain-English asks. Depth three, name it — commands, skills and tools you call directly. You already own all three.">
<!-- the surface: you, typing normally, and the plumb line your prompt rides down -->
<g class="hs-surface">
<rect class="hs-box" x="24" y="18" width="130" height="26" rx="8"/>
<text class="hs-prompt" x="89" y="35"><tspan class="hs-pmark">></tspan> just type<tspan class="hs-caret">▍</tspan></text>
<line class="hs-plumb" x1="89" y1="46" x2="89" y2="256"/>
<circle class="hs-pulse" cx="89" cy="50" r="4"/>
</g>
<!-- the strata, surface first. Each band's TOP EDGE carries the depth's stroke style;
each label lives INSIDE its own band — no leader lines, no side column. -->
<g class="hs-strata">
<rect class="hs-band b1" x="24" y="64" width="412" height="60" rx="9"/>
<line class="hs-edge e1 hs-b1-halo" x1="30" y1="64" x2="430" y2="64"/>
<text class="hs-main hs-l1" x="112" y="92">01 · ALWAYS ON</text>
<text class="hs-sub hs-note" x="430" y="92">you do nothing</text>
<text class="hs-sub" x="112" y="112">grounding · memory · gates</text>
<rect class="hs-band b2" x="24" y="132" width="412" height="60" rx="9"/>
<line class="hs-edge e2" x1="30" y1="132" x2="430" y2="132"/>
<text class="hs-main hs-l2" x="112" y="160">02 · SAY IT</text>
<text class="hs-sub" x="112" y="180">plain-English asks</text>
<rect class="hs-band b3" x="24" y="200" width="412" height="60" rx="9"/>
<line class="hs-edge e3" x1="30" y1="200" x2="430" y2="200"/>
<text class="hs-main hs-l3" x="112" y="228">03 · NAME IT</text>
<text class="hs-sub" x="112" y="248">commands · skills · tools</text>
<!-- the punchline — right-aligned on band 3's TITLE baseline, whose right half is
empty by construction ("03 · NAME IT" ends ~x=216; the punch starts ~x=270) -->
<text class="hs-punch" x="430" y="228">you already own all three</text>
</g>
</svg>
<figcaption class="hero-cap mono">three ways in · depth 1 asks nothing of you</figcaption>
</figure>
</div>
<p class="stage-legend mono" aria-label="The three depths of use">
<span class="lg-cap">three depths</span>
<span class="lg"><span class="lg-dot d-cyan"></span>1 · do nothing — always on</span>
<span class="lg"><span class="lg-dot d-amber"></span>2 · say it in plain English</span>
<span class="lg"><span class="lg-dot d-green"></span>3 · name the exact tool</span>
</p>
</section>
<!-- ============================================== THE INVENTORY · THE LEAD
This section is the page. It runs FIRST because the reader's problem is not
"what is this" — they already installed it — but "what am I sitting on that
I never turned on".
Card colour is not decoration: it repeats the three-depth key from the hero
and answers "what would it cost me to switch this on" at a glance.
cyan = no switch to flip; it works once the plugin is wired — you do nothing
amber = one plain-English sentence away
green = one command or file away
rail-pay (the spectrum spine) is used because this list spans all three
depths at once, which is exactly what that rail means everywhere else.
Every "how to tell" below was executed on this machine on 2026-07-22 before
being printed, and every one of them also states what a NEGATIVE looks like.
That second half is the honesty load-bearer: without it, a bare machine
reads a list of checks and concludes it is broken. -->
<section class="depth card rail-pay" id="inventory" aria-labelledby="inv-h">
<header class="depth-head">
<div class="depth-title">
<span class="stage st-pay mono">the other 90%</span>
<h2 id="inv-h">Ten things you already own — <em>and probably aren't using</em></h2>
<p class="q">None of these is a new purchase; they arrived with what you installed. Each one
says what it is in one line, what it actually buys you, and how you'd know whether it's on.
<!-- "cyan is already running" was a STATUS CLAIM on a page whose own honesty constraint (see
the comment at the top of this file) forbids stating any status, because it reads nothing
off the machine. On a bare machine it was simply false. The colour describes the COST OF
SWITCHING SOMETHING ON, which is a property of the capability and true everywhere; only
the console can tell you what is actually running. -->
The colour tells you the cost of switching it on:
<b>cyan</b> has no switch to flip, <b>amber</b> is one sentence away, <b>green</b> is one command away.
Whether any of them is on right now is a question only the console can answer.</p>
</div>
<span class="depth-num mono" aria-hidden="true">10</span>
</header>
<div class="depth-body">
<ul class="ambient-grid">
<li>
<span class="amb-ic ic-gr" aria-hidden="true">
<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="2.4"/><path d="M7.8 7.8a6 6 0 0 0 0 8.4"/><path d="M16.2 16.2a6 6 0 0 0 0-8.4"/><path d="M5.2 5.2a9.6 9.6 0 0 0 0 13.6"/><path d="M18.8 18.8a9.6 9.6 0 0 0 0-13.6"/></svg>
</span>
<b>01 · Self-learning hooks</b>
<p>Hooks that sit on your edits and commands and record what actually worked.</p>
<span class="ask-cap mono">buys you</span>
<p>Suggestions and routing shaped by your repo instead of generic defaults — it stops re-deriving how your project works every session.</p>
<span class="ask-cap mono">how to tell</span>
<!-- Two styling traps in these cards, both found by measuring the render rather than reading
the CSS. (1) <em>, not <b>, for inline emphasis: `.ambient-grid b` is the CARD-TITLE rule
(fs-0, weight 650), so a <b> here silently renders LARGER than the line it sits in.
(2) The "how to tell" line is a <p>, not a `.peg-gloss`. As a gloss (fs--2) its nested
<code> — which is 0.86em — measured 9.5px at 390px, making the command you are meant to
TYPE the smallest text on the page. It is also the most valuable line on the card, so
fine-print treatment was wrong twice over. -->
<p>Run <code>ruflo hooks list</code>. Every row carries an <em>Enabled</em> and a <em>Last Executed</em> column — all “No” and “Never” means nothing is learning yet.</p>
</li>
<li>
<span class="amb-ic ic-gr" aria-hidden="true">
<svg viewBox="0 0 24 24"><path d="M4.5 19.5h15"/><rect x="6" y="12.5" width="3.4" height="7"/><rect x="10.8" y="8.5" width="3.4" height="11"/><rect x="15.6" y="5" width="3.4" height="14.5"/></svg>
</span>
<b>02 · Pretraining on your own repo</b>
<p>A one-shot pass that reads a repository and bootstraps patterns out of it.</p>
<span class="ask-cap mono">buys you</span>
<p>Day-one routing that already knows your layout and conventions, instead of a cold start it spends weeks recovering from.</p>
<span class="ask-cap mono">how to tell</span>
<p><code>ruflo hooks pretrain</code> runs it; <code>ruflo hooks metrics</code> shows what it took away. The counters live at <code>~/.claude-flow/neural/stats.json</code> — no file, no pretraining.</p>
</li>
<li>
<span class="amb-ic ic-cy" aria-hidden="true">
<svg viewBox="0 0 24 24"><path d="M8 15.5 L11 10 L15 13 L18 6.5"/><circle cx="8" cy="15.5" r="1.8"/><circle cx="11" cy="10" r="1.8"/><circle cx="15" cy="13" r="1.8"/><circle cx="18" cy="6.5" r="1.8"/><path d="M4.5 4v16h16"/></svg>
</span>
<b>03 · Memory that comes back on its own</b>
<p>A per-project store of decisions, written as you work and surfaced when you return.</p>
<span class="ask-cap mono">buys you</span>
<p>You stop re-explaining the project. Last week's decision is already in the room before you ask for it.</p>
<span class="ask-cap mono">how to tell</span>
<p>Run <code>ruflo memory search "<something you decided>"</code> in the project. Rows back means it's recording; the store is <code>.swarm/memory.db</code> inside that project, not a global one.</p>
</li>
<li>
<span class="amb-ic ic-am" aria-hidden="true">
<svg viewBox="0 0 24 24"><path d="M12.5 3L6 13.2h4.6l-1 7.8 6.4-11h-4.7z"/></svg>
</span>
<b>04 · Routing to a cheaper model</b>
<p>A router that sends each task to the least expensive model that can actually do it.</p>
<span class="ask-cap mono">buys you</span>
<p>The expensive model sits idle on work that never needed it — and every route leaves a receipt, so the saving is counted rather than claimed.</p>
<span class="ask-cap mono">how to tell</span>
<!-- The spoken phrase gets its own .say-wrap row rather than sitting inline in the gloss.
`.say` is only ever blockified by `.say-wrap`'s flex context; dropped inline into a
text run it stays display:inline, where its 7px vertical padding overflows the line
box and rides up into the line above instead of pushing it. Same fix in item 08. -->
<div class="say-wrap"><span class="say">“do this cheaper”</span></div>
<p>Receipts append to <code>~/.cache/ruvnet-brain/token-ledger.jsonl</code>; the console's savings card totals them. No file means nothing has been routed yet.</p>
</li>
<li>
<span class="amb-ic ic-cy" aria-hidden="true">
<svg viewBox="0 0 24 24"><path d="M12 3 4.5 6v6c0 4.4 3.2 8.2 7.5 9 4.3-.8 7.5-4.6 7.5-9V6z"/><path d="M9 12l2.2 2.2L15.5 10"/></svg>
</span>
<b>05 · Gates that can refuse a write</b>
<p>Checks that read a change before it lands, and can stop it outright.</p>
<span class="ask-cap mono">buys you</span>
<p>The bad edit never happens. You are not reviewing damage after the fact, which is the only kind of review that costs a whole afternoon.</p>
<span class="ask-cap mono">how to tell</span>
<p>Refusals are logged to <code>~/.cache/ruvnet-brain/gate-blocks.jsonl</code>; the console's gates card counts them. An empty log means nothing has been refused — <em>not</em> that nothing is armed.</p>
</li>
<li>
<span class="amb-ic ic-gr" aria-hidden="true">
<svg viewBox="0 0 24 24"><path d="M6 3.5h7.5L18.5 8.5V20.5H6z"/><path d="M13.3 3.5V8.7H18.5"/><path d="M8.5 14.2l2.1 2.1 4-4.4"/></svg>
</span>
<b>06 · Your corrections, kept as rules</b>
<p>The things you've told it — “always do X”, “never do Y” — captured in one file.</p>
<span class="ask-cap mono">buys you</span>
<p>A correction you gave once stops being a correction you give weekly.</p>
<span class="ask-cap mono">how to tell</span>
<p>Open <code>~/.config/ruvnet-brain/lessons.json</code>. Each entry carries a status — one still marked <code>candidate</code> is recorded but <em>not yet in force</em>, which is the difference people miss.</p>
</li>
<li>
<span class="amb-ic ic-cy" aria-hidden="true">
<svg viewBox="0 0 24 24"><path d="M20.4 14.3A8.5 8.5 0 0 1 9.7 3.6a8.5 8.5 0 1 0 10.7 10.7Z"/></svg>
</span>
<b>07 · Jobs that run while you sleep</b>
<p>Scheduled background work that refreshes the knowledge, the model list and the routing.</p>
<span class="ask-cap mono">buys you</span>
<p>The stack is current when you sit down, without you remembering to update anything.</p>
<span class="ask-cap mono">how to tell</span>
<p>On macOS, <code>launchctl list | grep ruvnet</code>. The second column is each job's last exit code. Nothing listed means none are installed — which is a normal, healthy state, not a fault.</p>
</li>
<li>
<span class="amb-ic ic-am" aria-hidden="true">
<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="8"/><circle cx="12" cy="12" r="3.4"/><path d="M12 2.6v3.2M12 18.2v3.2M2.6 12h3.2M18.2 12h3.2"/></svg>
</span>
<b>08 · A harness policy actually in force</b>
<p>MetaHarness freezes the model and improves what wraps it; the winner gets written down.</p>
<span class="ask-cap mono">buys you</span>
<p>The wrapper keeps getting better on the model you already pay for — no retraining, no second subscription. (The word is explained further down.)</p>
<span class="ask-cap mono">how to tell</span>
<div class="say-wrap"><span class="say">“score my harness”</span></div>
<p><code>~/.claude-flow/harness-active-policy.json</code> holds the policy currently applied, or does not exist at all. Say the phrase above to see where yours stands.</p>
</li>
<li>
<span class="amb-ic ic-cy" aria-hidden="true">
<svg viewBox="0 0 24 24"><rect x="3.5" y="4.6" width="17" height="5.6" rx="1.6"/><rect x="3.5" y="13.8" width="17" height="5.6" rx="1.6"/><circle cx="7.4" cy="7.4" r="1"/><circle cx="7.4" cy="16.6" r="1"/></svg>
</span>
<b>09 · Tool servers it can already call</b>
<p>MCP servers registered once, globally, so every session can reach them.</p>
<span class="ask-cap mono">buys you</span>
<p>Searching rUv's real source, driving a browser, hitting the vector cache — from inside the conversation, with no copy-paste.</p>
<span class="ask-cap mono">how to tell</span>
<p><code>~/.claude.json</code> lists them under <code>mcpServers</code>. Careful: that proves they are <em>configured</em>. Nothing on disk proves a server is reachable, so nobody — including this page — should tell you they're connected.</p>
</li>
<li>
<span class="amb-ic ic-gr" aria-hidden="true">
<svg viewBox="0 0 24 24"><rect x="4" y="4" width="6.6" height="6.6" rx="1.6"/><rect x="13.4" y="4" width="6.6" height="6.6" rx="1.6"/><rect x="4" y="13.4" width="6.6" height="6.6" rx="1.6"/><rect x="13.4" y="13.4" width="6.6" height="6.6" rx="1.6"/></svg>
</span>
<b>10 · Skills already loaded in every project</b>
<p>Named commands installed at user scope, so they follow you into every repo.</p>
<span class="ask-cap mono">buys you</span>
<p>A whole disciplined workflow behind one word instead of a paragraph of instructions you retype.</p>
<span class="ask-cap mono">how to tell</span>
<p>Type <code>/</code> in Claude Code to see what's live; <code>~/.claude/settings.json</code> lists them under <code>enabledPlugins</code>. The board of five is at depth 3 below.</p>
</li>
</ul>
<p class="metaphor">It's the drawer of attachments that came with the appliance. Nothing here is
an upsell — the only thing missing was knowing they were in the box.</p>
</div>
</section>
<div class="stop-here mono" role="note">that's the list — everything below is how each one switches on</div>
<!-- ================================================ DEPTH 1 · AMBIENT
Trimmed 2026-07-22. This section used to carry its own three-card grid of
grounding / memory / gates — the exact same three capabilities that are now
items 03 and 05 above, described twice on one page in two different voices.
That duplication was a large part of why the page read as a feature list.
The section keeps its job (explaining the cyan tier) and gives up its list. -->
<section class="depth card rail-mirror" id="depth-1" aria-labelledby="d1-h">
<figure class="depth-art" aria-hidden="true">
<img src="assets/depth-1.webp" alt="" width="1584" height="672"
decoding="async" fetchpriority="low">
</figure>
<header class="depth-head">
<svg class="locator" viewBox="0 0 76 76" aria-hidden="true">
<circle cx="38" cy="38" r="28" fill="none" stroke="var(--illo-faint)" stroke-width="1.6" stroke-dasharray="2 8" stroke-linecap="round"/>
<circle cx="38" cy="38" r="19" fill="none" stroke="var(--illo-faint)" stroke-width="1.6" stroke-dasharray="5 6" stroke-linecap="round"/>
<circle cx="38" cy="38" r="10" fill="none" stroke="var(--cyan)" stroke-width="2.6"/>
<circle cx="38" cy="28" r="3" fill="var(--cyan)"/>
<circle cx="38" cy="38" r="2.4" fill="var(--illo-stroke)"/>
</svg>
<div class="depth-title">
<span class="stage st-mirror">Depth 1 · always on</span>
<h2 id="d1-h">Already on — you do not have to do anything</h2>
<p class="q">Grounding, memory capture and the gates run on every prompt once the plugin is
wired — whether or not you think about them. Type normally, like it's plain Claude.</p>
</div>
<span class="depth-num mono" aria-hidden="true">01</span>
</header>
<div class="depth-body">
<p>This is the tier people are already getting and never notice, which is the point: the only
visible evidence is an answer that cites real source instead of guessing, a decision that comes
back without being re-explained, and a bad write that quietly doesn't happen. If you switch on
nothing else on this page, you still have this.</p>
<p class="metaphor">Like a good spotter at the gym: silent on every rep, loud only when
you're about to drop the bar.</p>
</div>
</section>
<!-- ================================================= DEPTH 2 · ASKED -->
<section class="depth card rail-act" id="depth-2" aria-labelledby="d2-h">
<figure class="depth-art" aria-hidden="true">
<img src="assets/depth-2.webp" alt="" width="1584" height="672"
decoding="async" fetchpriority="low">
</figure>
<header class="depth-head">
<svg class="locator" viewBox="0 0 76 76" aria-hidden="true">
<circle cx="38" cy="38" r="28" fill="none" stroke="var(--illo-faint)" stroke-width="1.6" stroke-dasharray="2 8" stroke-linecap="round"/>
<circle cx="38" cy="38" r="19" fill="none" stroke="var(--amber)" stroke-width="2.6" stroke-dasharray="5 6" stroke-linecap="round"/>
<circle cx="38" cy="38" r="10" fill="none" stroke="var(--illo-faint)" stroke-width="1.6"/>
<circle cx="38" cy="19" r="3" fill="var(--amber)"/>
<circle cx="38" cy="38" r="2.4" fill="var(--illo-stroke)"/>
</svg>
<div class="depth-title">
<span class="stage st-rec">Depth 2 · when you ask</span>
<h2 id="d2-h">One sentence away — just ask, in plain English</h2>
<p class="q">No syntax to learn. These phrases are live triggers, verbatim from the shipped
plugin — say one and the right machinery wakes up.</p>
</div>
<span class="depth-num mono" aria-hidden="true">02</span>
</header>
<div class="depth-body">
<div class="ask-rows">
<div class="ask-row">
<span class="ask-cap mono">spend less</span>
<div class="say-wrap">
<span class="say">“do this cheaper”</span>
<span class="say">“cost-optimize this”</span>
<span class="say">“route this to a cheaper model”</span>
</div>
</div>
<div class="ask-row">
<span class="ask-cap mono">check the work</span>
<div class="say-wrap">
<span class="say">“QE this”</span>
<span class="say">“test this”</span>
<span class="say">“check coverage”</span>
</div>
</div>
<div class="ask-row">
<span class="ask-cap mono">tune the wrapper</span>
<div class="say-wrap">
<span class="say">“score my harness”</span>
<span class="say">“evolve my harness”</span>
<span class="say">“audit my harness”</span>
</div>
</div>
<div class="ask-row">
<span class="ask-cap mono">grade a repo</span>
<div class="say-wrap">
<span class="say">“score this repo”</span>
</div>
</div>
</div>
<p class="metaphor">It's asking a colleague, not typing a command.</p>
</div>
</section>
<!-- ================================================= DEPTH 3 · NAMED -->
<section class="depth card rail-prove" id="depth-3" aria-labelledby="d3-h">
<figure class="depth-art" aria-hidden="true">
<img src="assets/depth-3.webp" alt="" width="1584" height="672"
decoding="async" fetchpriority="low">
</figure>
<header class="depth-head">
<svg class="locator" viewBox="0 0 76 76" aria-hidden="true">
<circle cx="38" cy="38" r="28" fill="none" stroke="var(--green)" stroke-width="2.6" stroke-dasharray="2 8" stroke-linecap="round"/>
<circle cx="38" cy="38" r="19" fill="none" stroke="var(--illo-faint)" stroke-width="1.6" stroke-dasharray="5 6" stroke-linecap="round"/>
<circle cx="38" cy="38" r="10" fill="none" stroke="var(--illo-faint)" stroke-width="1.6"/>
<circle cx="38" cy="10" r="3" fill="var(--green)"/>
<circle cx="38" cy="38" r="2.4" fill="var(--illo-stroke)"/>
</svg>
<div class="depth-title">
<span class="stage st-prove">Depth 3 · when you name it</span>
<h2 id="d3-h">One command away — paste a single line in your terminal</h2>
<p class="q">When you know exactly what you want, reach for it by name. This is the complete
board — nothing hidden, nothing extra.</p>
</div>
<span class="depth-num mono" aria-hidden="true">03</span>
</header>
<div class="depth-body">
<div class="peg-groups">
<div class="peg">
<h3 class="peg-cap mono">slash commands</h3>
<ul class="peg-list">
<li><code>/ruvnet-brain:rvbc</code></li>
<li><code>/rvcb</code></li>
<li><code>/ruvnet-brain:configure</code></li>
</ul>
<p class="peg-note">All three open the same place — the console, the live mirror of your stack.</p>
</div>
<div class="peg">
<h3 class="peg-cap mono">skills</h3>
<ul class="peg-list">
<li><code>/brain-build</code><span class="peg-gloss">say what you want built — it runs the whole disciplined build</span></li>
<li><code>/brain-prompt</code><span class="peg-gloss">turns a rough idea into the right prompt</span></li>
<li><code>/brain-score</code><span class="peg-gloss">scores any repo 0–100, every deduction evidence-cited</span></li>
<li><code>/savings</code><span class="peg-gloss">the routing ledger — what each task cost, what it displaced</span></li>
<li><code>ruvnet-brain</code><span class="peg-gloss">the always-on one from depth 1 — you rarely type it yourself</span></li>
</ul>
<p class="peg-note">The complete set — five. That is the whole board.</p>
</div>
<div class="peg">
<h3 class="peg-cap mono">direct tools</h3>
<ul class="peg-list">
<li><code>search_ruvnet</code><span class="peg-gloss">query rUv's real source (MCP tool)</span></li>
<li><code>ruflo memory store</code><span class="peg-gloss">project memory, from the CLI</span></li>
<li><code>ruflo memory search</code><span class="peg-gloss">recall it the same way</span></li>
<li><code>ruflo hooks list</code><span class="peg-gloss">the learning hooks, and whether they've ever run</span></li>
</ul>
<p class="peg-note">For when you want to touch the machinery yourself.</p>
</div>
</div>
<p class="metaphor">Reaching for a specific tool on the pegboard — because you already know which one.</p>
</div>
</section>
<!-- =============================================== THE ARGUMENT
Moved BELOW the inventory (2026-07-22). It used to run second, before the
reader had any idea what they owned — an architecture diagram answering a
question nobody had asked yet. It lands better as the "why does wrapping
the model matter at all" backstop for the ten items above.
Scroll-wrapped: see .diagram-scroll in tips.css for why compressing it is
not an option. -->
<section class="depth card rail-act" id="why" aria-labelledby="why-h">
<header class="depth-head">
<div class="depth-title">
<span class="stage st-rec">why wrapping the model is the whole lever</span>
<h2 id="why-h">Same model. Same prompt. <em>Everything around it.</em></h2>
<p class="q">rUv's lever isn't a smarter model — it's what wraps the one you already
have. Plain Claude Code sends your prompt straight at an expensive model and takes
whatever comes back. The harness grounds it, routes it to the cheapest model that can
actually do the job, hands back what your project already decided, inspects the write
before it lands, and checks it on the way out. You type the same thing either way.</p>
</div>
</header>
<div class="depth-body">
<figure class="diagram-scroll" style="--dmin: 780px">
<img src="assets/harness-vs-plain.svg" width="1000" height="652"
alt="The same prompt sent two ways. Left, plain Claude Code: a bare wire to one
frontier model that costs the most on every task, with no grounding, no memory and
no gates, producing an unchecked answer. Right, the same model wrapped in the RuvNet
harness: the prompt passes through GROUND (cited, not guessed), ROUTE (cheapest
capable model, with the frontier model mostly idle), RECALL (prior decisions
return), GATE (inspects the write and can refuse it), and VERIFY (provenance and
safety gate), producing an answer that is grounded, cited and checked." decoding="async">
<figcaption class="mono">the left lane finishes first — and that's the problem</figcaption>
</figure>
</div>
</section>
<!-- =================================================== THE WORD NOBODY KNOWS
Stuart: "If you haven't ever seen MetaHarness, you have no idea what the word means, and you
have no idea what you should expect it to do. Saying 'do you want to use it or not' without
any visual explaining what it does is a little challenging."
rUv wrote the same risk into ADR-076 himself: "'Meta-harness' is a newer term; the README must
define it in the first screen so it doesn't read as jargon. Mitigation: the one-line 'freeze
the model, evolve the harness' gloss + the four-pillar framing." This is that mitigation.
THE ONE PLACE THE WORD IS DEFINED, and the ONE place the 28.5%/98.1% figure is printed.
It previously appeared in this section AND again as a trade-note in the capstone — the same
cited number twice on one page. Beyond being repetitive, every extra copy of a cited figure
is another surface tests/unit/adr-citation-integrity.test.mjs has to guard, and that gate
exists precisely because this figure was once attributed to the wrong ADR (073, Proposed and
silent on the number, rather than 076, Accepted and stating it). One copy, one citation. -->
<section class="depth card rail-prove" id="metaharness" aria-labelledby="mh-h">
<header class="depth-head">
<div class="depth-title">
<span class="stage st-prove mono">the word nobody knows</span>
<h2 id="mh-h">So what <em>is</em> MetaHarness?</h2>
<p class="depth-sub">Item 08 above offers to turn it on. Fair question: on for what? Here is the
whole idea in one picture — you can't retrain the model, so evolve everything wrapped around it.</p>
</div>
<span class="depth-num mono" aria-hidden="true">☰</span>
</header>
<div class="depth-body">
<!-- --dmin 900px is MEASURED, not guessed: at a 900-unit viewBox the smallest label hits
exactly 12px effective there. Below it the labels drop under the floor (629px -> 8.4px,
261px -> 3.5px), which is how this shipped unreadable on a phone. 831px would carry the
primary structure but leaves fine print at 11.1px — not worth shaving a swipe for.
height is 560 (the REAL viewBox height); it was 470, a wrong aspect that caused layout
shift. loading="lazy" removed: a lazy image on this page already shipped once and never
fetched at all. -->
<figure class="diagram-scroll mh-figure" style="--dmin: 900px">
<img src="assets/metaharness.svg" alt="MetaHarness: the model sits frozen at the centre while
seven policy surfaces around it — planner, contextBuilder, reviewer, retryPolicy, toolPolicy,
memoryPolicy and scorePolicy — are each mutated and measured. Four pillars run underneath:
route, evolve, orchestrate, verify. Per agentic-flow ADR-076: 28.5% cheaper at 98.1% bar-compliance."
width="900" height="560" decoding="async" />
<figcaption class="mono">the model never moves — everything around it does</figcaption>
</figure>
<p class="metaphor">The seven surfaces take turns changing. The model in the middle never moves —
that's the whole trick, and it's why this works on the Claude you already have.</p>
<p class="mh-cite mono">Grounded in rUv's own accepted ADRs — seven surfaces
<code>ADR-075</code> · four pillars and the 28.5% figure <code>ADR-076</code>.
Nothing here is inferred.</p>
</div>
</section>
<!-- =================================================== CAPSTONE · THE PAYOFF
The crown of the page. Everything above is inventory and mechanism; this is the
reinforcement — the education ask is small, the return is large.
It reuses the .card / .depth-head idiom so it reads as the same page, and earns a
SPECTRUM rail (rail-pay) because this is where all three depths pay off at once.
CUT 2026-07-22 — the momentum block (~1.48M downloads/month and five per-package
bars). Two reasons, and the first is the binding one: those were hardcoded literals
from a dated snapshot on a page that reads nothing at render time, which is exactly
the class of number this project has been burned by. Honest labelling ("not live")
made it defensible, not right. Second, ecosystem download counts are off-thesis:
how popular the packages are says nothing about what THIS reader owns and isn't
using, which is the only question the page now answers. If it comes back it should
fetch api.npmjs.org at load, or live on the console where numbers are derived. -->
<section class="depth card rail-pay capstone" id="capstone" aria-labelledby="cap-h">
<header class="depth-head">
<div class="depth-title">
<span class="stage st-pay mono">the payoff</span>
<h2 id="cap-h">You're not learning a new tool. <em>You're multiplying the ones you already pay for.</em></h2>
<p class="depth-sub">The learning curve is small — most of the list above is cyan, which is
doing nothing. The return is world-class output: grounded, cheaper, checked. It works the same
whether you write code or just describe what you want.</p>
</div>
<span class="depth-num mono" aria-hidden="true">04</span>
</header>
<div class="depth-body">
<!-- the does / doesn't — effort you're spared vs power you gain. Not feature-vs-feature:
the left column is work you no longer do, the right is what you get. The spine between
them carries a transform arrow (→ on desktop, ↓ on mobile). -->
<div class="trade" role="group" aria-label="What the harness spares you, and what it gives you in return">
<div class="trade-col trade-spared">
<h3 class="trade-cap mono">
<span class="trade-cap-ic" aria-hidden="true">
<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="8.5" fill="none" stroke="currentColor" stroke-width="1.7"/><path d="M8 12h8" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"/></svg>
</span>
What it doesn't ask of you
</h3>
<ul class="trade-list">
<li>
<span class="trade-ic" aria-hidden="true">
<svg viewBox="0 0 24 24"><rect x="4" y="4" width="6.6" height="6.6" rx="1.6"/><rect x="13.4" y="4" width="6.6" height="6.6" rx="1.6"/><rect x="4" y="13.4" width="6.6" height="6.6" rx="1.6"/><rect x="13.4" y="13.4" width="6.6" height="6.6" rx="1.6"/></svg>
</span>
<span class="trade-txt">You don't have to master the ten things above — it knows which one this task needs.</span>
</li>
<li>
<span class="trade-ic" aria-hidden="true">
<svg viewBox="0 0 24 24"><circle cx="9.5" cy="9.5" r="5.8"/><circle cx="9.5" cy="9.5" r="2.4"/><path d="M17 12.5v6.5"/><path d="M14 16.5l3 3 3-3"/></svg>
</span>
<span class="trade-txt">You don't pay frontier prices for everything — it routes to the cheapest model that can do the job.</span>
</li>
<li>
<span class="trade-ic" aria-hidden="true">
<svg viewBox="0 0 24 24"><path d="M3 9l9-4 9 4-9 4-9-4z"/><path d="M7 11v4.2c0 1.4 2.4 2.4 5 2.4s5-1 5-2.4V11"/><path d="M21 9v4.6"/></svg>
</span>
<span class="trade-txt">You don't have to be an expert — or even a coder.</span>
</li>
<li>
<span class="trade-ic" aria-hidden="true">
<svg viewBox="0 0 24 24"><path d="M4.6 12a7.4 7.4 0 0 1 12.6-5.2L20 9.4"/><path d="M20 4.2v5.2h-5.2"/><path d="M19.4 12a7.4 7.4 0 0 1-12.6 5.2L4 14.6"/><path d="M4 19.8v-5.2h5.2"/></svg>
</span>
<span class="trade-txt">You don't re-explain your project every session — it remembers.</span>
</li>
</ul>
</div>
<div class="trade-spine" aria-hidden="true">
<span class="trade-arrow">
<svg viewBox="0 0 24 24"><path d="M4 12h15"/><path d="M13 6l6 6-6 6"/></svg>
</span>
</div>
<div class="trade-col trade-gain">
<h3 class="trade-cap mono">
<span class="trade-cap-ic" aria-hidden="true">
<svg viewBox="0 0 24 24"><path d="M12 3.5l2.4 6.1 6.1.2-4.8 3.8 1.7 5.9-5.4-3.4-5.4 3.4 1.7-5.9L3.5 9.8l6.1-.2z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/></svg>
</span>
What it gives you
</h3>
<ul class="trade-list">
<li>
<span class="trade-ic ic-cy" aria-hidden="true">
<svg viewBox="0 0 24 24"><path d="M6 3.5h7.5L18.5 8.5V20.5H6z"/><path d="M13.3 3.5V8.7H18.5"/><path d="M8.5 14.2l2.1 2.1 4-4.4"/></svg>
</span>
<span class="trade-txt">Answers grounded in real source, not guesses.</span>
</li>
<li>
<span class="trade-ic ic-am" aria-hidden="true">
<svg viewBox="0 0 24 24"><path d="M12.5 3L6 13.2h4.6l-1 7.8 6.4-11h-4.7z"/></svg>
</span>
<span class="trade-txt">The cheapest capable model on every task — the expensive one stays idle.</span>
</li>
<li>
<span class="trade-ic ic-gr" aria-hidden="true">
<svg viewBox="0 0 24 24"><path d="M12 3 5 6v6c0 4.2 3 7.6 7 8.6 4-1 7-4.4 7-8.6V6z"/><path d="M9 12l2.1 2.1L15.2 9.8"/></svg>
</span>
<span class="trade-txt">Gates that inspect — and can refuse a bad write before it lands.</span>
</li>
<li>
<span class="trade-ic ic-am" aria-hidden="true">
<svg viewBox="0 0 24 24"><path d="M11 3l1.7 4.6L17.3 9l-4.6 1.7L11 15.3 9.3 10.7 4.7 9l4.6-1.7z"/><path d="M17.5 14.5l.9 2.4 2.4.9-2.4.9-.9 2.4-.9-2.4-2.4-.9 2.4-.9z"/></svg>
</span>
<span class="trade-txt">World-class AI apps — whether you write code or just describe what you want.</span>
</li>
</ul>
</div>
</div>
<!-- "most of them already running" was a claim about the reader's machine made by a page that
has never looked at it. On a genuinely bare machine 2 of 11 are on, so it was also wrong. -->
<p class="capstone-close">Ten capabilities, one install, and none of them a new purchase.
<b>Small ask, world-class return.</b> How many are actually on is a question this page cannot
answer — the console reads your machine and tells you, live.</p>
</div>
</section>
<!-- ================================================= THE PARTS DRAWER
Owner, 2026-07-24: "you'd like to know that there are a lot of tools at your disposal that you
can reach for and bring in intelligence when you need it… a one-liner per could be useful."
And: this page gets re-read, the installer page is seen once — so the reference belongs here.
EVERY LINE IS GROUNDED. Each entry below was read out of rUv's own source this session via
search_ruvnet and carries the file it came from. Nothing here is recalled, and nothing is
inferred from a name that merely sounds right — inventing a rUv capability is the single
worst failure this project has on record.
THE FRAME IS LOAD-BEARING. These are parts that exist IN RUV'S SOURCE. Most are NOT wired
into the reader's machine, and saying so plainly is the difference between a catalogue and a
lie: the console next door reports what you actually have, and it must never be contradicted
by this page. "You don't need most of these" is also true, and says so. -->
<section class="depth card rail-mirror" id="parts" aria-labelledby="parts-h">
<header class="depth-head">
<div class="depth-title">
<span class="stage st-mirror">the parts drawer · reach for one when the problem calls for it</span>
<h2 id="parts-h">The pieces inside. <em>You will not need them all.</em></h2>
<p class="q">These live in rUv's source, and most are <strong>not</strong> switched on for you —
that is normal and fine. Using every advanced part in every project is overkill. The point of a
list like this is that when you hit the problem, you know the part already exists and you can
reach for it instead of building it. Your console shows what you actually have running today.</p>
</div>
</header>
<div class="parts-grid">
<div class="parts-col">
<h3>Finding things</h3>
<dl>
<dt>HNSW index</dt><dd>Approximate nearest-neighbour search — the default when the corpus is big. <code>ruvector-core/src/index/hnsw.rs</code></dd>
<dt>Flat index</dt><dd>Exact search, no approximation, for when the corpus is small enough. <code>ruvector-core/src/index/flat.rs</code></dd>
<dt>Hyperbolic HNSW</dt><dd>Poincaré-ball geometry for tree-shaped data — parent/child distances survive the embedding. For taxonomies and code trees. <code>ruvector-hyperbolic-hnsw/src/hnsw.rs</code></dd>
<dt>RaBitQ quantisation</dt><dd>32× memory reduction with a Hamming prefilter — reach for it when a large corpus stops fitting comfortably. <code>ruflo · embeddings_rabitq_build</code></dd>
<dt>Product quantisation</dt><dd>Compressed vectors, smaller index. <code>ruvector-core/src/advanced_features/product_quantization.rs</code></dd>
<dt>Matryoshka embeddings</dt><dd>Progressive retrieval: a cheap coarse pass first, full precision only for finalists. <code>advanced_features/matryoshka.rs</code></dd>
<dt>Hybrid search</dt><dd>Combines several vector representations in one query. <code>advanced_features/hybrid_search.rs</code></dd>
<dt>Multi-vector search</dt><dd>Joint embeddings — one item represented by several vectors. <code>advanced_features/multi_vector.rs</code></dd>
<dt>Filtered search</dt><dd>Vector search with metadata predicates applied. <code>advanced_features/filtered_search.rs</code></dd>
<dt>Sparse vectors</dt><dd>Efficiency gains where the representation is mostly zeros. <code>advanced_features/sparse_vector.rs</code></dd>
<dt>Graph RAG</dt><dd>Retrieval-augmented generation over a graph rather than a flat list. <code>advanced_features/graph_rag.rs</code></dd>
</dl>
</div>
<div class="parts-col">
<h3>Getting better over time</h3>
<dl>
<dt>SONA</dt><dd>Self-Optimising Neural Architecture — trajectory tracking, pattern recognition, and memory protection so new learning does not erase old. <code>ruvllm/src/sona.ts</code></dd>
<dt>Micro-LoRA</dt><dd>A deliberately tiny adapter (rank 1–2) driving SONA's instant loop — adaptation without retraining anything large. <code>ruvllm/src/sona.ts</code></dd>
<dt>MicroLoRA SDK</dt><dd>Browser-based LoRA fine-tuning of small models, built for edge deployment and a minimal memory footprint. <code>edge-net/pkg/models/microlora.js</code></dd>
<dt>EWC++</dt><dd>Continual learning that avoids catastrophic forgetting — the reason adaptation does not cost you yesterday's behaviour. <code>@ruvector/sona</code></dd>
</dl>
<h3>Remembering things</h3>
<dl>
<dt>Agent memory</dt><dd>Thousands of memory clusters with coherence-weighted compaction — old memory is condensed, not truncated. <code>ruvector-agent-memory</code></dd>
<dt>Hopfield associative memory</dt><dd>Recall a whole pattern from a partial cue. <code>ruvector-nervous-system · hopfield::ModernHopfield</code></dd>
<dt>Dentate-gyrus separation</dt><dd>Keeps similar memories from blurring into each other. <code>ruvector-nervous-system · separate::DentateGyrus</code></dd>
<dt>BTSP</dt><dd>One-shot learning — a single exposure is enough to lay something down. <code>ruvector-nervous-system · plasticity::btsp</code></dd>
</dl>
<h3>Everything else in the drawer</h3>
<dl>
<dt>Sparse inference embeddings</dt><dd>PowerInfer-style sparse feed-forward nets with a configurable sparsity ratio. <code>ruvector-sparse-inference</code></dd>
<dt>CNN backbone</dt><dd>MobileNetV3 (small and large) for image features. <code>ruvector-cnn/src/backbone/mod.rs</code></dd>
<dt>Attention CLI</dt><dd>compute · benchmark · convert · serve · repl, driven by a YAML config. <code>ruvector-attention-cli</code></dd>
</dl>
</div>
</div>
<p class="parts-foot">Every line above was read out of rUv's source, and names the file it came from,
so you can go look. If something here is not in your console, it is not running on your
machine — this drawer is what is <em>available</em>, not what is <em>on</em>.</p>
</section>
<!-- ================================================= SETUP · INSTALL PATHS -->
<section class="depth card rail-mirror" id="install" aria-labelledby="inst-h">
<header class="depth-head">
<div class="depth-title">
<span class="stage st-mirror">setup · the question people keep asking</span>
<h2 id="inst-h">Plugin, global, or both? <em>You want both — and they aren't rivals.</em></h2>
<p class="q">RuvNet Brain is two layers, not two competing install methods. One command sets up both,
and you run it once.</p>
</div>
<span class="depth-num mono" aria-hidden="true">◎</span>
</header>
<div class="depth-body">
<p><b>The surface — the Claude Code plugin.</b> The <code>search_ruvnet</code> tool, the grounding
hooks, and the <code>/configure</code> console. Installed once at <b>user scope</b>, so it works in
<em>every</em> project. This is what makes Claude actually <em>use</em> the stack instead of drifting
back to the classical defaults it was trained on.</p>
<p><b>The knowledge — the brain bundle.</b> rUv's real source, indexed, at
<code>~/.cache/ruvnet-brain/kb</code>. Downloaded once from the latest Release; the
<code>search_ruvnet</code> tool reads it locally — no cloud, no API key. Refreshed when a new Release
ships, never re-fetched per query.</p>
<p><b>One command wires both.</b> <code>npx ruvnet-brain</code> installs the plugin <em>and</em>
downloads the bundle, narrating each step — that's the whole setup. Prefer to do it by hand?
<code>claude plugin marketplace add stuinfla/ruvnet-brain</code>, then
<code>claude plugin install ruvnet-brain@ruvnet-brain --scope user</code>.</p>
<p class="metaphor">Running both layers is <b>not</b> wasted resources — they do different jobs: the
npm package <em>installs and updates</em>; the plugin is the <em>runtime surface</em> Claude loads
each session.</p>
<p>Bare <code>npx …@latest --update</code> is for a one-off update, <em>not</em> a persistent install
— the always-on grounding lives in the plugin's hooks, which a throwaway npx copy never wires. Keep
the plugin installed at user scope; reach for npx only to install or update.</p>
<p>Which am I actually running? The console shows your real stack — every rUv piece it finds and
whether each one is current. Want something it didn't find, like <code>ruflo</code> or
<code>agentic-flow</code>? You have three ways to add it, and none is forced on you: the plugin
marketplace, <code>npm i -g <tool></code>, or <code>npx <tool></code>
for a one-off. The Brain works with any of them.</p>
<a class="btn-console" href="./">Open the console — see your real setup <span aria-hidden="true">→</span></a>
</div>
</section>
<!-- =================================================== GUIDE, NOT MIRROR -->
<section class="closer" aria-label="Where to see live state">
<p class="closer-line">This page is the guide — it tells you what exists and how to check it.
The console is the mirror: which of the ten are on <b>right now, on this machine</b>.</p>
<a class="btn-console" href="./">Open the console <span aria-hidden="true">→</span></a>
</section>
</main>
<footer class="foot">
<div class="wrap foot-inner">
<p class="foot-line">RuvNet Brain · the other 90% — a static guide, served locally from
<code>127.0.0.1</code>. Nothing here reads your machine; that's why every item hands you the
command to check it yourself. The console does the reading.</p>
</div>
</footer>
<script defer src="tips.js"></script>
</body>
</html>