Installation & Start

There are two ways to run Orinth: the packaged macOS app, or the source checkout. They run the same backend and frontend — the app is a supervisor around the same two servers, so there is no second implementation to keep in sync.

Option A — the macOS app

Download the .dmg, drag Orinth.app to /Applications, and double-click. No terminal, no make.

The bundle is universal — one file for both Apple silicon and Intel Macs.

Because the .dmg ships source rather than bundled runtimes, first launch downloads and installs the ML environment (roughly 2.7 GB, 10–20 minutes, needs a network connection) with per-step progress on screen. Later launches start in seconds.

The build is ad-hoc signed but not notarized, so the first launch on a machine that did not build it needs one manual Gatekeeper approval: right-click the app, choose Open, then confirm.

Everything the app generates lives under ~/Library/Application Support/, never in a repo checkout.

Option B — from source

Prerequisites

  • Python 3.11 and uv
  • Node and pnpm
  • make

Quickstart

git clone https://github.com/L007/orinth.git
cd orinth

# 1. copy the environment templates
cp .env.example .env
cp frontend/.env.example frontend/.env.local

# 2. verify prerequisites
make doctor

# 3. start backend :8000 and frontend :3000 together
make dev

make dev starts both servers with interleaved logs in one terminal. It fails fast if port 8000 or 3000 is already in use, and Ctrl-C cleanly stops both processes.

The API docs are served at http://localhost:8000/docs; the app at http://localhost:3000.

Running the servers separately

# backend
cd backend
uv venv --python 3.11
source .venv/bin/activate
uv sync
uv run uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

# frontend
cd frontend
pnpm install
pnpm dev

Environment variables

Backend settings live in the root .env:

Variable Purpose
MODELS_DIR, DATASETS_DIR, STORAGE_DIR Local paths for reference assets and generated runtime artifacts.
DATABASE_URL SQLite connection string.
BACKEND_CORS_ORIGINS Origins allowed to call the API directly. Defaults to http://localhost:3000.
HUGGINGFACE_HUB_TOKEN (alias HF_TOKEN) Only needed for private or gated Hugging Face models.

Frontend settings live in frontend/.env.local:

Variable Purpose
BACKEND_PROXY_ORIGIN Where the dev server proxies /api/* and /media/*. Defaults to http://127.0.0.1:8000.
NEXT_PUBLIC_BACKEND_URL Leave unset for the normal local setup. Set it only when deliberately exposing the backend at a separate public URL.

Quality gates

Before committing, run every documented gate in one shot:

make check

check runs backend lint (ruff) and the fast backend test suite, then frontend typecheck, lint, and build, stopping at the first failure. The individual targets — make lint-backend, make test, make typecheck, make lint, make build — are available on their own.

Building the desktop app

make desktop

The output is a universal .dmg under desktop/src-tauri/target/universal-apple-darwin/release/bundle/dmg/.