[](https://github.com/VIPQualityPost/tono/actions/workflows/build.yml) [](https://github.com/VIPQualityPost/tono/actions/workflows/tests.yml)
# tono
tono is a node-based SPM image processing and analysis tool. The main focus is on topographical measurements.
It is heavily inspired by [Gwyddion](https://gwyddion.net/), one of my favorite scientific FOSS programs on the web.
## Quick start
Install a local binary from the Releases section, or run locally:
```bash
# Installation
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]"
npm install
# Running the servers
npm run backend # terminal 1 — Python server at http://127.0.0.1:8188
npm run dev # terminal 2 — Vite dev server, open the URL it prints
```
## Self-hosting
```bash
git clone https://github.com/VIPQualityPost/tono.git && cd tono
python -m venv .venv && source .venv/bin/activate
pip install -e .
cd frontend && npm ci && npm run build && cd ..
TONO_HOST=0.0.0.0 python -m backend.main
```
See [Self-Hosting](docs/self-hosting.md) for reverse proxy setup, environment variables, and configuration.
## Docs
- [Building](docs/building.md) — setup, dev mode, web deployment, and native desktop builds for macOS, Linux, and Windows
- [Self-Hosting](docs/self-hosting.md) — deploying tono on a server
- [Plugins](docs/plugins.md) — writing and uploading custom node plugins
- [Testing](docs/testing.md) — running tests and writing new ones
## Project layout
```text
tono/
backend/ Python server, execution engine, nodes
frontend/ React/Vite app
plugins/ User plugin files (.py)
tests/ Python tests
docs/ Documentation
desktop.py Desktop launcher
scripts/ Build scripts (macOS, Linux, Windows)
```