# solpbc/solstone-journal architecture

> Architecture diagram of the GitHub repository solpbc/solstone-journal, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/solpbc/solstone-journal
- Repository: https://github.com/solpbc/solstone-journal

## Overview

solstone is a local-first personal journal: device submissions and imports become dated journal material, which the host processes into transcripts, descriptions, and remembered context that people and agents can search and use. The README documents the product capabilities; the tree identifies relevant Rust subsystems. Sampled excerpts are limited and do not establish most cross-crate call wiring, so the graph shows only the documented product flow and avoids implying detailed internal dispatch between unsampled modules.

Main entry points: [`core/crates/solstone-core-brain/src/lib.rs`](https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-brain/src/lib.rs) (Transcription), [`core/crates/solstone-core-body-store/src/lib.rs`](https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-body-store/src/lib.rs) (Body journal store), [`core/crates/solstone-core-describe/src/pipeline.rs`](https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-describe/src/pipeline.rs) (Screen descriptions), [`core/crates/solstone-core-cogitate-tools/src/lib.rs`](https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-cogitate-tools/src/lib.rs) (Agent tools)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_capture["Capture and ingest"]
  node_capture_ingest["Device ingest<br/>[lib.rs]"]
  node_imports["Import sources<br/>[lib.rs]"]
end

subgraph group_processing["Journal processing"]
  node_transcription["Transcription<br/>[lib.rs]"]
  node_speaker_attribution["Speaker attribution<br/>[speakers.rs]"]
  node_screen_descriptions["Screen descriptions<br/>[pipeline.rs]"]
  node_entities_context["Entities and context<br/>[lib.rs]"]
  node_facets_synthesis["Facets and synthesis<br/>[lib.rs]"]
  node_local_inference["Local inference<br/>[local_inference.rs]"]
end

subgraph group_memory["Journal memory"]
  node_body_source["Body source model<br/>[lib.rs]"]
  node_body_store[("Body journal store<br/>[lib.rs]")]
  node_body_views["Body views<br/>[lib.rs]"]
  node_journal_files[("Dated journal files")]
end

subgraph group_access["Views and agents"]
  node_search["Journal search<br/>[query.rs]"]
  node_web_api["Web and API<br/>[lib.rs]"]
  node_cli["Journal CLI<br/>[lib.rs]"]
  node_agent_tools["Agent tools<br/>[lib.rs]"]
end

subgraph group_operations["Host operations"]
  node_scheduler["Scheduled work<br/>[engine.rs]"]
  node_backup["Backup and restore<br/>[engine.rs]"]
end

node_device_app(("Solstone app"))
node_owner(("Journal owner"))
node_agent(("Owner's agent"))

node_device_app -->|"submits material"| node_capture_ingest
node_owner -->|"imports material"| node_imports
node_capture_ingest -->|"records input"| node_body_source
node_imports -->|"records input"| node_body_source
node_body_source -->|"stores material"| node_body_store
node_body_store -->|"persists journal"| node_journal_files
node_body_store -->|"provides audio"| node_transcription
node_transcription -->|"attributes speech"| node_speaker_attribution
node_body_store -->|"provides frames"| node_screen_descriptions
node_transcription -->|"surfaces context"| node_entities_context
node_screen_descriptions -->|"surfaces context"| node_entities_context
node_journal_files -->|"supplies journal"| node_body_views
node_journal_files -->|"supplies material"| node_facets_synthesis
node_journal_files -->|"indexes material"| node_search
node_owner -->|"browses journal"| node_web_api
node_web_api -->|"serves views"| node_body_views
node_owner -->|"runs commands"| node_cli
node_agent -->|"uses tools"| node_agent_tools
node_agent_tools -->|"searches journal"| node_search
node_agent_tools -->|"accesses API"| node_web_api
node_transcription -.->|"requests inference"| node_local_inference
node_screen_descriptions -.->|"requests inference"| node_local_inference
node_scheduler -.->|"schedules synthesis"| node_facets_synthesis
node_owner -->|"manages backup"| node_backup
node_backup -->|"backs up or restores"| node_journal_files

