Service endpoints¶
Use this page to connect to Kionga's services from your browser, a notebook, a local tool, or another container, and to register services as connections in the console.
Two sets of addresses¶
- From your machine, services are on
localhostports. Each port can be changed indeploy/.env(for example,GATEWAY_PORT), and ports bind to127.0.0.1unlessKIONGA_BIND_ADDRESSsays otherwise; see Network exposure. - Inside the stack, services reach each other by service name and container
port, for example
http://mlflow:5000orhttp://objectstore:9000. The Jupyter workbench and browser IDE also use these addresses.
Endpoints¶
The credentials are the local stack's development defaults. Production deployments replace all of them; see Choose a deployment.
| Service | From your machine | Inside the stack | Credentials (local defaults) |
|---|---|---|---|
| Landing page | http://localhost:8080 |
http://gateway:8080 |
None |
| Console and API | http://localhost:8080/console.html |
http://gateway:8080 |
admin / mlaiops-local (role from MLAIOPS_LOCAL_ROLE), or single sign-on |
| Dex (single sign-on) | http://localhost:5556/dex |
http://dex:5556/dex |
Test directory password kionga-sso-dev |
| Jupyter workbench | http://localhost:8080/workspace.html?tool=workbench |
http://jupyter:8888 |
Your console session. For diagnostics only: http://127.0.0.1:8888/workspaces/workbench/ with token mlaiops-local (JUPYTER_TOKEN). |
| Browser IDE (optional) | http://localhost:8080/workspace.html?tool=ide |
http://ide:8080 |
Your console session; no published port |
| Langflow canvas (optional) | http://localhost:8080/console.html?view=langflow |
http://langflow:7860 |
Your Kionga console session; no published port |
| MLflow | http://localhost:15000 |
http://mlflow:5000 |
None |
| Prefect | http://localhost:4200 |
http://prefect-server:4200 |
None |
| Langfuse | http://localhost:3000 |
http://langfuse:3000 |
admin@local.dev / mlaiops-local-admin; API keys pk-lf-local-dev / sk-lf-local-dev |
| Object storage (S3 API) | http://localhost:9000 |
http://objectstore:9000 |
mlaiops / mlaiops-local-secret |
| Object storage console | http://localhost:9001 |
Not used inside the stack | Same as the S3 API |
| Kafka | localhost:9092 |
kafka:9092 |
None |
| Kafka REST | http://localhost:8082 |
http://kafka-rest:8082 |
None |
| PostgreSQL (with pgvector) | localhost:5432 |
postgres:5432 |
User mlaiops, password mlaiops-local, database mlaiops |
| Redis (online features) | localhost:6379 |
redis:6379 |
None |
| Feature gateway | http://localhost:8083 |
http://feature-gateway:8083 |
None locally |
| Storage proxy | http://localhost:8084 |
http://storage-proxy:8084 |
None locally |
| Serving manager | http://localhost:8085 |
http://serving-manager:8085 |
None locally |
| Trace proxy (LLM egress) | http://localhost:8081 |
http://trace-proxy:8081 |
None |
| Agent runtime | http://localhost:19000 |
http://agent-runtime:9000 |
None |
Connect from the Jupyter workbench¶
Open the workbench from the console sidebar (Jupyter workbench). It includes:
- The Python SDK (
mlaiops_sdk) with theagentsandhuggingfaceextras, and Kionga's example modules (pipelines,features,realtime,agents). - A terminal (File → New → Terminal) with
git,curland thekiongacommand. - The same
scikit-learnandmlflowversions as the model server image, so a model you train in a notebook serves without version mismatches. - Every connection preset in environment variables:
MLAIOPS_URL,MLFLOW_TRACKING_URI,MLFLOW_S3_ENDPOINT_URLwithAWS_ACCESS_KEY_IDandAWS_SECRET_ACCESS_KEY,MLAIOPS_FEATURE_GATEWAY_URL,KAFKA_REST_URL,PREFECT_API_URL,DATABASE_URL,REDIS_URL, andLANGFUSE_HOST,LANGFUSE_PUBLIC_KEYandLANGFUSE_SECRET_KEY. - The storage buckets mounted under
/workspace/object-store. - A
quickstart.ipynbnotebook that walks through identity, the registry, training with MLflow, model registration, online features and real-time events.
Notebooks are stored in the jupyter-data volume and survive restarts. See
Jupyter workbench.
Connect from tools on your machine¶
| Tool | Settings |
|---|---|
| MLflow client | MLFLOW_TRACKING_URI=http://localhost:15000; for artifacts, MLFLOW_S3_ENDPOINT_URL=http://localhost:9000, AWS_ACCESS_KEY_ID=mlaiops, AWS_SECRET_ACCESS_KEY=mlaiops-local-secret |
S3 clients (AWS CLI, boto3, rclone) |
Endpoint http://localhost:9000, the same keys, path-style addressing |
psql |
psql postgres://mlaiops:mlaiops-local@localhost:5432/mlaiops |
| Kafka clients | Brokers localhost:9092, or REST at http://localhost:8082 |
| Kionga API, SDK and CLI | MLAIOPS_URL=http://localhost:8080 (or your port), authenticated as described in REST API authentication |
Register connections in the console¶
A connection tells Kionga to health-check a service. Open Platform, click Add infrastructure, and enter the service, a name, its address and a credential reference. Kionga tests it immediately and again whenever you click Test.
Kionga runs the check from inside the stack, so use the inside-the-stack addresses:
| Service | Suggested name | Service address | Credential reference |
|---|---|---|---|
| MLflow | local-mlflow |
http://mlflow:5000/health |
none |
| RustFS (local) | local-objectstore |
http://objectstore:9000/health |
none |
| Kafka REST | local-kafka |
http://kafka-rest:8082/topics |
none |
| Langfuse | local-langfuse |
http://langfuse:3000/api/public/health |
none |
| Prefect | local-prefect |
http://prefect-server:4200/api |
none |
| Redis / Feast | local-features |
http://feature-gateway:8083/healthz |
none |
| Kubernetes | kind-cluster |
Your cluster API health URL | env:VARIABLE naming a variable that holds a bearer token |
- For Prefect, enter the API base address; Kionga checks
/api/healthunder it. For OpenFaaS, enter the gateway address; Kionga checks/system/functionswith basic authentication (OPENFAAS_USER, defaultadmin, andOPENFAAS_PASSWORD). For every other type, enter a health endpoint. - The credential reference is
noneorenv:VARIABLE, naming an environment variable set on the gateway. Kionga sends its value as a bearer token. Never paste a secret into the form; Kionga stores only the reference. - Only a
2xxresponse counts as healthy. Redirects, missing routes and authentication failures are reported as failures, with the reason. - You can make a Prefect or OpenFaaS connection the engine for new operations with Use for new operations. Other types only monitor availability.
- Creating, testing and activating connections needs the
infra:Provisionpermission, whichadminandoperatorhave.
Onboarding readiness on the Overview page turns green when a project exists
and healthy mlflow, storage (s3 or rustfs), kafka and kubernetes
connections are registered. The local stack has no Kubernetes cluster, so that
item stays pending unless you connect one, for example a Kind cluster.
Connect more services¶
- A real language model for agents: in
deploy/.env, setMLAIOPS_LLM_BACKEND(openai,anthropicoropenai-compatible), the provider key, and optionallyMLAIOPS_LLM_MODEL, then recreate the agent runtime. Theopenaiandopenai-compatiblebackends go through the trace proxy, so every call is recorded;anthropiccalls Anthropic directly. See LLM providers. - Live models and agents in the real-time examples: set
FRAUD_MODEL_ENDPOINTto a deployed model's endpoint URL andCALLCENTER_AGENT_IDto a deployed agent ID, then rundocker compose -f deploy/compose.yaml up -d realtime-processor. - Serverless functions: connect an OpenFaaS or faasd gateway with
OPENFAAS_URL,OPENFAAS_USERandOPENFAAS_PASSWORD; see Connect OpenFaaS functions.
Use external services¶
Every service address is configuration, so you can replace a bundled service without changing images:
| Replace | With | Set |
|---|---|---|
| RustFS | Amazon S3, Google Cloud Storage or Azure through an S3-compatible API | S3_ENDPOINT, S3_ACCESS_KEY, S3_SECRET_KEY on storage-proxy; MLFLOW_S3_ENDPOINT_URL and AWS_* on mlflow, pipeline-runner and serving-manager |
| PostgreSQL | A managed PostgreSQL | DATABASE_URL on gateway and agent-runtime, and the MLflow and Langfuse database URLs |
| Redis | A managed Redis | REDIS_URL on feature-gateway |
| Kafka | A managed Kafka with a REST proxy | KAFKA_REST_URL wherever it is set |
| LLM provider | Any OpenAI-compatible provider | LLM_UPSTREAM_URL on trace-proxy |
To let teams use their own buckets, see External object storage.
Troubleshooting¶
- A connection shows unhealthy: its address must resolve from inside the
stack. Test it from a temporary container on the stack's network, for example
docker run --rm --network mlaiops_default curlimages/curl -fsS http://mlflow:5000/health. - It works in the console but fails from your laptop, or the reverse: you used
an inside-the-stack address outside the stack, or a
localhostaddress inside it. Swap it using the table above. - It works on this machine but not from another: ports bind to
127.0.0.1by default; see Network exposure. - Several services are down: run
make -C deploy local-upagain (it is safe to repeat), checkmake -C deploy local-status, and run./deploy/scripts/demo-smoke.shto test every capability.
See Troubleshooting for more.