Getting Started¶
The quickest way to run Triton Control is Docker Compose. For active development, run the backend with Python and the frontend with npm.
Docker Compose¶
With Docker installed, start the published image:
docker pull ailabtechtriton/triton-control:v1.2.2
docker tag ailabtechtriton/triton-control:v1.2.2 triton-control:compose
docker compose up --no-build
After the stack starts, open http://localhost:8080 in your browser.
To build from source instead:
docker compose up --build
The backend API is available at http://localhost:8000 and PostgreSQL at
127.0.0.1:5433.
Docker Compose does not provide Kubernetes. Deployments, Development workspaces, managed MLflow, and Argo Workflows are therefore disabled.
Podman Compose¶
With Podman and podman-compose installed, start the published image:
podman pull docker.io/ailabtechtriton/triton-control:v1.2.2
podman tag docker.io/ailabtechtriton/triton-control:v1.2.2 \
localhost/triton-control:compose
podman-compose -f podman-compose.yaml up --no-build
After the stack starts, open http://localhost:8080 in your browser.
To build from source instead:
podman-compose -f podman-compose.yaml up --build
The backend API is available at http://localhost:8000 and PostgreSQL at
127.0.0.1:5433.
Podman Compose does not provide Kubernetes. Deployments, Development workspaces, managed MLflow, and Argo Workflows are therefore disabled.
Kubernetes Quick Start¶
Use Kubernetes when you want to run Triton Control in a shared cluster or close
to production. The Helm chart is in charts/triton-control.
Prerequisites:
- Kubernetes
v1.19or newer. The chart usesnetworking.k8s.io/v1Ingress, which is stable from Kubernetesv1.19. kubectlconfigured for the target cluster.- Helm
v3. - An Ingress controller if
ingress.enabled=true, for example nginx-ingress. - A default StorageClass, or an explicit
postgresql.persistence.storageClass, when using the bundled PostgreSQL database with persistence enabled.
The cluster pulls the published Triton Control image automatically. No local image build, pull, or push is required.
Create a values file for your cluster:
app:
image:
repository: ailabtechtriton/triton-control
tag: "v1.2.2"
secretEnv:
SESSION_SECRET: "replace-me"
JWT_SECRET: "replace-me"
S3_SECRET_ENCRYPTION_KEY: "replace-me"
postgresql:
enabled: true
auth:
database: triton_backend
username: triton
password: "replace-me"
ingress:
enabled: true
className: nginx
hosts:
- host: triton-control.example.com
paths:
frontend:
- path: /
pathType: Prefix
backend:
- path: /api
pathType: Prefix
- path: /auth
pathType: Prefix
- path: /login
pathType: Prefix
- path: /logout
pathType: Prefix
- path: /whoami
pathType: Prefix
Install the chart:
helm upgrade --install triton-control ./charts/triton-control \
--namespace triton-control \
--create-namespace \
-f values-k8s.yaml
For a cluster without Ingress, set ingress.enabled=false and port-forward the
frontend service:
kubectl -n triton-control port-forward svc/triton-control 8080:80
Then open:
http://localhost:8080
Local Development¶
Prerequisites:
- Python
3.12. - Node.js and npm for the frontend.
- Java, Bash, curl, and Python if you run
npm run generate:api; that script runsswagger-codegen-cli.jar.
Start PostgreSQL:
cd triton-backend/postgresql
docker compose up -d
Start the backend:
cd triton-backend
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
python main.py
On Windows PowerShell:
cd triton-backend
python -m venv .venv
.\.venv\Scripts\activate
pip install -e ".[dev]"
python main.py
Start the frontend in a second terminal:
cd triton-frontend
npm ci
npm run generate:api
npm run start:http
Open:
http://localhost:4200
Triton URLs From Docker¶
When Triton Control runs in Docker, 127.0.0.1 inside the app container points to
the app container, not to your host and not to another Triton container.
Use a published host port:
http://host.docker.internal:<published-triton-http-port>
or attach the Triton container to the Compose network:
docker network connect triton-control tritonserver-explicit
Then use:
http://tritonserver-explicit:8000