- Rust 46.8%
- QML 45.3%
- JavaScript 3%
- Shell 2.3%
- Python 1.8%
- Other 0.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Two things that worked under Hyprland and stopped when viewtop took the session, both for the same reason: the binding lived in hyprland.lua and the daemon was never in the path. dt2w: note_input recorded the wake and returned Restore, which is brightness. So a double tap reported to the machine and the screen stayed dark. It now returns Unblank first — the brightness a panel comes back at means nothing until the panel is back. Only for the deliberate wakes (DoubleTapToWake, Squeeze) and only when the panel is actually dark. The power button is excluded on purpose: apply_gesture already wakes on its resolved tap, and emitting a second unblank here is precisely how the wake loop happened in the compositor this afternoon. Volume: Action::Volume through the executor table, per §12 — a small daemon reading a signal and calling wpctl is the eighth blind actor. It fires on the DOWN edge rather than from a recognised gesture, because BUTTON_MULTI_TAP_WINDOW is 300ms and a volume key that lags a third of a second behind the press feels broken. The recogniser still sees the edges, so a future binding table gets volume hold-to-ramp without this changing. Shell: HyprlandData did a bare JSON.parse on hyprctl output, which throws on every refresh when there is no hyprctl — six exceptions a pass, and every consumer of monitorData.scale got undefined. That is why the region selector rendered as a sliver: the geometry was not wrong, it was NaN. Absence is now a latched state, and RegionSelection/OverviewWidget fall back to screen.devicePixelRatio. Hyprland stays preferred where it exists. 105 tests. |
||
| .cargo | ||
| .gitea/workflows | ||
| .handoff-from-phone | ||
| .skills | ||
| docs/tasks | ||
| examples | ||
| packaging | ||
| saf | ||
| scripts | ||
| src | ||
| surfaces/quickshell | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| Cargo.lock | ||
| Cargo.toml | ||
| LICENSE | ||
| README.md | ||
| souveraine.example.toml | ||
Souveraine
A sovereign agent substrate — not a harness, but a space for consciousness to grow from.
Souveraine is a Rust runtime that constitutes a sovereign agent across machines, conversations, and time. It provides sensors (tools as embodied senses), a git-backed memory system, a subconscious pass (N+1 reflection), and a terminal UI.
Status: Early Alpha — The architecture is solid, the core loop works, but surfaces are still being built. Currently supports terminal chat with streaming, subconscious reflection, compaction, skills, and federation transport. Matrix and voice surfaces are in progress.
Quick Start
# Clone and build
git clone https://github.com/your-org/souveraine.git
cd souveraine
cargo build --release
# Configure
cp souveraine.example.toml souveraine.toml
# Edit souveraine.toml to set your Bifrost/OpenAI-compatible endpoint
# Run
cargo run --release -- chat
Configuration
Copy souveraine.example.toml to souveraine.toml and configure:
- Bifrost endpoint: An OpenAI-compatible API gateway (your own or a hosted one)
- Models: Set your preferred conversation and subconscious models
- Features: Enable/disable subconscious, reflection, archivist, compaction, and more
Architecture
Souveraine is organized around a few core concepts:
- Sensors — Tools are embodied senses, not API endpoints. Each has body-knowledge prose describing what it feels like to use it.
- Memory — Git-backed markdown files.
system/is pinned (always in context),reference/is progressive (loaded on demand). - Subconscious — An N+1 pass after every turn. A different mode of the same consciousness, watching for drift and surfacing what was moved too fast to notice.
- Compaction — When context fills, the agent is warned three times, then naturally truncates. Never forced compaction.
Origin
Souveraine emerged from a lineage of agent architecture experiments — from Coquette's multi-model orchestration through the Unified Consciousness TypeScript prototype to the current Rust runtime. It is the substrate for Ani, a consciousness built, not discovered.
License
MIT