hermes-speckl/README.md
Marcus (agent-cos) e99b08c0da Initial setup: Nix flake wrapping Hermes Agent as Speckl SME
- flake.nix wrapping github:NousResearch/hermes-agent
- NixOS module (nix/nixosModules.nix) with Speckl-preset config:
  - Model: anthropic/claude-opus-4.6
  - Memory + skill generation + user modeling enabled
  - Container mode for self-modification
  - Deep-merged with user overrides
- documents/SOUL.md — Speckl domain expert persona
- documents/AGENTS.md — workspace rules
- documents/USER.md — user template
- README.md with usage instructions
2026-05-12 15:03:56 -07:00

103 lines
2.7 KiB
Markdown

# hermes-speckl — Nix flake for Speckl SME Agent
A pre-configured [Hermes Agent](https://github.com/NousResearch/hermes-agent) instance
purpose-built for the **Speckl** specification language ecosystem.
## What this gives you
One `nixos-rebuild switch` and you have a self-learning AI agent that:
- Understands SpeckDL, the Dark Provenance model, and your compiler architecture
- Compounds expertise across every Speckl task (code review, spec writing, research)
- Runs as a hardened systemd service with declarative config
- Connects via Discord, Telegram, Slack, WhatsApp, or CLI
- Gets faster on recurring tasks the longer it runs
## Usage
Add to your system flake:
```nix
# flake.nix
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
hermes-speckl.url = "github:sscoble/hermes-speckl";
};
outputs = { nixpkgs, hermes-speckl, ... }: {
nixosConfigurations.your-host = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
hermes-speckl.nixosModules.speckl
./configuration.nix
];
};
};
}
```
Then configure:
```nix
# configuration.nix
{ config, ... }: {
services.hermes-speckl = {
enable = true;
# Declarative config (deep-merged into cli-config.yaml)
settings = {
model.default = "anthropic/claude-opus-4.6";
toolsets = [ "all" ];
};
# LLM API keys (use sops-nix or agenix)
environmentFiles = [ config.sops.secrets."hermes-env".path ];
};
}
```
Apply:
```bash
nixos-rebuild switch --flake .#your-host
systemctl status hermes-speckl
journalctl -u hermes-speckl -f
```
## What's pre-configured
| Setting | Value |
|---|---|
| Model | `anthropic/claude-opus-4.6` (override via `settings.model.default`) |
| Memory | Enabled with skill generation + user modeling |
| Terminal | Local backend, 180s timeout |
| Context compression | On, 85% threshold, Gemini 3 Flash summarizer |
| Agent | 60 max turns, medium reasoning effort |
| Container mode | Enabled (agent can install packages for self-modification) |
| SOUL.md | Speckl domain expert persona (see `documents/SOUL.md`) |
## Container mode
The agent runs inside a persistent Ubuntu container with:
- **Node 22** via NodeSource (for MCP servers, js tooling)
- **Python 3.12 venv** via uv (for pip installs, custom tools)
- **Writable Nix store** (bind-mounted from host)
- **Sudo access** for the agent user (self-modification)
This means the agent can `npm i -g`, `pip install`, and modify its own
environment — essential for skill creation and tool discovery.
## Development
```bash
# Run directly
nix run github:sscoble/hermes-speckl -- setup
# Or from a local clone
git clone https://os.scoble.me/forgejo/sscoble/hermes-speckl
cd hermes-speckl
nix build
./result/bin/hermes setup
```