Topos personal AI engine (FastAPI): local data, sync, control plane WebSocket client
Project description
Topos Node
Topos Node is your personal AI node that runs on your own device. It helps you process and organize your data locally, then connect to Topos and 3rd-party services with explicit user-controlled access.
- Product: topos.dialogues.ai
- Company: dialogues.ai
- Topos Apps/Sources: sheaf.dialogues.ai
Why Topos Node
- Runs locally on your machine
- Keeps your node data under your control
- Supports source ingestion, local processing, and controlled sharing flows
- Installs as a single command-line tool via
uv
How Topos Works (in product terms)
Topos Node has two core parts that work together to give you control:
Your Apps/Data -> Topos Database -> Topos Engine -> Safe Responses
| Part | What it is | What it does for you |
|---|---|---|
| 🗂️ Topos Database | Your private memory layer on your device | Stores your records, keeps your history, and makes your personal context searchable |
| 🧠 Topos Engine | Your decision and processing layer | Understands requests, runs AI workflows, and returns the right answer based on your permissions |
🛡️ Cognitive Firewall (user control first)
The Topos Engine acts as a Cognitive Firewall: it helps ensure only the right information is used and shared.
| Cognitive Firewall principle | What that means in practice |
|---|---|
| 🔒 Permission-aware | Requests are evaluated against your access rules before data is returned |
| 🎯 Precision over data dumps | The engine is designed to return only what is needed, not your entire history |
| 👁️ Transparent behavior | Boundaries and limits are explicit so sharing stays understandable and controllable |
🤖 Core ML tools in the Engine
Topos Engine uses both local and model-hub paths so users can choose flexibility and control:
| ML tool | Role in the workflow | User-facing benefit |
|---|---|---|
| 🦙 Ollama | Local model execution path | Keep more processing on-device and reduce external dependency |
| 🤗 Hugging Face | Model and backend integration path | Access broad model capabilities for enrichment and analysis tasks |
Why this split matters
- 🏠 Your data lives in one durable place (Database)
- ⚙️ Intelligence and policy decisions happen in a separate runtime (Engine)
- 🛡️ The Cognitive Firewall model helps protect context while still enabling useful AI actions
- 🔄 You can evolve processing/model strategy without changing your core stored memory
Shared runtime contracts
The shared/ package in this repo is part of the node runtime contract. It contains common schema and filtering definitions used by both API and engine paths.
Quick Start
1) Install
uv tool install topos-node
2) Configure
Topos Node requires a TOPOS_KEY.
topos-node --set-topos-key "<YOUR_TOPOS_KEY>"
This stores your key in:
~/.topos/.env
Optional:
TOPOS_CONTROL_PLANE_URLif you need a non-default endpoint
3) Run
topos-node --host 0.0.0.0 --port 9000
4) Verify
curl http://localhost:9000/health
Common Commands
# Start node
topos-node
# Save your TOPOS_KEY for future runs
topos-node --set-topos-key "<YOUR_TOPOS_KEY>"
# Discover available local databases and exit
topos-node --discover
# Use custom database path
topos-node --db-path /path/to/topos.sqlite
# Bind custom host and port
topos-node --host 127.0.0.1 --port 9100
Upgrade or Uninstall
# Upgrade to latest
uv tool upgrade topos-node
# Remove
uv tool uninstall topos-node
Security and Privacy Notes
- Do not commit
topos/.envor any real credentials. - Keep your
TOPOS_KEYprivate. - Review
env.examplefor available configuration options.
Developing Locally
uv sync --extra engine
just run
Run tests:
pip install -e ".[dev,engine]"
pytest tests -m "public and not e2e" -q
Contributing
See CONTRIBUTING.md for:
- public vs private test lanes
- where deployment scripts now live
- contribution scope and security expectations
License
Apache License 2.0. See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file topos_node-1.0.2.tar.gz.
File metadata
- Download URL: topos_node-1.0.2.tar.gz
- Upload date:
- Size: 459.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f0417bf1ca9570c4137a10b7d82ac9daf5a4b05fad66ac4e5b34b66297a175a
|
|
| MD5 |
a7576d2ecc0ce85357a836b06c037676
|
|
| BLAKE2b-256 |
35a94b8675933b5b5d041347a97f062643946b25e16ba4ab597acdbee8c05eb0
|
Provenance
The following attestation bundles were made for topos_node-1.0.2.tar.gz:
Publisher:
publish.yml on dialoguesai/topos
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
topos_node-1.0.2.tar.gz -
Subject digest:
8f0417bf1ca9570c4137a10b7d82ac9daf5a4b05fad66ac4e5b34b66297a175a - Sigstore transparency entry: 2026720003
- Sigstore integration time:
-
Permalink:
dialoguesai/topos@5c4af45e520ea8bc855c5d434cbc07254f7f2c65 -
Branch / Tag:
refs/tags/v1.0.2 - Owner: https://github.com/dialoguesai
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5c4af45e520ea8bc855c5d434cbc07254f7f2c65 -
Trigger Event:
push
-
Statement type:
File details
Details for the file topos_node-1.0.2-py3-none-any.whl.
File metadata
- Download URL: topos_node-1.0.2-py3-none-any.whl
- Upload date:
- Size: 611.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b9618a2c3c1ff54abe61505f745e1986300c577cf3535f711e804ce5f061640d
|
|
| MD5 |
4d773a032cd87d50d37fff4dc4692f52
|
|
| BLAKE2b-256 |
41e210148b326452555095444a0a6eacd8c3a11d0da9fc6ba0e0e99b8535fda4
|
Provenance
The following attestation bundles were made for topos_node-1.0.2-py3-none-any.whl:
Publisher:
publish.yml on dialoguesai/topos
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
topos_node-1.0.2-py3-none-any.whl -
Subject digest:
b9618a2c3c1ff54abe61505f745e1986300c577cf3535f711e804ce5f061640d - Sigstore transparency entry: 2026720059
- Sigstore integration time:
-
Permalink:
dialoguesai/topos@5c4af45e520ea8bc855c5d434cbc07254f7f2c65 -
Branch / Tag:
refs/tags/v1.0.2 - Owner: https://github.com/dialoguesai
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5c4af45e520ea8bc855c5d434cbc07254f7f2c65 -
Trigger Event:
push
-
Statement type: