Runtime Capabilities
Capabilities ObjectOS can load from ObjectStack framework packages.
ObjectOS loads a base runtime for every project and then installs optional capabilities declared by the application artifact.
Base runtime
The base project kernel includes:
- ObjectKernel lifecycle and service registry;
- ObjectQL data engine;
- configured data driver;
- metadata service;
- application artifact registration;
- authentication when
OS_AUTH_SECRETis configured; - security plugin for RBAC, row-level security, and field security;
- i18n service.
Optional capabilities
Artifacts can declare capabilities in their requires list. ObjectOS
loads matching framework packages when present in the image.
| Capability | Package | Purpose |
|---|---|---|
automation | @objectstack/service-automation | Flow/DAG execution and automation nodes |
ai | @objectstack/service-ai | LLM adapters, conversations, tools, SSE routes |
analytics | @objectstack/service-analytics | Cubes, analytics queries, reporting data |
audit | @objectstack/plugin-audit | Audit log object and audit trail |
cache | @objectstack/service-cache | Cache abstraction and adapters |
storage | @objectstack/service-storage | File/object storage service |
queue | @objectstack/service-queue | Queue abstraction and workers |
job | @objectstack/service-job | Scheduled/background jobs |
realtime | @objectstack/service-realtime | WebSocket and pub/sub realtime |
feed | @objectstack/service-feed | Comments, reactions, subscriptions, activity feed |
settings | @objectstack/service-settings | Settings manifests and K/V resolver |
If a capability is requested but the image does not include the package, ObjectOS logs a warning and continues running with that capability disabled. This is intentional — it keeps the runtime bootable even when an optional package is missing during development — but in production it is a real risk:
- An audit-required app loaded into an image without
@objectstack/plugin-auditwill start up cleanly and write no audit log. Compliance evidence will be missing without any error. - A job-driven app loaded into an image without
@objectstack/service-jobwill start up cleanly and silently never run scheduled work.
Production checklist:
- Treat capability warnings as deployment failures. Grep startup logs
for
capability not loaded(or your equivalent) and fail the readiness probe / rollout if any appear. - Pin the ObjectOS runtime image to one that includes every package
your artifacts declare in
requires. - When publishing an artifact, document its
requireslist alongside it so operators can verify the matching image.
API surface
ObjectOS commonly exposes:
- generated REST APIs;
- auth endpoints under
/api/v1/auth/*; - metadata and i18n endpoints;
- service endpoints for enabled capabilities.
OData is a framework-level capability and should be documented as supported only when included and enabled by the deployed runtime package.
GraphQL is not one of them. The GraphQL surface was removed in
ObjectStack 17.0 — the endpoint had never been implemented behind the
route, and /graphql now returns 404. Do not document it as an
available or optional capability of any runtime package. (graphql
remains a valid protocol on an external datasource, which is a
system ObjectOS queries, not a surface it serves.)