Skip to main content
Every Uniac package has a uniac.json at its root. The CLI reads it on build, install, link, dev, and deploy.

Required fields

FieldTypePurpose
namestringPackage name. Defaults to the directory basename if omitted.
kindstring"lib" or "app". See Services and Systems.
languagestringRuntime language. Today: "python" only.
entrypointstring"module:ClassName" — the Service or System class the build-time introspect walks.

Optional fields

FieldTypePurpose
dependenciesstring[]Peer Service names resolved from the local store on uniac install.
build.commandstring[]Container CMD as a JSON exec-form array. Auto-derived from language + entrypoint if omitted.
build.baseImagestringOverride the default base image (python:3.11-slim for Python).
build.systemPackagesstring[]apt-get packages installed during build.
initobjectMap of __init__ arg names to default values. Forwarded as UNIAC_INIT_<UPPERCASE_NAME> env vars at deploy time.

Example

uniac.json
{
  "name": "greeter",
  "kind": "app",
  "language": "python",
  "entrypoint": "app:Greeter",
  "dependencies": ["logger", "feature-flags"],
  "build": {
    "command": ["uvicorn", "app:api", "--host", "0.0.0.0", "--port", "8080"],
    "baseImage": "python:3.12-slim"
  },
  "init": {
    "greeting": "hello",
    "log_level": "info"
  }
}
init values are loaded into your __init__ keyword args by load().