@@ -60,36 +60,79 @@ HOSTNAME=localhost
6060HTTP_PORT=80
6161HTTPS_PORT=443
6262SSL_ENABLED=false
63- SSL_CERT_FILE= # must be located in ./certs, defaults to "<hostname>.pem"
64- SSL_KEY_FILE= # must be located in ./certs, defaults to "<hostname>.key"
63+ # must be located in ./certs, defaults to "<hostname>.pem"
64+ SSL_CERT_FILE=
65+ # must be located in ./certs, defaults to "<hostname>.key"
66+ SSL_KEY_FILE=
6567
6668INITIAL_ROOT_PASSWORD=root
6769INITIAL_ROOT_MAIL=root@code0.tech
68- INITIAL_RUNTIME_TOKEN= # can be used to create a global runtime with given token
70+ # can be used to create a global runtime with given token
71+ INITIAL_RUNTIME_TOKEN=runtime
6972
7073# Runtime config
7174AQUILA_SAGITTARIUS_URL=http://nginx:80
72- AQUILA_SAGITTARIUS_TOKEN=
75+ AQUILA_SAGITTARIUS_TOKEN=runtime
7376DRACO_REST_PORT=8084
77+ DRACO_REST_HOST=127.0.0.1
7478
7579TAURUS_AQUILA_TOKEN=taurus
7680DRACO_REST_AQUILA_TOKEN=draco-rest
7781DRACO_CRON_AQUILA_TOKEN=draco-cron
7882
83+ AQUILA_GRPC_CONNECT_TIMEOUT_SECS=2
84+ AQUILA_GRPC_REQUEST_TIMEOUT_SECS=10
85+ SAGITTARIUS_UNARY_RPC_TIMEOUT_SECS=10
86+
7987# Active services
80- COMPOSE_PROFILES=ide,runtime
88+ # Available services: ide, runtime, ide_velorum (AI orchestrator)
89+ COMPOSE_PROFILES=ide,runtime,ide_velorum
8190
8291# Image config
8392IMAGE_REGISTRY=registry.gitlab.com/code0-tech/packages
8493IMAGE_TAG=
85- IMAGE_EDITION= # ce or ee
94+ # ce or ee
95+ IMAGE_EDITION=
96+
97+ # Sagittarius config
98+ # change these to new secret values
99+ SAGITTARIUS_DB_ENCRYPTION_PRIMARY_KEY=YzaMv4bXYK84unYIQI4Ms4sV3ucbvWs0
100+ SAGITTARIUS_DB_ENCRYPTION_DETERMINISTIC_KEY=jgTaxTqzM15ved1S8HdXrqrjfCfF5R0h
101+ SAGITTARIUS_DB_ENCRYPTION_KEY_DERIVATION_SALT=Z6zcLTgobXLYjXUslRsLMKxvXKq3j6DJ
102+ SAGITTARIUS_RAILS_SECRET_KEY_BASE=MVMD6CtQwEWrQ28TdokQakbG2FG5abOn
103+
104+ # Velorum config
105+ # VELORUM_ENABLED=false (override, default checks if COMPOSE_PROFILES contains ide_velorum)
106+ VELORUM_HOST=velorum
107+ VELORUM_PORT=50051
108+ # change to a random value
109+ VELORUM_JWT_SECRET=088cfc7a7fc2b07696d8ee5e1ea9d642
110+
111+ # example, GPT5 in the variable name can be changed to other values. This set of variables can be repeated multiple times
112+ # VELORUM_MODEL_GPT5_IDENTIFIER=gpt-5
113+ # VELORUM_MODEL_GPT5_NAME='GPT 5'
114+ # VELORUM_MODEL_GPT5_CAPABILITIES=explain,generate
115+ # if using a non-default base-url
116+ # VELORUM_MODEL_GPT5_API=
117+ # or openrouter/openai/gpt-5, etc depending on the provider
118+ # VELORUM_MODEL_GPT5_PROVIDER=openai/gpt-5
119+ # authentication token
120+ # VELORUM_MODEL_GPT5_AUTH=your-secret-token
121+ # token cost multiplier for this model
122+ # VELORUM_MODEL_GPT5_TOKEN_COST=1
86123
87124# Internal config options
88125SAGITTARIUS_RAILS_HOST=sagittarius-rails-web
89126SAGITTARIUS_RAILS_PORT=3000
127+ SAGITTARIUS_CABLE_HOST=sagittarius-rails-cable
128+ SAGITTARIUS_CABLE_PORT=3000
90129SAGITTARIUS_GRPC_HOST=sagittarius-grpc
91130SAGITTARIUS_GRPC_PORT=50051
92131SAGITTARIUS_LOG_LEVEL=info
132+ # web threads and grpc threads must be lower than db pool size
133+ SAGITTARIUS_RAILS_WEB_THREADS=3
134+ SAGITTARIUS_RAILS_GRPC_THREADS=6
135+ SAGITTARIUS_DB_POOL_SIZE=8
93136SCULPTOR_HOST=sculptor
94137SCULPTOR_PORT=3000
95138POSTGRES_HOST=postgres
@@ -106,6 +149,20 @@ POSTGRES_PASSWORD=sagittarius
106149- ` INITIAL_ROOT_PASSWORD ` : The secure password for your first login.
107150- ` IMAGE_EDITION ` : Set this to ce for the Community Edition or ee for the Enterprise Edition. This
108151 determines which Docker images will be pulled.
152+ - ` COMPOSE_PROFILES ` : Controls which services are started. Available profiles are ` ide ` , ` runtime ` and
153+ ` ide_velorum ` (AI orchestrator). Remove ` ide_velorum ` if you don't want to run the AI orchestrator.
154+
155+ ### Secrets
156+
157+ The following values must be replaced with newly generated secrets before going to production. The defaults
158+ in the template are only meant to make local testing easier:
159+
160+ - ` SAGITTARIUS_DB_ENCRYPTION_PRIMARY_KEY ` , ` SAGITTARIUS_DB_ENCRYPTION_DETERMINISTIC_KEY ` ,
161+ ` SAGITTARIUS_DB_ENCRYPTION_KEY_DERIVATION_SALT ` : Keys used to encrypt sensitive data in the Sagittarius
162+ database.
163+ - ` SAGITTARIUS_RAILS_SECRET_KEY_BASE ` : Base secret used by Rails to sign and encrypt session data.
164+ - ` VELORUM_JWT_SECRET ` : Secret used by Velorum to sign JWTs. Only required when the ` ide_velorum ` profile is
165+ active.
109166
110167### Setup initial runtime
111168
@@ -181,4 +238,82 @@ docker compose up -d
181238
182239</Steps >
183240
241+ ## Setup Velorum (AI orchestrator)
242+
243+ Velorum is the AI orchestrator that powers CodeZero's AI features. It exposes a unified interface to one or
244+ more language models, which are configured purely through environment variables.
245+
246+ <Steps >
247+ <Step >
248+
249+ ## Enable the Velorum profile
250+
251+ Make sure the ` ide_velorum ` profile is part of ` COMPOSE_PROFILES ` in your ` .env ` file:
252+
253+ ``` bash
254+ COMPOSE_PROFILES=ide,runtime,ide_velorum
255+ ```
256+
257+ You can opt out of the AI orchestrator at any time by removing ` ide_velorum ` from the list and restarting
258+ the containers. To force-disable Velorum even when the profile is active, set ` VELORUM_ENABLED=false ` .
259+
260+ </Step >
261+ <Step >
262+
263+ ## Configure the Velorum service
264+
265+ The following variables configure the Velorum service itself:
266+
267+ - ` VELORUM_HOST ` : The hostname Sagittarius uses to reach Velorum. Defaults to the in-network ` velorum `
268+ service.
269+ - ` VELORUM_PORT ` : The gRPC port Velorum listens on (default ` 50051 ` ).
270+ - ` VELORUM_JWT_SECRET ` : Secret used to sign JWTs issued by Velorum. Replace the value from the template
271+ with a freshly generated random string.
272+
273+ </Step >
274+ <Step >
275+
276+ ## Configure AI models
277+
278+ Each model Velorum should expose is configured through a set of ` VELORUM_MODEL_<SLOT>_* ` variables. The
279+ ` <SLOT> ` part of the variable name is a free-form identifier you choose (e.g. ` GPT5 ` , ` CLAUDE ` , ` LLAMA ` )
280+ and is used only to group the variables for one model together. Repeat the set of variables for every
281+ model you want to register.
282+
283+ ``` bash
284+ VELORUM_MODEL_GPT5_IDENTIFIER=gpt-5
285+ VELORUM_MODEL_GPT5_NAME=' GPT 5'
286+ VELORUM_MODEL_GPT5_CAPABILITIES=explain,generate
287+ # if using a non-default base-url
288+ VELORUM_MODEL_GPT5_API=
289+ # or openrouter/openai/gpt-5, etc depending on the provider
290+ VELORUM_MODEL_GPT5_PROVIDER=openai/gpt-5
291+ VELORUM_MODEL_GPT5_AUTH=your-secret-token
292+ VELORUM_MODEL_GPT5_TOKEN_COST=1
293+ ```
294+
295+ - ` IDENTIFIER ` : Stable identifier used by the rest of CodeZero to reference this model.
296+ - ` NAME ` : Human-readable name shown in the dashboard.
297+ - ` CAPABILITIES ` : Comma-separated list of capabilities this model supports (e.g. ` explain ` , ` generate ` ).
298+ - ` API ` : Optional. Override when the provider is reached through a non-default base URL.
299+ - ` PROVIDER ` : Provider/model string in the format expected by Velorum, e.g. ` openai/gpt-5 ` or
300+ ` openrouter/openai/gpt-5 ` .
301+ - ` AUTH ` : Authentication token used to call the provider.
302+ - ` TOKEN_COST ` : Token cost multiplier applied to usage of this model.
303+
304+ </Step >
305+ <Step >
306+
307+ ## Finalize the setup
308+
309+ After updating the ` .env ` file, restart the containers so Velorum and Sagittarius pick up the new
310+ configuration:
311+
312+ ``` bash
313+ docker compose up -d
314+ ```
315+
316+ </Step >
317+ </Steps >
318+
184319Your CodeZero instance is now fully configured and ready to manage your enterprise flows and organizational structures.
0 commit comments