Documentation
Documentation/Build and operate

Local development and deployment

Understand the runtime and start a local instance from an authorized source checkout.

On this page

The runtime

nondro runs a Python web application, a background worker, and a PostgreSQL control-plane database. The worker processes conversations, invocations, scheduled flows, and other queued jobs. Source systems are connected separately and remain under the organization's control.

The following setup is for local development from an authorized source checkout. It requires Python 3.11 or later and a running PostgreSQL server. Prepare an empty database and a database role permitted to apply its migrations before continuing.

Install and configure

Create a virtual environment and install the package. Configure NONDRO_DB_URL for your prepared PostgreSQL database using a postgresql+psycopg2 connection URL. Supply that value through your local environment or an untracked .env file, and keep credentials out of version control.

Set NONDRO_ENV=dev, NONDRO_BASE_URL=http://localhost:8009, and an organization namespace of your choice. Set NONDRO_SOURCES_ENV_PATH to a writable, private local configuration file. Use the same settings in the web and worker processes.

bash
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
# Configure NONDRO_DB_URL and the local settings above before proceeding.
alembic upgrade head
nondro init-db
nondro user-add you@example.org "Your Name" --role admin

Start the web application and worker

Start the web application, then run the worker in a second terminal with the same virtual environment and settings. Open http://localhost:8009/login and use the one-time password printed by user-add. The first sign-in requires a password change.

A model profile is needed for conversation features. Configure it through the operator's model settings before trying the AI workflow. GET /health reports whether the web process is responding; it is not an end-to-end test of source connections or worker execution.

bash
# Terminal 1
python -m uvicorn nondro.app:app --host 127.0.0.1 --port 8009

# Terminal 2
python -m nondro.worker

Prepare a real instance

For a shared deployment, configure HTTPS, a unique session secret, real accounts, database and file backups, and the instance's actual public URL. Disable development login. Preserve the organization namespace and logical identities when moving an existing instance.

Use the repository's deployment configuration and operator runbook for environment-specific setup, migration, source reachability, and identity-provider callbacks. A local startup is not a production readiness check.