eneo
Eneo — open AI platform from Sundsvall municipality (agent workspaces, assistants, document AI)
@r8s/eneo
Components (1)
Eneo
Eneo — open AI platform from Sundsvall municipality (agent workspaces, assistants, document AI).
import { Platform } from '@r8s/recipes'
import { Eneo } from '@r8s/eneo'
export default (
<Platform secrets={{ backend: 'openbao', mount: 'kv', path: 'apps' }}>
<Eneo
name="eneo"
host="eneo.example.com"
objectStorage={{
endpoint: 'https://s3.internal.example.com',
bucket: 'eneo-corpora',
credentialsSecret: 'eneo-object-storage',
}}
/>
</Platform>
)
namestringOptional—Resource name (defaults to 'eneo')
namespacestringOptional—Kubernetes namespace (defaults to 'default')
versionstringOptional—Container image tag (defaults to 'latest' — pin a version in production)
hoststringRequired—Public hostname for the Eneo web app (required)
replicasnumberOptional—Number of app replicas (defaults to 2 — scale freely, the app is stateless)
objectStorage{ endpoint: string, bucket: string, credentialsSecret: string, region?: string }Required—S3-compatible object storage for document corpora (RustFS in the platform). Required. Reference a bucket whose credentials live in a Secret provisioned by the secrets backend (keys: accessKey, secretKey) — never plaintext.
sso{ issuer: string, clientId: string, clientSecretRef: SecretRef, scopes?: string }Optional—OIDC SSO client — register Eneo as a client in Keycloak (the Auth recipe) and reference the client secret through the backend.
smtp{ host: string, port?: number, from?: string }Optional—Outgoing SMTP for invitations and notifications (mirror of the EuroOffice recipe). When set, SMTP_HOST / SMTP_PORT / SMTP_FROM are rendered as plain env and SMTP_PASSWORD is delivered via secretKeyRef from the ${name}-secrets bundle (key: smtpPassword) — never plaintext. The bundle then requires the smtpPassword key as well; without smtp only appSecret is required from the bundle.
secretsNamestringOptional—Name of an existing Secret holding appSecret (and smtpPassword when smtp is set). Required unless a secrets backend (openbao/vault) is configured on the surrounding Platform — the backend then provisions them.
dbStoragestringOptional—Storage size for the Postgres cluster (defaults to '10Gi'). Document corpora live in object storage (objectStorage, S3/RustFS) — Eneo does not persist corpora on a local volume. A local corpus PVC (mounted volumes/sidecars on the app workload) is a v1.1 item.
resources{ requests?: { cpu?: string, memory?: string }, limits?: { cpu?: string, memory?: string } }Optional—Requested app resources
tls{ secretName: string, clusterIssuer: string }Optional—TLS configuration (defaults to letsencrypt-prod cluster issuer)