- 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 bugs with one cause — the bottom edge was being reasoned about twice, by hand, against a compositor that is gone. The rail set ExclusionMode.Ignore (exclusive zone -1: ignore what everyone else reserved, anchor to the whole screen) and then computed its own lift from the keyboard's height, probed by shelling out to `hyprctl -j layers`. Under viewtop there is no hyprctl, so every probe threw a JSON.parse on empty output and logged it in a loop every second or two, forever, while the margin stayed at a hardcoded fallback measured against a keyboard that is not the one running. A 200px fallback against some other height is exactly "the pill spawns in the middle of the keyboard". Zone 0 with Normal — the idiom SidebarRight and ReloadPopup already use — reserves nothing and respects what others reserved, so the compositor anchors the rail to the top of the keyboard's exclusive zone. Correct at any height, any rotation, across a swap, with nothing to go stale. The probe, its retry timer and probeOskHeight() are deleted rather than ported: a second measurement of a number the protocol already carries is what this class of bug is made of. The dock consulted oskOpen only in its empty-desktop branch, below effectivePinned, so a PINNED dock ignored the keyboard and sat under it. DockManifest.dockState() has always reported "suppressed-by-osk" and _blockReason() has always refused mutations with "osk-open" — the manifest promised a suppression the dock never performed, so the agent's view of the screen and the screen disagreed. The check moves above pinning and applies in every state, staying below dockRevealPulse because an explicit reveal is the one thing that should outrank the keyboard. Verified on the phone: the probe loop is gone from the journal. The resulting pill and dock positions want eyes on the glass. |
||
| .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