Oneiric
Explainable component resolution, lifecycle management, and remote delivery for Python 3.14+ runtimes
current v0.21.8
Oneiric is a standalone resolver and runtime foundation. Register adapters, services, tasks, events, workflows, and actions; explain selection decisions; manage lifecycle transitions; and hydrate capabilities from remote manifests.
Quick Links
Quality checks
Use Crackerjack for the repository quality gate; the commands are documented below in Development.
Capabilities
- Resolution: deterministic selection by explicit configuration, stack, priority, and registration order, with explainable and shadowed candidates.
- Lifecycle: activation, health checks, binding, cleanup, rollback, and
safe provider swaps through
LifecycleManager. - Runtime orchestration: watchers, remote refresh, workflow checkpoints, event dispatch, pause/drain supervision, and optional scheduler callbacks.
- Remote delivery: YAML/JSON manifests with optional digest and signature verification, canonical packaging, and per-domain registration.
- Operations: structured logging, runtime health and telemetry snapshots, notification routing, plugin discovery, and secrets-cache management.
Domains and built-ins
The resolver exposes six registered domains. Each domain uses the same selection and lifecycle model, while domain-specific bridges provide the execution behavior.
| Domain | Role |
|---|---|
| Adapters | Providers for cache, storage, queues, HTTP, databases, NoSQL, graph, vector, embeddings, LLMs, secrets, messaging, DNS, file transfer, and monitoring. |
| Services | Lifecycle-managed application services registered by the host application or a manifest. |
| Tasks | Async task providers and queue metadata used by runtime workflows. |
| Events | Topic dispatch with filtering, fan-out, retries, and handler inspection. |
| Workflows | DAG planning, execution, enqueueing, checkpoints, and telemetry. |
| Actions | Built-in kits for compression, HTTP, workflow, security, serialization, data, validation, task, event, automation, and debugging operations. |
Built-in action keys include compression.encode, compression.hash,
compression.stream, workflow.audit, workflow.orchestrate,
workflow.notify, workflow.retry, http.fetch, event.dispatch, and
debug.console. Use oneiric --demo list --domain action to inspect the
complete registry.
Runtime and operations
- Watchers reload selections using watchfiles or polling; serverless profiles can disable remote refresh and watchers.
RuntimeOrchestratorcoordinates remote sync, event dispatch, workflow execution, checkpoints, notifications, and the optional scheduler HTTP server for Cloud Tasks callbacks.DomainActivityStorerecords pause/drain state, while the supervisor keeps inactive components from accepting work.- Runtime health, telemetry, lifecycle, activity, and workflow checkpoint artifacts are written beneath the configured cache directory.
oneiric health,status,activity,remote-status, andsupervisor-infoexpose operator-facing state.
Configuration
load_settings() layers project and user configuration for the selected
project_name. From lowest to highest precedence, it checks:
- Code defaults
settings/<project_name>.yamlor.ymlat the project rootsettings/local.yamlat the project root${XDG_CONFIG_HOME:-~/.config}/<project_name>/config.yaml${XDG_CONFIG_HOME:-~/.config}/<project_name>/local.yaml- Environment overrides in the form
<PROJECT_NAME>_<SETTING>__<FIELD>
For example, a project using project_name="oneiric" checks
~/.config/oneiric/config.yaml and ~/.config/oneiric/local.yaml when
XDG_CONFIG_HOME is not set. Set XDG_CONFIG_HOME to relocate the user
configuration root. Missing layered files are ignored. Project paths are
normally anchored at the installed package/project root; an explicit
project_root= can be supplied when embedding Oneiric elsewhere.
An explicit path= argument to load_settings() or the corresponding
<PROJECT_NAME>_CONFIG environment variable is applied last and takes
precedence over all layered files. The CLI exposes the same override through
--config.
Quick start
For repository development:
uv sync --group dev
uv run oneiric --demo list --domain adapter
uv run oneiric --demo list --domain action
uv run oneiric --demo explain demo --domain adapter
uv run oneiric --demo health --probe --json
Inspect runtime plans without starting the long-running loop:
uv run oneiric --demo orchestrate --print-dag --inspect-json
uv run oneiric --demo orchestrate --events --inspect-json
uv run oneiric workflow plan --workflow <workflow-key> --json
Run a manifest sync, event, workflow, or action explicitly:
uv run oneiric remote-sync --manifest docs/sample_remote_manifest.yaml
uv run oneiric event emit demo.event --payload '{"source":"cli"}' --json
uv run oneiric workflow run <workflow-key> --context '{"request_id":"demo"}' --json
uv run oneiric action-invoke compression.encode --payload '{"text":"hello"}' --json
Start the orchestrator when a long-running process is required:
uv run oneiric start \
--manifest docs/sample_remote_manifest.yaml \
--refresh-interval 120 \
--no-http
uv run oneiric process-status
uv run oneiric health --probe --json
uv run oneiric stop
Serverless profile
The serverless profile is intended for deployments such as Cloud Run. It
can be selected through the environment or CLI and combined with explicit
remote/HTTP settings:
uv run oneiric manifest pack \
--input docs/sample_remote_manifest.yaml \
--output build/serverless_manifest.json
ONEIRIC_PROFILE=serverless uv run oneiric supervisor-info
ONEIRIC_PROFILE=serverless uv run oneiric health --probe --json
ONEIRIC_PROFILE=serverless uv run oneiric start --no-remote --no-http
Deployment details are in docs/deployment/CLOUD_RUN_BUILD.md.
CLI map
The installed console script is oneiric. Use oneiric --help for the
complete command surface; uv run oneiric is the repository-local form.
- Inspect:
list,status,explain,health,plugins, andsupervisor-infoexpose registrations, resolution decisions, lifecycle state, and runtime health. - Manage lifecycle:
swap,pause,drain,start,stop, andprocess-statuscontrol providers and the background orchestrator. - Run work:
event emit,workflow plan,workflow run,workflow enqueue, andaction-invokeexercise runtime capabilities. - Deliver manifests:
remote-sync,remote-status, andmanifest packhandle remote inputs and cached synchronization state. - Operate integrations:
plugins,secrets,shell, andload-testprovide discovery, secret-cache operations, interactive administration, and runtime load testing.
Bodai Integration
When installed alongside the Bodai ecosystem,
Oneiric supplies the shared resolver, lifecycle manager, and adapter catalog
used by the other Bodai components. The standalone install is identical —
Bodai does not impose special-case overrides on Oneiric's domain model;
consumers wire the same load_settings() and adapter registries they would in
any other Python application.
Observability and state
Oneiric uses structured logging and writes runtime artifacts below the
configured cache_dir (the default setting is .oneiric_cache). The runtime
surface includes:
runtime_health.jsonfor watcher, remote, supervisor, and orchestrator stateruntime_telemetry.jsonfor event and workflow execution summarieslifecycle_status.jsonfor provider lifecycle snapshotsdomain_activity.sqlitefor pause/drain stateworkflow_checkpoints.sqlitefor resumable workflow execution when enabled
See docs/OBSERVABILITY_GUIDE.md for logging,
telemetry, and artifact-handling details. workflow.notify routes messages
through the configured messaging adapter when notification delivery is enabled.
Remote manifests
Remote manifests can describe adapters, services, tasks, events, workflows, and actions. Oneiric can load them from local paths or supported URIs, validate optional signatures and digests, register their domains, and refresh them on a schedule.
uv run oneiric manifest pack \
--input docs/sample_remote_manifest.yaml \
--output build/manifest.json
uv run oneiric remote-sync --manifest docs/sample_remote_manifest.yaml
uv run oneiric remote-status
See docs/REMOTE_MANIFEST_SCHEMA.md and docs/SIGNATURE_VERIFICATION.md for the manifest and verification contracts.
Documentation
- Documentation index — navigation through architecture, operations, examples, and reference material.
- CLI reference — command options and operator flows.
- Package map — module layout and extension points.
- Custom adapters — registration and resolver extension patterns.
- XDG configuration — configuration layers and interactive settings inspection.
- Observability guide — logging and runtime artifacts.
- Deployment guides and runbooks — Cloud Run, systemd, maintenance, and troubleshooting.
Development
# Fast repository checks
python -m crackerjack run --fast
# Comprehensive checks
python -m crackerjack run --comp
# Full quality run, including tests
python -m crackerjack run --run-tests
Run the repository-local gate after changing runtime, adapter, action, or CLI behavior. Add or update tests and documentation with the same change.
Contributing
- Review the relevant architecture and operator documentation.
- Run
python -m crackerjack run --run-testsbefore opening a PR. - Add or update tests for runtime features, adapters, actions, or CLI flows.
- Update the README or linked documentation when the operator surface changes.
License and support
- License: BSD-3-Clause (see
LICENSE). - Issues: https://github.com/lesleslie/oneiric/issues
- Docs: Start with docs/README.md.
Release files for oneiric 0.22.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| oneiric-0.22.0.tar.gz | 1.9 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| oneiric-0.22.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.4 MB
Release files / oneiric-0.22.0.tar.gz
| Download URL | oneiric-0.22.0.tar.gz |
|---|---|
| Size | 1.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1c30d6de44a6c4fd9883c502f2a7ad7a24db0ffc552bfbd03526f2762be09727
|
|
BLAKE2b-256 checksum How to use checksums |
b5a6ec985ab4533c3910d0923050623e8cc17a55646aa2cd7ea0918bfd942697
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.16 {"installer":{"name":"uv","version":"0.12.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / oneiric-0.22.0-py3-none-any.whl
| Download URL | oneiric-0.22.0-py3-none-any.whl |
|---|---|
| Size | 420.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e21dc03d67cc3e915efd0f9ff465d4c618af0fff663a3a2369eca5f1d86b375d
|
|
BLAKE2b-256 checksum How to use checksums |
4da22cf3c100ad220521789aabbc095d982826a78dd37fa638a7c4e67f2275e0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.16 {"installer":{"name":"uv","version":"0.12.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|