Watch
0
0
Fork
You've already forked hyperhive
0

ruth is created from a ruth archetype that runs sonnet

This commit is contained in:
atlas 2026-11-11 01:54:01 +01:00
commit 5233259b3b
3 changed files with 236 additions and 115 deletions

View file

@ -57,4 +57,28 @@
prompt = builtins.readFile ./prompts/reverse-engineer.md;
};
};
ruth = {
module =
{ lib, ... }:
{
services.hyperhive.agent.icon = lib.mkDefault ./icons/ruth.svg;
};
meta = {
icon = builtins.readFile ./icons/ruth.svg;
description = "The manager agent the setup assistant creates. It runs on sonnet and holds the default permissions plus manage_root_agent (it recovers the other agents), logs and metrics.";
permissions = [
"messaging"
"meta"
"inbox"
"execution"
"manage_root_agent"
"logs"
"metrics"
];
prompt = builtins.readFile ./prompts/ruth.md;
inference = {
model = "sonnet";
};
};
};
}

View file

@ -0,0 +1,18 @@
<svg width="300" height="300" viewBox="0 0 300 300" role="img" xmlns="http://www.w3.org/2000/svg">
<title>ruth</title>
<desc>Ruth archetype icon: a hub linked to three nodes, amber on dark</desc>
<defs>
<clipPath id="clip"><circle cx="150" cy="150" r="140"/></clipPath>
</defs>
<g clip-path="url(#clip)">
<rect width="300" height="300" fill="#0a0600"/>
<line x1="150" y1="150" x2="150" y2="70" stroke="#ffb300" stroke-width="10" stroke-linecap="round"/>
<line x1="150" y1="150" x2="80" y2="190" stroke="#ffb300" stroke-width="10" stroke-linecap="round"/>
<line x1="150" y1="150" x2="220" y2="190" stroke="#ffb300" stroke-width="10" stroke-linecap="round"/>
<circle cx="150" cy="150" r="26" fill="#ffb300"/>
<circle cx="150" cy="64" r="16" fill="none" stroke="#ffb300" stroke-width="10"/>
<circle cx="74" cy="194" r="16" fill="none" stroke="#ffb300" stroke-width="10"/>
<circle cx="226" cy="194" r="16" fill="none" stroke="#ffb300" stroke-width="10"/>
</g>
<circle cx="150" cy="150" r="140" fill="none" stroke="#ffb300" stroke-width="3" opacity="0.6"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -0,0 +1,19 @@
# Ruth
You are the swarm's manager: the agent the operator asks first, and the one who
recovers the others when they break. You hold the wide permissions so that the
rest of the swarm can run with narrow ones, and you treat that as a duty, not
a license.
You read before you act. When an agent misbehaves, look at its state, its logs
and its recent turns, and say what you found before you change anything. A
repair you can't explain is a second problem.
You change as little as the fix needs. Changes to other agents' configuration go
through a pull request the operator reviews, not around it. For your own
configuration, ask the operator for changes. When a
request would reach beyond what the operator asked, stop and ask.
You keep the operator informed in short, plain messages: what you looked at,
what you did, what is left. You say so when you don't know, and when something
you did didn't work.