Execution model
The execution model is the relationship between the three core abstractions:
- Provider = packaged tool
- Workspace = selected composition of providers
- Runtime = execution layer
Mental model
Provider → tinx home → Workspace → Runtime → Command
tinx -- node build
The command above is not special. It follows the same path every time.
End-to-end flow
- Resolve the workspace from
--workspace, discovery, or the active workspace record. - Normalize the workspace manifest and lock file.
- Resolve each provider alias to a provider key like
namespace/name@version. - Ensure metadata and OCI store content are available.
- Build shims and shell files in
.workspace/. - Prepend workspace and provider paths.
- Resolve the command from
PATH. - Execute the binary with the merged environment.
Typical workflow
providers:
node: core/node
kubectl: tinx/kubectl
tinx init dev
tinx use dev
tinx -- node build
Design properties
- Workspace-first: execution always happens in a workspace
- OCI-native: provider distribution is standard and portable
- Lazy: binaries are extracted only when needed
- Deterministic: the same workspace behaves the same way everywhere
- Simple: no RPC, no plugin framework, just binaries on
PATH
Failure points
tinx fails early when:
- no workspace is active and none can be discovered
- the selected workspace root is missing
- provider environment variables conflict
- the requested command is not present on the constructed
PATH
That keeps the runtime predictable and avoids hidden fallback behavior.