Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 101 additions & 0 deletions content/general/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,107 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [[0.0.0-canary-2651542634-50d3520bc2ff01a6c1d022ed69a48417bbd4259d]](https://github.com/code0-tech/codezero/releases/tag/0.0.0-canary-2651542634-50d3520bc2ff01a6c1d022ed69a48417bbd4259d) - 2026-07-04

### Added

- AI subscription endpoint streaming a generated flow back via Velorum from a flow ID, prompt and model: [#1012](https://github.com/code0-tech/sagittarius/issues/1012)
- Query to fetch all available AI models via Velorum gRPC: [#1013](https://github.com/code0-tech/sagittarius/issues/1013)
- Typed response for AI Subscription Flow: [#1049](https://github.com/code0-tech/sagittarius/issues/1049)
- New module structure — flow types, functions and data types are now retrieved and linked per module: [#934](https://github.com/code0-tech/sagittarius/issues/934)
- Mutatable module configurations linked to NamespaceProjectRuntimeAssignment, exposed via GraphQL: [#983](https://github.com/code0-tech/sagittarius/issues/983)
- Module update endpoint support in Aquila: [#311](https://github.com/code0-tech/aquila/issues/311)
- Module properties included in Draco runtime: [#212](https://github.com/code0-tech/draco/issues/212)
- Module properties included in Taurus: [#186](https://github.com/code0-tech/taurus/issues/186)
- Module structure implemented in code0-flow: [#147](https://github.com/code0-tech/code0-flow/issues/147)
- Module structure implemented in code0-definition with updated folder layout and reader: [#333](https://github.com/code0-tech/code0-definition/issues/333)
- Display of all available modules on runtime column and within settings: [#195](https://github.com/code0-tech/sculptor/issues/195)
- Module configuration page within project page: [#197](https://github.com/code0-tech/sculptor/issues/197)
- Module grouping in next node dialog: [#202](https://github.com/code0-tech/sculptor/issues/202)
- Auth support for the REST adapter: [#246](https://github.com/code0-tech/draco/issues/246)
- External host and URL env variables as endpoint definition: [#243](https://github.com/code0-tech/draco/issues/243)
- GraphQL subscription to run a test execution, streaming until a result is received, with no persistence: [#932](https://github.com/code0-tech/sagittarius/issues/932)
- Test run implementation — select runtime, pass flow body, return results via GraphQL subscription: [#422](https://github.com/code0-tech/sagittarius/issues/422)
- Persistence of test runs in database including query and delete mutation: [#423](https://github.com/code0-tech/sagittarius/issues/423)
- Receiving, storing and querying execution results: [#933](https://github.com/code0-tech/sagittarius/issues/933)
- Node or function identifier added to execution results: [#1023](https://github.com/code0-tech/sagittarius/issues/1023), [#220](https://github.com/code0-tech/taurus/issues/220)
- Taurus handles test executions and parses back an execution result: [#185](https://github.com/code0-tech/taurus/issues/185)
- Taurus handles SubFlows with settings, default values and hidden flags: [#184](https://github.com/code0-tech/taurus/issues/184)
- removed_at field on FlowTypeSetting for safe soft-deletion: [#812](https://github.com/code0-tech/sagittarius/issues/812)
- Option to parse FunctionDefinitions over gRPC: [#881](https://github.com/code0-tech/sagittarius/issues/881)
- ActionStatus added to RuntimeStatus: [#266](https://github.com/code0-tech/tucana/issues/266)
- FlowTypeIdentifier added to AdapterConfiguration: [#261](https://github.com/code0-tech/tucana/issues/261)
- cast field for NodeParameters: [#273](https://github.com/code0-tech/tucana/issues/273)
- design field on RuntimeFunction and Function: [#270](https://github.com/code0-tech/tucana/issues/270)
- NodeFunctionIdWrapper as a possible NodeValue for parameters: [#271](https://github.com/code0-tech/tucana/issues/271)
- definition_source set by DataTypeService: [#144](https://github.com/code0-tech/code0-flow/issues/144)
- Action prefix for definition source in Aquila: [#355](https://github.com/code0-tech/aquila/issues/355)
- Overwrite of definition source from Actions to its identifier: [#306](https://github.com/code0-tech/aquila/issues/306)
- Input type as parameter for flow types: [#330](https://github.com/code0-tech/code0-definition/issues/330)
- Function definitions added in code0-definition: [#344](https://github.com/code0-tech/code0-definition/issues/344)
- Aquila gRPC split into Dynamic and Static server: [#299](https://github.com/code0-tech/aquila/issues/299)
- ActionCable setup for GraphQL subscriptions: [#357](https://github.com/code0-tech/sagittarius/issues/357)
- Aquila flags runtime status for services that are not responding: [#312](https://github.com/code0-tech/aquila/issues/312)
- Type input schema extraction in Triangulum: [#77](https://github.com/code0-tech/triangulum/issues/77)
- Sub flow suggestions in Triangulum: [#76](https://github.com/code0-tech/triangulum/issues/76)
- Schema extraction based on type in Triangulum: [#90](https://github.com/code0-tech/triangulum/issues/90)
- Select component in Pictor: [#686](https://github.com/code0-tech/pictor/issues/686)
- Error feedback strategy for Taurus — standardised error codes and types for denied requests: [#153](https://github.com/code0-tech/taurus/issues/153)
- External few-shot configuration in Velorum: [#9](https://github.com/code0-tech/velorum/issues/9)
- Primitive inputs (Boolean, Number, Text textarea) in sculptor: [#198](https://github.com/code0-tech/sculptor/issues/198)
- Select type input in sculptor: [#199](https://github.com/code0-tech/sculptor/issues/199)
- Execution results view in sculptor: [#193](https://github.com/code0-tech/sculptor/issues/193)
- New suggestion concept — tab system for filtering by type and definition source with search: [#184](https://github.com/code0-tech/sculptor/issues/184)
- New suggestions for SubFlows in sculptor: [#127](https://github.com/code0-tech/sculptor/issues/127)
- License management page in sculptor: [#228](https://github.com/code0-tech/sculptor/issues/228)
- Refactored NamespaceLicense for instance-level self-managed EE licensing, with new GraphQL mutations and queries: [#754](https://github.com/code0-tech/sagittarius/issues/754)
- Definitions received over module layer in sculptor: [#194](https://github.com/code0-tech/sculptor/issues/194)

### Changed

- Merged Execution and Test Execution in Aquila and Taurus: [#337](https://github.com/code0-tech/aquila/issues/337), [#207](https://github.com/code0-tech/taurus/issues/207)
- Reworked HTTP functions — removed http::request::create and http::response::create, objects resolved into fields: [#325](https://github.com/code0-tech/code0-definition/issues/325)
- Reworked REST flow type, REST and HTTP functions: [#359](https://github.com/code0-tech/code0-definition/issues/359), [#231](https://github.com/code0-tech/taurus/issues/231), [#205](https://github.com/code0-tech/taurus/issues/205)
- Adjusted few-shots to current definition def-0.0.28 in Velorum: [#14](https://github.com/code0-tech/velorum/issues/14)
- Runtime status changed to a heartbeat: [#213](https://github.com/code0-tech/draco/issues/213), [#187](https://github.com/code0-tech/taurus/issues/187)
- NodeFunctionIdWrapper replaced with SubFlow: [#931](https://github.com/code0-tech/sagittarius/issues/931), [#45](https://github.com/code0-tech/triangulum/issues/45), [#44](https://github.com/code0-tech/triangulum/issues/44)
- RuntimeStatusService updated to latest Tucana version: [#970](https://github.com/code0-tech/sagittarius/issues/970)
- Test executions reworked to match new available interfaces in Tucana: [#285](https://github.com/code0-tech/tucana/issues/285)
- Interface adjusted to new RuntimeError strategy in Tucana: [#279](https://github.com/code0-tech/tucana/issues/279)
- JSON input reworked in sculptor: [#200](https://github.com/code0-tech/sculptor/issues/200)
- EditorInput reworked in Pictor: [#687](https://github.com/code0-tech/pictor/issues/687)
- Runtime assignment is now set as primary directly in sculptor: [#190](https://github.com/code0-tech/sculptor/issues/190)
- Definition folder names updated in Reticulum (cron → draco_cron, rest → draco_rest, standard → taurus): [#653](https://github.com/code0-tech/reticulum/issues/653)
- Reticulum env updated — root password, provider, default profile and runtime token: [#801](https://github.com/code0-tech/reticulum/issues/801), [#802](https://github.com/code0-tech/reticulum/issues/802), [#803](https://github.com/code0-tech/reticulum/issues/803), [#808](https://github.com/code0-tech/reticulum/issues/808)
- New db fields for parameters and runtime parameters based on new Tucana version: [#890](https://github.com/code0-tech/sagittarius/issues/890)
- Telescopium set up for Taurus: [#122](https://github.com/code0-tech/taurus/issues/122)
- Aquila Status Service temporarily deactivated to eliminate UNIMPLEMENTED spam logs in Sagittarius: [#359](https://github.com/code0-tech/aquila/issues/359)
- Documentation added for Aquila Action Service and service structure: [#269](https://github.com/code0-tech/aquila/issues/269)
- Outdated links removed from Aquila README: [#319](https://github.com/code0-tech/aquila/issues/319)
- Postgres 18 update: [#920](https://github.com/code0-tech/sagittarius/issues/920)

### Removed

- Runtime features table, model, factories and related GraphQL types: [#935](https://github.com/code0-tech/sagittarius/issues/935), [#286](https://github.com/code0-tech/tucana/issues/286)
- Infinity function dropped: [#210](https://github.com/code0-tech/taurus/issues/210), [#353](https://github.com/code0-tech/code0-definition/issues/353)

### Fixed

- GenerationFlowSerializer incorrectly auto-generating a next_node_id, causing infinite loops in the flow builder: [#1058](https://github.com/code0-tech/sagittarius/issues/1058)
- Null values not allowed in flow setting values: [#1066](https://github.com/code0-tech/sagittarius/issues/1066)
- Module config mutation producing incorrect results: [#1003](https://github.com/code0-tech/sagittarius/issues/1003)
- Execution gRPC endpoint losing date information: [#1014](https://github.com/code0-tech/sagittarius/issues/1014)
- Service identified by token alone instead of identifier and token: [#307](https://github.com/code0-tech/aquila/issues/307)
- Return function reference suggestion and schema extraction not working in Triangulum: [#95](https://github.com/code0-tech/triangulum/issues/95)
- Undefined type in a union resulting in a generic schema in Triangulum: [#108](https://github.com/code0-tech/triangulum/issues/108)
- Node param type null not falling back to function param type in Triangulum: [#110](https://github.com/code0-tech/triangulum/issues/110)
- Triangulum validation failing without any error information: [#99](https://github.com/code0-tech/triangulum/issues/99)
- Action execution not handled correctly in Taurus: [#229](https://github.com/code0-tech/taurus/issues/229)
- Invalid signature in rest::control::respond in Taurus: [#235](https://github.com/code0-tech/taurus/issues/235)
- Rest Response Function Definition having incorrect signature: [#361](https://github.com/code0-tech/code0-definition/issues/361)
- Rest Auth Type missing undefined option: [#363](https://github.com/code0-tech/code0-definition/issues/363)
- JSON conversion of infinite value causing a panic in Rust: [#309](https://github.com/code0-tech/tucana/issues/309)

## [[0.0.0-canary-2479774825-5f30e1cf348478a20d0d708f31e863f5e521b368]](https://github.com/code0-tech/codezero/releases/tag/0.0.0-canary-2479774825-5f30e1cf348478a20d0d708f31e863f5e521b368) - 2026-04-25

### Added
Expand Down
147 changes: 141 additions & 6 deletions content/general/install.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -60,36 +60,79 @@ HOSTNAME=localhost
HTTP_PORT=80
HTTPS_PORT=443
SSL_ENABLED=false
SSL_CERT_FILE= # must be located in ./certs, defaults to "<hostname>.pem"
SSL_KEY_FILE= # must be located in ./certs, defaults to "<hostname>.key"
# must be located in ./certs, defaults to "<hostname>.pem"
SSL_CERT_FILE=
# must be located in ./certs, defaults to "<hostname>.key"
SSL_KEY_FILE=

INITIAL_ROOT_PASSWORD=root
INITIAL_ROOT_MAIL=root@code0.tech
INITIAL_RUNTIME_TOKEN= # can be used to create a global runtime with given token
# can be used to create a global runtime with given token
INITIAL_RUNTIME_TOKEN=runtime

# Runtime config
AQUILA_SAGITTARIUS_URL=http://nginx:80
AQUILA_SAGITTARIUS_TOKEN=
AQUILA_SAGITTARIUS_TOKEN=runtime
DRACO_REST_PORT=8084
DRACO_REST_HOST=127.0.0.1

TAURUS_AQUILA_TOKEN=taurus
DRACO_REST_AQUILA_TOKEN=draco-rest
DRACO_CRON_AQUILA_TOKEN=draco-cron

AQUILA_GRPC_CONNECT_TIMEOUT_SECS=2
AQUILA_GRPC_REQUEST_TIMEOUT_SECS=10
SAGITTARIUS_UNARY_RPC_TIMEOUT_SECS=10

# Active services
COMPOSE_PROFILES=ide,runtime
# Available services: ide, runtime, ide_velorum (AI orchestrator)
COMPOSE_PROFILES=ide,runtime,ide_velorum

# Image config
IMAGE_REGISTRY=registry.gitlab.com/code0-tech/packages
IMAGE_TAG=
IMAGE_EDITION= # ce or ee
# ce or ee
IMAGE_EDITION=

# Sagittarius config
# change these to new secret values
SAGITTARIUS_DB_ENCRYPTION_PRIMARY_KEY=YzaMv4bXYK84unYIQI4Ms4sV3ucbvWs0
SAGITTARIUS_DB_ENCRYPTION_DETERMINISTIC_KEY=jgTaxTqzM15ved1S8HdXrqrjfCfF5R0h
SAGITTARIUS_DB_ENCRYPTION_KEY_DERIVATION_SALT=Z6zcLTgobXLYjXUslRsLMKxvXKq3j6DJ
SAGITTARIUS_RAILS_SECRET_KEY_BASE=MVMD6CtQwEWrQ28TdokQakbG2FG5abOn

# Velorum config
# VELORUM_ENABLED=false (override, default checks if COMPOSE_PROFILES contains ide_velorum)
VELORUM_HOST=velorum
VELORUM_PORT=50051
# change to a random value
VELORUM_JWT_SECRET=088cfc7a7fc2b07696d8ee5e1ea9d642

# example, GPT5 in the variable name can be changed to other values. This set of variables can be repeated multiple times
# VELORUM_MODEL_GPT5_IDENTIFIER=gpt-5
# VELORUM_MODEL_GPT5_NAME='GPT 5'
# VELORUM_MODEL_GPT5_CAPABILITIES=explain,generate
# if using a non-default base-url
# VELORUM_MODEL_GPT5_API=
# or openrouter/openai/gpt-5, etc depending on the provider
# VELORUM_MODEL_GPT5_PROVIDER=openai/gpt-5
# authentication token
# VELORUM_MODEL_GPT5_AUTH=your-secret-token
# token cost multiplier for this model
# VELORUM_MODEL_GPT5_TOKEN_COST=1

# Internal config options
SAGITTARIUS_RAILS_HOST=sagittarius-rails-web
SAGITTARIUS_RAILS_PORT=3000
SAGITTARIUS_CABLE_HOST=sagittarius-rails-cable
SAGITTARIUS_CABLE_PORT=3000
SAGITTARIUS_GRPC_HOST=sagittarius-grpc
SAGITTARIUS_GRPC_PORT=50051
SAGITTARIUS_LOG_LEVEL=info
# web threads and grpc threads must be lower than db pool size
SAGITTARIUS_RAILS_WEB_THREADS=3
SAGITTARIUS_RAILS_GRPC_THREADS=6
SAGITTARIUS_DB_POOL_SIZE=8
SCULPTOR_HOST=sculptor
SCULPTOR_PORT=3000
POSTGRES_HOST=postgres
Expand All @@ -106,6 +149,20 @@ POSTGRES_PASSWORD=sagittarius
- `INITIAL_ROOT_PASSWORD`: The secure password for your first login.
- `IMAGE_EDITION`: Set this to ce for the Community Edition or ee for the Enterprise Edition. This
determines which Docker images will be pulled.
- `COMPOSE_PROFILES`: Controls which services are started. Available profiles are `ide`, `runtime` and
`ide_velorum` (AI orchestrator). Remove `ide_velorum` if you don't want to run the AI orchestrator.

### Secrets

The following values must be replaced with newly generated secrets before going to production. The defaults
in the template are only meant to make local testing easier:

- `SAGITTARIUS_DB_ENCRYPTION_PRIMARY_KEY`, `SAGITTARIUS_DB_ENCRYPTION_DETERMINISTIC_KEY`,
`SAGITTARIUS_DB_ENCRYPTION_KEY_DERIVATION_SALT`: Keys used to encrypt sensitive data in the Sagittarius
database.
- `SAGITTARIUS_RAILS_SECRET_KEY_BASE`: Base secret used by Rails to sign and encrypt session data.
- `VELORUM_JWT_SECRET`: Secret used by Velorum to sign JWTs. Only required when the `ide_velorum` profile is
active.

### Setup initial runtime

Expand Down Expand Up @@ -181,4 +238,82 @@ docker compose up -d

</Steps>

## Setup Velorum (AI orchestrator)

Velorum is the AI orchestrator that powers CodeZero's AI features. It exposes a unified interface to one or
more language models, which are configured purely through environment variables.

<Steps>
<Step>

## Enable the Velorum profile

Make sure the `ide_velorum` profile is part of `COMPOSE_PROFILES` in your `.env` file:

```bash
COMPOSE_PROFILES=ide,runtime,ide_velorum
```

You can opt out of the AI orchestrator at any time by removing `ide_velorum` from the list and restarting
the containers. To force-disable Velorum even when the profile is active, set `VELORUM_ENABLED=false`.

</Step>
<Step>

## Configure the Velorum service

The following variables configure the Velorum service itself:

- `VELORUM_HOST`: The hostname Sagittarius uses to reach Velorum. Defaults to the in-network `velorum`
service.
- `VELORUM_PORT`: The gRPC port Velorum listens on (default `50051`).
- `VELORUM_JWT_SECRET`: Secret used to sign JWTs issued by Velorum. Replace the value from the template
with a freshly generated random string.

</Step>
<Step>

## Configure AI models

Each model Velorum should expose is configured through a set of `VELORUM_MODEL_<SLOT>_*` variables. The
`<SLOT>` part of the variable name is a free-form identifier you choose (e.g. `GPT5`, `CLAUDE`, `LLAMA`)
and is used only to group the variables for one model together. Repeat the set of variables for every
model you want to register.

```bash
VELORUM_MODEL_GPT5_IDENTIFIER=gpt-5
VELORUM_MODEL_GPT5_NAME='GPT 5'
VELORUM_MODEL_GPT5_CAPABILITIES=explain,generate
# if using a non-default base-url
VELORUM_MODEL_GPT5_API=
# or openrouter/openai/gpt-5, etc depending on the provider
VELORUM_MODEL_GPT5_PROVIDER=openai/gpt-5
VELORUM_MODEL_GPT5_AUTH=your-secret-token
VELORUM_MODEL_GPT5_TOKEN_COST=1
```

- `IDENTIFIER`: Stable identifier used by the rest of CodeZero to reference this model.
- `NAME`: Human-readable name shown in the dashboard.
- `CAPABILITIES`: Comma-separated list of capabilities this model supports (e.g. `explain`, `generate`).
- `API`: Optional. Override when the provider is reached through a non-default base URL.
- `PROVIDER`: Provider/model string in the format expected by Velorum, e.g. `openai/gpt-5` or
`openrouter/openai/gpt-5`.
- `AUTH`: Authentication token used to call the provider.
- `TOKEN_COST`: Token cost multiplier applied to usage of this model.

</Step>
<Step>

## Finalize the Velorum setup

After updating the `.env` file, restart the containers so Velorum and Sagittarius pick up the new
configuration:

```bash
docker compose up -d
```

</Step>
</Steps>

Your CodeZero instance is now fully configured and ready to manage your enterprise flows and organizational structures.