- Rust 46.8%
- QML 45.3%
- JavaScript 3%
- Shell 2.3%
- Python 1.8%
- Other 0.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
The phone's trail was almost entirely Locked -> Observed -> Locked. The snapshots said why: prox=true on the way in, prox=false one second later on the way out, over and over. `near` must hold 700 ms to be believed and `far` is believed instantly, so a one-second episode is long enough to enter and its end is immediate. The debounce cannot be where this is fixed. suppress_wake reads the debounced value, so slowing `far` there would keep vetoing tap-to-wake after the sensor was uncovered — which is exactly what PROXIMITY_FAR_DEBOUNCE's zero exists to prevent. One reading, two consumers, opposite needs: the veto wants far fast, the state wants it stable. So the hysteresis is on the state and the veto keeps its instant edge, with a test pinning that separation. 3 s, bounded by data already in this file rather than by feel: the measured blips ran ~1 s, and of the 44 recorded episodes the nine real ones all ran >= 5 s. It sits above the noise and below every genuine episode. It reduces the flapping rather than abolishing it — a sensor that keeps blipping still enters Observed on each 700 ms near. Raising the entry bar needs the same split applied to the near edge, which is a second change with its own justification to earn. Two existing tests asserted the instant exit and now advance past the dwell. The property they are named for is unchanged: far ends Observed. |
||
| .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