Skip to main content

Configuration

tinx configuration is split across workspace manifests, provider manifests, lock files, and tinx home state.

Workspace manifest

Workspace manifests live in the workspace root and are normally saved as tinx.yaml.

apiVersion: tinx.io/v1
kind: Workspace
workspace: dev
metadata:
name: dev
providers:
node:
source: core/node
kubectl:
source: ghcr.io/acme/kubectl:v1.31.0
plainHTTP: false

Workspace fields

FieldMeaning
apiVersionMust be tinx.io/v1
kindMust be Workspace
workspaceWorkspace name written to the manifest
metadata.nameOptional explicit display name
providersAlias to provider source mapping
providers.<alias>.sourceOCI registry reference or local OCI layout path
providers.<alias>.plainHTTPAllow plain HTTP registry access for that provider

A provider entry may be a string shorthand:

providers:
node: core/node

Provider manifest

Provider manifests also use tinx.yaml, but their kind is Provider.

apiVersion: tinx.io/v1
kind: Provider
metadata:
namespace: acme
name: node
version: v20.19.0
description: Node.js runtime provider
spec:
runtime: binary
entrypoint: node
platforms:
- os: darwin
arch: arm64
binary: bin/darwin/arm64/node
capabilities:
build:
description: Run the build
env:
NODE_EXTRA_CA_CERTS: ${provider_assets}/certs/root.pem
path:
- tools/bin
layers:
assets:
root: assets
includes:
- certs/*.pem

Provider fields

FieldMeaning
metadata.namespaceProvider namespace
metadata.nameProvider name
metadata.versionProvider version
spec.runtimeMust be binary
spec.entrypointExecutable name tinx should run
spec.platformsSupported platform list and binary paths
spec.capabilitiesOptional capability metadata
spec.envEnvironment variables to inject into the workspace
spec.pathAdditional path entries relative to the provider store
spec.layers.assetsOptional assets layer configuration

Lock file

Each workspace sync writes tinx.lock:

apiVersion: tinx.io/v1
kind: WorkspaceLock
workspace: dev
providers:
- alias: node
provider: core/node
source: core/node
version: v20.19.0
resolved: ghcr.io/acme/node-provider@sha256:...
store: 4f3f...

Use the lock file as generated state. tinx rewrites it during sync.

Global tinx home config

tinx stores shared state in $TINX_HOME/config.yaml:

aliases:
node: core/node@v20.19.0
activeWorkspace: /abs/path/to/workspace
workspaces:
dev: /abs/path/to/workspace

That file tracks aliases, the active workspace, and registered workspace roots.