click node_capture_ingest "https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-body-ingest/src/lib.rs"
click node_imports "https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-body-ingest/src/lib.rs"
click node_body_source "https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-body-source/src/lib.rs"
click node_body_store "https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-body-store/src/lib.rs"
click node_transcription "https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-brain/src/lib.rs"
click node_speaker_attribution "https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-convey-shell/src/speakers.rs"
click node_screen_descriptions "https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-describe/src/pipeline.rs"
click node_entities_context "https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-brain/src/lib.rs"
click node_body_views "https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-convey-body/src/lib.rs"
click node_facets_synthesis "https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-convey-body/src/lib.rs"
click node_search "https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-convey-body/src/query.rs"
click node_web_api "https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-convey-shell/src/lib.rs"
click node_cli "https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-cli/src/lib.rs"
click node_agent_tools "https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-cogitate-tools/src/lib.rs"
click node_local_inference "https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-callosum/src/local_inference.rs"
click node_scheduler "https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-system/src/schedule/engine.rs"
click node_backup "https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-backup-runtime/src/engine.rs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_capture_ingest,node_imports toneBlue
class node_transcription,node_speaker_attribution,node_screen_descriptions,node_entities_context,node_facets_synthesis,node_local_inference toneAmber
class node_body_source,node_body_store,node_body_views,node_journal_files toneMint
class node_search,node_web_api,node_cli,node_agent_tools toneRose
class node_scheduler,node_backup,node_device_app,node_owner,node_agent toneIndigo
```

## Components

### Capture and ingest

- [Device ingest](https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-body-ingest/src/lib.rs): `core/crates/solstone-core-body-ingest/src/lib.rs`
- [Import sources](https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-body-ingest/src/lib.rs): `core/crates/solstone-core-body-ingest/src/lib.rs`

### Journal processing

- [Transcription](https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-brain/src/lib.rs): `core/crates/solstone-core-brain/src/lib.rs`
- [Speaker attribution](https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-convey-shell/src/speakers.rs): `core/crates/solstone-core-convey-shell/src/speakers.rs`
- [Screen descriptions](https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-describe/src/pipeline.rs): `core/crates/solstone-core-describe/src/pipeline.rs`
- [Entities and context](https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-brain/src/lib.rs): `core/crates/solstone-core-brain/src/lib.rs`
- [Facets and synthesis](https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-convey-body/src/lib.rs): `core/crates/solstone-core-convey-body/src/lib.rs`
- [Local inference](https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-callosum/src/local_inference.rs): `core/crates/solstone-core-callosum/src/local_inference.rs`

### Journal memory

- [Body source model](https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-body-source/src/lib.rs): `core/crates/solstone-core-body-source/src/lib.rs`
- [Body journal store](https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-body-store/src/lib.rs): `core/crates/solstone-core-body-store/src/lib.rs`
- [Body views](https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-convey-body/src/lib.rs): `core/crates/solstone-core-convey-body/src/lib.rs`
- **Dated journal files**

### Views and agents

- [Journal search](https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-convey-body/src/query.rs): `core/crates/solstone-core-convey-body/src/query.rs`
- [Web and API](https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-convey-shell/src/lib.rs): `core/crates/solstone-core-convey-shell/src/lib.rs`
- [Journal CLI](https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-cli/src/lib.rs): `core/crates/solstone-core-cli/src/lib.rs`
- [Agent tools](https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-cogitate-tools/src/lib.rs): `core/crates/solstone-core-cogitate-tools/src/lib.rs`

### Host operations

- [Scheduled work](https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-system/src/schedule/engine.rs): `core/crates/solstone-core-system/src/schedule/engine.rs`
- [Backup and restore](https://github.com/solpbc/solstone-journal/blob/main/core/crates/solstone-core-backup-runtime/src/engine.rs): `core/crates/solstone-core-backup-runtime/src/engine.rs`

### Other components

- **Solstone app**
- **Journal owner**
- **Owner's agent**

## Connections

- Solstone app → Device ingest: submits material
- Journal owner → Import sources: imports material
- Device ingest → Body source model: records input
- Import sources → Body source model: records input
- Body source model → Body journal store: stores material
- Body journal store → Dated journal files: persists journal
- Body journal store → Transcription: provides audio
- Transcription → Speaker attribution: attributes speech
- Body journal store → Screen descriptions: provides frames
- Transcription → Entities and context: surfaces context
- Screen descriptions → Entities and context: surfaces context
- Dated journal files → Body views: supplies journal
- Dated journal files → Facets and synthesis: supplies material
- Dated journal files → Journal search: indexes material
- Journal owner → Web and API: browses journal
- Web and API → Body views: serves views
- Journal owner → Journal CLI: runs commands
- Owner's agent → Agent tools: uses tools
- Agent tools → Journal search: searches journal
- Agent tools → Web and API: accesses API
- Transcription → Local inference: requests inference
- Screen descriptions → Local inference: requests inference
- Scheduled work → Facets and synthesis: schedules synthesis
- Journal owner → Backup and restore: manages backup
- Backup and restore → Dated journal files: backs up or restores
