Metadata-Version: 2.4
Name: solstone
Version: 0.6.5
Summary: Navigate Life Intelligently
Author-email: Jer Miller <jer@solpbc.org>
License: AGPL-3.0-only
Project-URL: Homepage, https://github.com/solpbc/solstone-journal
Project-URL: Repository, https://github.com/solpbc/solstone-journal
Project-URL: Documentation, https://github.com/solpbc/solstone-journal/blob/main/README.md
Project-URL: Bug Tracker, https://github.com/solpbc/solstone-journal/issues
Keywords: audio,transcription,screenshot,multimodal,ai,gemini
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Multimedia :: Sound/Audio :: Analysis
Classifier: Topic :: Multimedia :: Graphics :: Capture :: Screen Capture
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: setproctitle
Requires-Dist: typer
Requires-Dist: requests
Requires-Dist: timefhuman
Requires-Dist: cryptography>=42
Requires-Dist: pyOpenSSL>=24.0
Requires-Dist: websockets>=13.0
Requires-Dist: psutil
Requires-Dist: userpath<2,>=1.9.2
Provides-Extra: pdf
Requires-Dist: weasyprint>=60.0; extra == "pdf"
Requires-Dist: pypdf>=4.0.0; extra == "pdf"
Requires-Dist: pdf2image>=1.16.0; extra == "pdf"
Provides-Extra: whisper
Requires-Dist: faster-whisper>=1.0.0; extra == "whisper"
Provides-Extra: parakeet-onnx-cpu
Requires-Dist: onnx-asr>=0.11.0; extra == "parakeet-onnx-cpu"
Requires-Dist: onnxruntime>=1.25.0; extra == "parakeet-onnx-cpu"
Requires-Dist: huggingface-hub>=0.24; extra == "parakeet-onnx-cpu"
Provides-Extra: parakeet-onnx-cuda
Requires-Dist: onnx-asr>=0.11.0; extra == "parakeet-onnx-cuda"
Requires-Dist: onnxruntime-gpu>=1.25.0; extra == "parakeet-onnx-cuda"
Requires-Dist: huggingface-hub>=0.24; extra == "parakeet-onnx-cuda"
Requires-Dist: nvidia-cuda-runtime-cu12; extra == "parakeet-onnx-cuda"
Requires-Dist: nvidia-cudnn-cu12; extra == "parakeet-onnx-cuda"
Requires-Dist: nvidia-cublas-cu12; extra == "parakeet-onnx-cuda"
Requires-Dist: nvidia-cufft-cu12; extra == "parakeet-onnx-cuda"
Requires-Dist: nvidia-curand-cu12; extra == "parakeet-onnx-cuda"
Requires-Dist: nvidia-cuda-nvrtc-cu12; extra == "parakeet-onnx-cuda"
Requires-Dist: nvidia-nvjitlink-cu12; extra == "parakeet-onnx-cuda"
Provides-Extra: journal-host
Requires-Dist: python-dotenv; extra == "journal-host"
Requires-Dist: google-genai>=1.62.0; extra == "journal-host"
Requires-Dist: Flask[async]; extra == "journal-host"
Requires-Dist: Markdown; extra == "journal-host"
Requires-Dist: mistune; extra == "journal-host"
Requires-Dist: python-frontmatter; extra == "journal-host"
Requires-Dist: packaging; extra == "journal-host"
Requires-Dist: Pillow; extra == "journal-host"
Requires-Dist: numpy; extra == "journal-host"
Requires-Dist: av; extra == "journal-host"
Requires-Dist: openai>=1.2.0; extra == "journal-host"
Requires-Dist: openhands-sdk==1.27.*; extra == "journal-host"
Requires-Dist: opentelemetry-api==1.39.1; extra == "journal-host"
Requires-Dist: opentelemetry-sdk==1.39.1; extra == "journal-host"
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.39.1; extra == "journal-host"
Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.39.1; extra == "journal-host"
Requires-Dist: opentelemetry-instrumentation==0.60b1; extra == "journal-host"
Requires-Dist: opentelemetry-instrumentation-threading==0.60b1; extra == "journal-host"
Requires-Dist: opentelemetry-semantic-conventions==0.60b1; extra == "journal-host"
Requires-Dist: anthropic; extra == "journal-host"
Requires-Dist: mlx-vlm<0.7,>=0.6.2; (sys_platform == "darwin" and platform_machine == "arm64") and extra == "journal-host"
Requires-Dist: mlx<1,>=0.31.2; (sys_platform == "darwin" and platform_machine == "arm64") and extra == "journal-host"
Requires-Dist: huggingface-hub>=0.24; extra == "journal-host"
Requires-Dist: httpx; extra == "journal-host"
Requires-Dist: h2; extra == "journal-host"
Requires-Dist: jsonschema<5,>=4.26; extra == "journal-host"
Requires-Dist: genai-prices; extra == "journal-host"
Requires-Dist: icalendar; extra == "journal-host"
Requires-Dist: blessed>=1.20.0; extra == "journal-host"
Requires-Dist: tzlocal; extra == "journal-host"
Requires-Dist: python-slugify; extra == "journal-host"
Requires-Dist: rapidfuzz; extra == "journal-host"
Requires-Dist: soundfile; extra == "journal-host"
Requires-Dist: onnx-asr>=0.11.0; (sys_platform == "linux" and platform_machine == "x86_64") and extra == "journal-host"
Requires-Dist: kaldi-native-fbank>=1.22; extra == "journal-host"
Requires-Dist: scikit-learn>=1.3; extra == "journal-host"
Requires-Dist: opencv-python-headless; extra == "journal-host"
Requires-Dist: solstone[pdf]; extra == "journal-host"
Requires-Dist: solstone[whisper]; extra == "journal-host"
Provides-Extra: journal
Requires-Dist: solstone[journal-host]; extra == "journal"
Requires-Dist: onnxruntime!=1.24.1,>=1.20.0; extra == "journal"
Requires-Dist: onnxruntime!=1.24.1,>=1.25.0; (sys_platform == "linux" and platform_machine == "x86_64") and extra == "journal"
Provides-Extra: journal-cuda
Requires-Dist: solstone[journal-host]; extra == "journal-cuda"
Requires-Dist: onnxruntime-gpu>=1.25.0; extra == "journal-cuda"
Requires-Dist: nvidia-cuda-runtime-cu12; extra == "journal-cuda"
Requires-Dist: nvidia-cudnn-cu12; extra == "journal-cuda"
Requires-Dist: nvidia-cublas-cu12; extra == "journal-cuda"
Requires-Dist: nvidia-cufft-cu12; extra == "journal-cuda"
Requires-Dist: nvidia-curand-cu12; extra == "journal-cuda"
Requires-Dist: nvidia-cuda-nvrtc-cu12; extra == "journal-cuda"
Requires-Dist: nvidia-nvjitlink-cu12; extra == "journal-cuda"
Dynamic: license-file

