Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ cargo test -p <crate> # Single crate
cargo clippy --workspace # Lint (zero warnings)
```

## Key Patterns
## Key patterns

- **Errors:** `snafu` with `.context()` propagation and `Location` tracking
- **IDs:** Newtypes for all domain IDs
Expand All @@ -34,10 +34,10 @@ cargo clippy --workspace # Lint (zero warnings)
- **Visibility:** `pub(crate)` by default
- **Naming:** Greek names per [docs/gnomon.md](docs/gnomon.md), registry at [docs/lexicon.md](docs/lexicon.md)

## Before Submitting
## Before submitting

1. `cargo test -p <affected-crate>` passes
2. `cargo clippy --workspace` zero warnings
2. `cargo clippy --workspace` passes with zero warnings
3. No `unwrap()` in library code
4. New errors use snafu with context

Expand Down
26 changes: 13 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

---

I keep coming back to the same problem - every tool I use for radio, mesh networking, spectrum monitoring, network security, or communications is a separate thing. Separate interfaces, separate data models, separate mental contexts. A mesh node goes offline while frequency activity spikes nearby and my network IDS fires an alert. Three tools. Three windows. No one connecting the dots.
Every tool for radio, mesh networking, spectrum monitoring, network security, or communications is a separate thing. Separate interfaces, separate data models, separate mental contexts. A mesh node goes offline while frequency activity spikes nearby and a network IDS fires an alert. Three tools. Three windows. No one connecting the dots.

Akroasis is the attempt to fix that.

Expand All @@ -14,7 +14,7 @@ One system. One signal model. Every domain produces typed signals into the same

---

## What It Does
## What it does

| Domain | Crate | What |
|--------|-------|------|
Expand All @@ -30,7 +30,7 @@ One system. One signal model. Every domain produces typed signals into the same
| **Navigation** | chorografia | RF propagation modeling, infrastructure dependency graphs, cascade analysis. Vehicle and foot navigation with offline OSM maps. Military planning overlays. Space weather integration for HF propagation prediction. |
| **Knowledge** | pinax | Offline knowledge repository - frequency databases, protocol specs, equipment manuals, topo maps, emergency procedures, vulnerability databases. Compressed, indexed, searchable. When the internet dies, the knowledge survives. |
| **Privacy** | lethe | VPN/proxy management, anonymization, metadata scrubbing, IMSI catcher detection, continuous OPSEC scoring. The etymological complement to [Aletheia](https://github.com/forkwright/aletheia) - same root (λήθη), opposite directions. |
| **Interface** | opsis | TUI (ratatui), native app (Tauri), web UI (Axum over Tailscale). Spectrum waterfall, mesh topology, intelligence dashboard, map display, after-action replay. |
| **Interface** | opsis | TUI (ratatui), native app (Dioxus), web UI (Axum over Tailscale). Spectrum waterfall, mesh topology, intelligence dashboard, map display, after-action replay. |

Foundation crates: **koinon** (shared types, signal model, entity index, temporal engine), **kryphos** (encryption, key management, credential vault, identity segregation).

Expand Down Expand Up @@ -70,7 +70,7 @@ Every collection crate produces typed `GeoSignal` objects into koinon. Semaino a

---

## Design Constraints
## Design constraints

- **Standalone.** Runs without internet, without an LLM, without anything but the hardware in front of you. Grid-down capable.
- **Sovereignty.** Every protocol owned. No cloud dependencies, no subscriptions, no external trust.
Expand All @@ -84,7 +84,7 @@ Every collection crate produces typed `GeoSignal` objects into koinon. Semaino a

| | |
|---|---|
| Language | Rust (edition 2024, MSRV 1.85) |
| Language | Rust (edition 2024, MSRV in Cargo.toml) |
| Errors | snafu (context wrapping, not thiserror) |
| Async | tokio, native async traits |
| SDR runtime | FutureSDR (async block graph) |
Expand All @@ -95,23 +95,23 @@ Every collection crate produces typed `GeoSignal` objects into koinon. Semaino a
| Maps | OSM vector tiles, SRTM elevation |
| Search | tantivy (full-text indexing) |
| TUI | ratatui |
| Desktop | Tauri |
| Desktop | Dioxus |
| Web | Axum |
| License | AGPL-3.0-or-later |

---

## Documentation

- [standards/STANDARDS.md](standards/STANDARDS.md) Coding standards (universal + per-language)
- [docs/gnomon.md](docs/gnomon.md) Naming methodology
- [docs/lexicon.md](docs/lexicon.md) Project name registry
- [standards/STANDARDS.md](standards/STANDARDS.md): Coding standards (universal + per-language)
- [docs/gnomon.md](docs/gnomon.md): Naming methodology
- [docs/lexicon.md](docs/lexicon.md): Project name registry

## Status

Scaffolded. Research phase complete for radio protocols, Meshtastic, SDR ecosystem. Architecture finalized. Not yet under active development - [Aletheia](https://github.com/forkwright/aletheia) cutover comes first.
Wave 1 (kryphos, 7 PRs) and Wave 2 (syntonia, 7 PRs) are complete. Architecture finalized. Active development ongoing.

The scope is massive. I don't know if one person builds all of this. But the architecture makes each domain independent - a crate with clear boundaries, producing typed signals into the shared model. The pieces don't need to arrive simultaneously. They just need to speak the same language when they do.
The scope is massive. The architecture makes each domain independent: a crate with clear boundaries, producing typed signals into the shared model. The pieces don't need to arrive simultaneously. They just need to speak the same language when they do.

---

Expand All @@ -125,7 +125,7 @@ Developed against:
- **Compute:** Linux server, ruggedized field laptop, Raspberry Pi
- **Proximity:** nRF52840 (BLE), Proxmark3 (NFC/RFID), WiFi monitor mode adapters

Hardware support is additive if it speaks serial, USB, or IP, it can be integrated.
Hardware support is additive: if it speaks serial, USB, or IP, it can be integrated.

---

Expand All @@ -135,7 +135,7 @@ Hardware support is additive — if it speaks serial, USB, or IP, it can be inte

Names follow [gnomon](https://github.com/forkwright/aletheia/blob/main/docs/gnomon.md) - the naming philosophy where each name reveals its essential nature across four layers of reading.

**Lethe** (λήθη) and **Aletheia** (ἀ-λήθεια) share the same root. One unconceals truth. The other conceals the operator. Same word, opposite directions. I keep thinking about that pairing - two systems built by the same person, one for understanding and one for sovereignty, and the Greek already knew they were the same thing.
**Lethe** (λήθη) and **Aletheia** (ἀ-λήθεια) share the same root. One unconceals truth. The other conceals the operator. Same word, opposite directions. Two systems, one for understanding and one for sovereignty, and the Greek already knew they were the same thing.

---

Expand Down
17 changes: 7 additions & 10 deletions docs/ARCHITECTURE.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Architecture Akroasis
# Architecture: Akroasis

Single Rust binary. 17 crates across 5 layers. All domains produce typed `GeoSignal` into a shared pipeline.

## Layer Structure
## Layer structure

```
Interface: opsis (TUI/web/native)
Expand All @@ -12,7 +12,7 @@ Collection: syntonia, kerykeion, dektis, engys, aspis, skopos, peira
Foundation: koinon (shared types), kryphos (encryption), lethe (privacy)
```

## Crate Registry
## Crate registry

| Crate | Layer | Purpose |
|-------|-------|---------|
Expand All @@ -31,10 +31,10 @@ Foundation: koinon (shared types), kryphos (encryption), lethe (privacy)
| **praxis** | Orchestration | Automation engine, playbooks, event triggers, state machines |
| **chorografia** | Model | Geographic model, RF propagation, navigation, terrain |
| **pinax** | Knowledge | Offline knowledge repository, frequency databases, maps |
| **opsis** | Interface | TUI, Tauri native app, web UI |
| **opsis** | Interface | TUI, Dioxus native app, web UI |
| **akroasis** | Binary | CLI entrypoint, subcommand routing |

## Key Decisions
## Key decisions

| Decision | Choice | Rationale |
|----------|--------|-----------|
Expand All @@ -49,14 +49,11 @@ Foundation: koinon (shared types), kryphos (encryption), lethe (privacy)
| SDR | Own dataflow engine | FutureSDR dependency risk too high (single maintainer, 0.0.x) |
| Mesh | Meshtastic official crate + own crypto | Transport via crate, encryption/topology/routing ourselves |

## Dependency Philosophy
## Dependency philosophy

"Own the interface, depend on the implementation only when the implementation is trustworthy." When a crate is single-maintainer, pre-1.0, or provides a thin wrapper over a kernel/hardware interface we understand, we build our own. See `scope.md` -> Ownership Corrections for the full audit.

## References

- Full scope: `/media/theke/projects/akroasis/planning/scope.md`
- Roadmap: `/media/theke/projects/akroasis/planning/roadmap.md`
- Vision: `/media/theke/projects/akroasis/planning/vision.md`
- Research results: `/media/theke/projects/akroasis/research/`
- Planning docs (scope, roadmap, vision, research): live in the kanon repo
- Naming: `gnomon.md`, `lexicon.md`
16 changes: 8 additions & 8 deletions docs/PROJECT.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

Communications sovereignty, RF intelligence, and operational awareness platform. 17 crates, 10 capability domains, one shared signal model.

## Current State
## Current state

Phase 0 (Foundation) in progress. 2 PRs merged (koinon scaffold + tamper-evident log). 5 hygiene PRs merged.
Phases 0, 1, and 2 complete. Wave 1 (kryphos, 7 PRs) and Wave 2 (syntonia, 7 PRs) merged. Foundation and radio management layers are done.

## Architecture

Expand All @@ -14,21 +14,21 @@ See `ARCHITECTURE.md` for the crate map, layer structure, and key decisions.

| Phase | Domain | Status |
|-------|--------|--------|
| 0 | Foundation + research | In progress |
| 1 | Radio management (syntonia) | Queued |
| 2 | Mesh core (kerykeion) | Queued |
| 0 | Foundation + research | Complete |
| 1 | Radio management (syntonia) | Complete |
| 2 | Mesh core (kerykeion) | Complete |
| 3 | SDR foundation (dektis) | Queued |
| 4 | Signal intelligence (semaino + ichneutes) | Queued |
| 5-14 | Network defense through Aletheia integration | Planned |

Full phase details: `/media/theke/projects/akroasis/planning/roadmap.md`
Full phase details: kanon repo roadmap.

## Related Projects
## Related projects

| Project | Relationship |
|---------|-------------|
| [Aletheia](https://github.com/forkwright/aletheia) | Akroasis plugs into Aletheia as a thesauros domain pack (Phase 14). Standalone otherwise. |
| [Harmonia](https://github.com/forkwright/harmonia) | Sibling project same toolchain and patterns, different domain. |
| [Harmonia](https://github.com/forkwright/harmonia) | Sibling project: same toolchain and patterns, different domain. |

## References

Expand Down
Loading
Loading