<img src="docs/static/sol-wordmark.svg" alt="solstone" width="300">

# solstone journal

a memory your agents can work from. observers experience your day along with you, sol curates your memories, and your journal holds everything.

the python core of the solstone product family — the journal layer that the [solstone native apps](https://solstone.app) wrap. it runs in the background on your computer, experiencing your day along with you. AI agents transcribe, extract entities, detect meetings, build knowledge graphs, and surface daily insights — all without any manual input. everything stays on your machine in daily journal directories. open source, local-first, no cloud required.

Python 3.11+, Linux + macOS, AGPL-3.0-only, maintained by [sol pbc](https://solpbc.org).

<img src="docs/static/screenshot-home.png" alt="solstone daily dashboard" width="800">

*Daily dashboard — goal, todos, upcoming events, and detected entities, all generated from observations. Facet tabs organize your life by project or context.*

## what you get

**a system of intelligence, not just a system of record.**

- **automatic transcription** — standalone observers take in audio continuously with speaker identification. every conversation, transcribed and searchable.
- **people and projects** — extracted from your conversations and remembered across time.
- **knowledge graphs** — relationships between entities mapped automatically. who works with whom, which projects connect to which people.
- **meeting detection** — meetings identified, summarized, and linked. meeting prep that surfaces what you discussed last time and personal context you'd forget.
- **commitments** — todos extracted from natural conversation. no manual entry.
- **facet organization** — group everything by project or context (work, personal, client-name) with scoped views across all apps.
- **AI chat** — talk to your journal. ask anything about your digital life and get answers grounded in your actual data.
- **full-text search** — find anything you've ever seen or heard.
- **30 AI agents** — configurable workflows for activities, scheduling, research, media analysis, and more. extensible via the agent skill framework.
- **local-first** — all data in daily journal directories on your filesystem. configurable AI providers (Google Gemini, OpenAI, Anthropic). no cloud dependency.

<img src="docs/static/screenshot-transcripts.png" alt="solstone transcript viewer" width="800">

*Transcript viewer — dual-timeline navigation, speaker-diarized dialogue, audio playback, screen analysis. every conversation browsable by time.*

<img src="docs/static/screenshot-entities.png" alt="solstone people and projects" width="800">

*People and projects — automatically extracted and remembered across your journal with mention counts and relationship data.*

## architecture

```text
  +---------+       +----------------+       +---------+
  | observe | ----> |    journal     | ----> |  think  |
  | capture |       | YYYYMMDD/ dirs |       | process |
  +---------+       | media, jsonl,  |       | index   |
                    | entities       |       +----+----+
                    +-------+--------+            |
                            ^                     |
                            |  agent outputs      |
                       +----+----+                |
                       | cortex  | <--------------+
                       | agents  |
                       +---------+
                            |
  ==== callosum (event bus) | ==========================
                            |
                     +------+------+
                     |   convey    |
                     | web UI      |
                     +-------------+
```

- **observe** — receives audio and screen observations from standalone observers (solstone-linux, solstone-tmux, solstone-macos) via observer ingest. processes FLAC audio, WebM screen media, and timestamped metadata.
- **think** — transcribes audio (faster-whisper), analyzes screen observations, surfaces entities, detects meetings, and indexes everything into SQLite. runs 30 configurable agent/generator templates from `solstone/talent/`.
- **cortex** — orchestrates agent execution. receives events, dispatches agents, writes results back to the journal.
- **callosum** — async message bus connecting all services. enables event-driven coordination between observe, think, cortex, and convey.
- **convey** — Flask-based web interface with 17 pluggable apps for navigating journal data.
- **journal** — `journal/YYYYMMDD/` daily directories. the single source of truth — transcripts, media, entities, agent outputs, and the SQLite index all live here.

## quick start

run a journal here — the full host:

```bash
uv tool install 'solstone[journal]'
journal setup
```

(or `pipx install 'solstone[journal]' && journal setup`.)

want only the thin `sol` client — to talk to a journal running elsewhere? `uv tool install solstone` (no extras), or `uvx solstone` for an ephemeral one-shot.

then open http://localhost:5015 in a browser; the first-run wizard handles identity and the gemini API key.

see [INSTALL.md](INSTALL.md) for prerequisites, observer install, and troubleshooting; see [CONTRIBUTING.md](CONTRIBUTING.md) if you want to develop on solstone from a source checkout.

## CLI

solstone is operated through `sol` for day-to-day journal access and `journal` for host operations.

```bash
sol                    # Status overview and command list
journal supervisor         # Start the full stack (capture + processing + web)
sol chat               # Interactive AI chat from the terminal
journal transcribe <file>  # Transcribe an audio file
journal indexer            # Rebuild the search index
```

Run `sol help` for the full command reference.

## documentation

| Topic | Document |
|-------|----------|
| Installation and setup | [INSTALL.md](INSTALL.md) |
| Developing from source | [CONTRIBUTING.md](CONTRIBUTING.md) |
| Journal structure and data model | [solstone/talent/journal/SKILL.md](solstone/talent/journal/SKILL.md) |
| Capture pipeline | [docs/OBSERVE.md](docs/OBSERVE.md) |
| Processing and agents | [docs/THINK.md](docs/THINK.md) |
| Web interface | [docs/CONVEY.md](docs/CONVEY.md) |
| App development | [docs/APPS.md](docs/APPS.md) |
| Agent runtime | [docs/CORTEX.md](docs/CORTEX.md) |
| Message bus | [docs/CALLOSUM.md](docs/CALLOSUM.md) |
| AI provider configuration | [docs/PROVIDERS.md](docs/PROVIDERS.md) |
| What solstone sends to your AI provider | [DATA-FLOW.md](DATA-FLOW.md) |
| Troubleshooting | [docs/DOCTOR.md](docs/DOCTOR.md) |
| Project direction | [docs/ROADMAP.md](docs/ROADMAP.md) |

## development

See [AGENTS.md](AGENTS.md) for development guidelines, coding standards, and testing instructions.

Use `make dev` to run the full stack against test fixtures and `make ci` for pre-commit checks.

## feedback

Questions, feedback, or a bug? **Follow and tag [@solstone.app](https://bsky.app/profile/solstone.app) on Bluesky** for discussion and updates, open an issue at [github.com/solpbc/solstone-journal/issues](https://github.com/solpbc/solstone-journal/issues) for bugs, or reach support at [support.solstone.app](https://support.solstone.app). You don't need to know anyone — those are the front doors.

## contributing

See [CONTRIBUTING.md](CONTRIBUTING.md) for contribution terms.

## license

AGPL-3.0-only. See [LICENSE](LICENSE) for details.
Maintained by [sol pbc](https://solpbc.org).
