vayrm 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- vayrm-0.1.0/PKG-INFO +166 -0
- vayrm-0.1.0/README.md +143 -0
- vayrm-0.1.0/acr/__init__.py +29 -0
- vayrm-0.1.0/acr/api/__init__.py +0 -0
- vayrm-0.1.0/acr/api/root_api.py +87 -0
- vayrm-0.1.0/acr/api/server.py +70 -0
- vayrm-0.1.0/acr/cache/__init__.py +20 -0
- vayrm-0.1.0/acr/cache/manager.py +394 -0
- vayrm-0.1.0/acr/cache/policy.py +187 -0
- vayrm-0.1.0/acr/checkpoint/__init__.py +30 -0
- vayrm-0.1.0/acr/checkpoint/delta.py +209 -0
- vayrm-0.1.0/acr/checkpoint/manager.py +764 -0
- vayrm-0.1.0/acr/checkpoint/manifest.py +174 -0
- vayrm-0.1.0/acr/checkpoint/policy.py +181 -0
- vayrm-0.1.0/acr/checkpoint/provider.py +44 -0
- vayrm-0.1.0/acr/cli.py +74 -0
- vayrm-0.1.0/acr/cluster/__init__.py +20 -0
- vayrm-0.1.0/acr/cluster/eligibility.py +71 -0
- vayrm-0.1.0/acr/cluster/federation.py +77 -0
- vayrm-0.1.0/acr/cluster/knowledge.py +285 -0
- vayrm-0.1.0/acr/cluster/node_entry.py +103 -0
- vayrm-0.1.0/acr/cluster/root_brain.py +1090 -0
- vayrm-0.1.0/acr/cluster/state_aggregator.py +340 -0
- vayrm-0.1.0/acr/cluster/subroot_agent.py +234 -0
- vayrm-0.1.0/acr/communication/__init__.py +0 -0
- vayrm-0.1.0/acr/communication/checkpoint_transfer.py +237 -0
- vayrm-0.1.0/acr/communication/framing.py +182 -0
- vayrm-0.1.0/acr/communication/inmemory.py +274 -0
- vayrm-0.1.0/acr/communication/interfaces.py +173 -0
- vayrm-0.1.0/acr/communication/local_channel.py +68 -0
- vayrm-0.1.0/acr/communication/network.py +193 -0
- vayrm-0.1.0/acr/communication/paladin_adapter.py +1003 -0
- vayrm-0.1.0/acr/communication/priority.py +45 -0
- vayrm-0.1.0/acr/communication/propagation.py +98 -0
- vayrm-0.1.0/acr/communication/protocol.py +1349 -0
- vayrm-0.1.0/acr/communication/tcp.py +917 -0
- vayrm-0.1.0/acr/communication/transport.py +286 -0
- vayrm-0.1.0/acr/core/__init__.py +3 -0
- vayrm-0.1.0/acr/core/config.py +134 -0
- vayrm-0.1.0/acr/core/enums.py +87 -0
- vayrm-0.1.0/acr/core/errors.py +15 -0
- vayrm-0.1.0/acr/core/identity.py +63 -0
- vayrm-0.1.0/acr/core/types.py +6 -0
- vayrm-0.1.0/acr/entrypoint.py +691 -0
- vayrm-0.1.0/acr/events.py +600 -0
- vayrm-0.1.0/acr/execution/__init__.py +5 -0
- vayrm-0.1.0/acr/execution/dispatcher.py +63 -0
- vayrm-0.1.0/acr/execution/feedback.py +79 -0
- vayrm-0.1.0/acr/execution/manager.py +126 -0
- vayrm-0.1.0/acr/execution/models.py +102 -0
- vayrm-0.1.0/acr/execution/safe_worker.py +145 -0
- vayrm-0.1.0/acr/facade.py +142 -0
- vayrm-0.1.0/acr/history/__init__.py +3 -0
- vayrm-0.1.0/acr/history/execution.py +85 -0
- vayrm-0.1.0/acr/integration/__init__.py +0 -0
- vayrm-0.1.0/acr/integration/paladin_import.py +72 -0
- vayrm-0.1.0/acr/logging.py +78 -0
- vayrm-0.1.0/acr/migration/__init__.py +3 -0
- vayrm-0.1.0/acr/migration/manager.py +110 -0
- vayrm-0.1.0/acr/network/__init__.py +0 -0
- vayrm-0.1.0/acr/network/paladin_adapter.py +359 -0
- vayrm-0.1.0/acr/node/__init__.py +72 -0
- vayrm-0.1.0/acr/node/agent.py +483 -0
- vayrm-0.1.0/acr/node/assessment.py +388 -0
- vayrm-0.1.0/acr/node/brain.py +812 -0
- vayrm-0.1.0/acr/node/history.py +95 -0
- vayrm-0.1.0/acr/node/knowledge.py +680 -0
- vayrm-0.1.0/acr/node/peer_view.py +226 -0
- vayrm-0.1.0/acr/node/resource_snapshot.py +294 -0
- vayrm-0.1.0/acr/node/self_model.py +542 -0
- vayrm-0.1.0/acr/node/state_buffer.py +145 -0
- vayrm-0.1.0/acr/node/state_machine.py +384 -0
- vayrm-0.1.0/acr/node/state_publisher.py +245 -0
- vayrm-0.1.0/acr/node/temporal.py +399 -0
- vayrm-0.1.0/acr/peers/__init__.py +36 -0
- vayrm-0.1.0/acr/peers/interfaces.py +65 -0
- vayrm-0.1.0/acr/peers/knowledge.py +212 -0
- vayrm-0.1.0/acr/peers/manager.py +186 -0
- vayrm-0.1.0/acr/peers/merge.py +94 -0
- vayrm-0.1.0/acr/peers/models.py +227 -0
- vayrm-0.1.0/acr/platforms/__init__.py +8 -0
- vayrm-0.1.0/acr/platforms/linux/__init__.py +12 -0
- vayrm-0.1.0/acr/platforms/linux/provider.py +10 -0
- vayrm-0.1.0/acr/platforms/linux/runtime.py +85 -0
- vayrm-0.1.0/acr/platforms/linux/workloads.py +22 -0
- vayrm-0.1.0/acr/platforms/macos/__init__.py +12 -0
- vayrm-0.1.0/acr/platforms/macos/provider.py +10 -0
- vayrm-0.1.0/acr/platforms/macos/runtime.py +28 -0
- vayrm-0.1.0/acr/platforms/macos/workloads.py +24 -0
- vayrm-0.1.0/acr/platforms/windows/__init__.py +12 -0
- vayrm-0.1.0/acr/platforms/windows/provider.py +10 -0
- vayrm-0.1.0/acr/platforms/windows/runtime.py +28 -0
- vayrm-0.1.0/acr/platforms/windows/workloads.py +20 -0
- vayrm-0.1.0/acr/registry/__init__.py +20 -0
- vayrm-0.1.0/acr/registry/backend.py +63 -0
- vayrm-0.1.0/acr/registry/cluster_registry.py +105 -0
- vayrm-0.1.0/acr/registry/node_registry.py +41 -0
- vayrm-0.1.0/acr/registry/resource_registry.py +395 -0
- vayrm-0.1.0/acr/registry/root_registry.py +57 -0
- vayrm-0.1.0/acr/registry/session_registry.py +74 -0
- vayrm-0.1.0/acr/registry/subroot_registry.py +162 -0
- vayrm-0.1.0/acr/resource_fabric/__init__.py +55 -0
- vayrm-0.1.0/acr/resource_fabric/capacity_model.py +165 -0
- vayrm-0.1.0/acr/resource_fabric/cooldown.py +133 -0
- vayrm-0.1.0/acr/resource_fabric/criticality.py +57 -0
- vayrm-0.1.0/acr/resource_fabric/decision_engine.py +476 -0
- vayrm-0.1.0/acr/resource_fabric/filtering.py +220 -0
- vayrm-0.1.0/acr/resource_fabric/hardware.py +182 -0
- vayrm-0.1.0/acr/resource_fabric/hierarchy.py +229 -0
- vayrm-0.1.0/acr/resource_fabric/manager.py +505 -0
- vayrm-0.1.0/acr/resource_fabric/normalization.py +70 -0
- vayrm-0.1.0/acr/resource_fabric/preemption.py +393 -0
- vayrm-0.1.0/acr/resource_fabric/quota.py +132 -0
- vayrm-0.1.0/acr/resource_fabric/reconciliation.py +160 -0
- vayrm-0.1.0/acr/resource_fabric/resource_claim.py +184 -0
- vayrm-0.1.0/acr/resource_fabric/resource_health.py +75 -0
- vayrm-0.1.0/acr/resource_fabric/resource_lease.py +147 -0
- vayrm-0.1.0/acr/resource_fabric/resource_offer.py +126 -0
- vayrm-0.1.0/acr/resource_fabric/resource_policy.py +164 -0
- vayrm-0.1.0/acr/resource_fabric/resource_pool.py +375 -0
- vayrm-0.1.0/acr/resource_fabric/scoring.py +329 -0
- vayrm-0.1.0/acr/resources/__init__.py +3 -0
- vayrm-0.1.0/acr/resources/capabilities.py +111 -0
- vayrm-0.1.0/acr/resources/cluster_state.py +101 -0
- vayrm-0.1.0/acr/resources/metric.py +15 -0
- vayrm-0.1.0/acr/resources/node_context.py +250 -0
- vayrm-0.1.0/acr/resources/pressure.py +47 -0
- vayrm-0.1.0/acr/resources/snapshot.py +173 -0
- vayrm-0.1.0/acr/resources/state.py +139 -0
- vayrm-0.1.0/acr/runtime/__init__.py +0 -0
- vayrm-0.1.0/acr/runtime/aggregate_state.py +102 -0
- vayrm-0.1.0/acr/runtime/continuous_sampler.py +103 -0
- vayrm-0.1.0/acr/runtime/discovery.py +199 -0
- vayrm-0.1.0/acr/runtime/endpoint.py +81 -0
- vayrm-0.1.0/acr/runtime/master_root.py +154 -0
- vayrm-0.1.0/acr/runtime/monitoring.py +205 -0
- vayrm-0.1.0/acr/runtime/monte_carlo.py +139 -0
- vayrm-0.1.0/acr/runtime/node.py +74 -0
- vayrm-0.1.0/acr/runtime/node_brain.py +242 -0
- vayrm-0.1.0/acr/runtime/node_model.py +104 -0
- vayrm-0.1.0/acr/runtime/policy.py +179 -0
- vayrm-0.1.0/acr/runtime/root.py +44 -0
- vayrm-0.1.0/acr/runtime/root_controller.py +250 -0
- vayrm-0.1.0/acr/runtime/safety.py +81 -0
- vayrm-0.1.0/acr/runtime/scheduling_view.py +325 -0
- vayrm-0.1.0/acr/runtime/trajectory.py +67 -0
- vayrm-0.1.0/acr/runtime/workload_brain.py +136 -0
- vayrm-0.1.0/acr/schedulers/__init__.py +54 -0
- vayrm-0.1.0/acr/schedulers/adaptive.py +333 -0
- vayrm-0.1.0/acr/schedulers/adaptive_common.py +44 -0
- vayrm-0.1.0/acr/schedulers/adaptive_v2.py +94 -0
- vayrm-0.1.0/acr/schedulers/adaptive_v3.py +387 -0
- vayrm-0.1.0/acr/schedulers/admission.py +76 -0
- vayrm-0.1.0/acr/schedulers/base.py +83 -0
- vayrm-0.1.0/acr/schedulers/context.py +44 -0
- vayrm-0.1.0/acr/schedulers/decision.py +85 -0
- vayrm-0.1.0/acr/schedulers/estimation.py +141 -0
- vayrm-0.1.0/acr/schedulers/explainable.py +129 -0
- vayrm-0.1.0/acr/schedulers/heterogeneity.py +251 -0
- vayrm-0.1.0/acr/schedulers/heterogeneity_aware.py +316 -0
- vayrm-0.1.0/acr/schedulers/least_loaded.py +182 -0
- vayrm-0.1.0/acr/schedulers/monte_carlo.py +123 -0
- vayrm-0.1.0/acr/schedulers/queue.py +132 -0
- vayrm-0.1.0/acr/schedulers/reasons.py +68 -0
- vayrm-0.1.0/acr/schedulers/replay.py +41 -0
- vayrm-0.1.0/acr/schedulers/resource_aware.py +547 -0
- vayrm-0.1.0/acr/schedulers/round_robin.py +77 -0
- vayrm-0.1.0/acr/schedulers/state_aware.py +144 -0
- vayrm-0.1.0/acr/schedulers/strategy.py +310 -0
- vayrm-0.1.0/acr/schedulers/task_weights.py +87 -0
- vayrm-0.1.0/acr/schedulers/trace.py +284 -0
- vayrm-0.1.0/acr/schedulers/weights.py +79 -0
- vayrm-0.1.0/acr/scripts/__init__.py +0 -0
- vayrm-0.1.0/acr/scripts/live_validator.py +0 -0
- vayrm-0.1.0/acr/simulation/__init__.py +8 -0
- vayrm-0.1.0/acr/simulation/decentralized.py +294 -0
- vayrm-0.1.0/acr/simulation/failure_injector.py +0 -0
- vayrm-0.1.0/acr/state/__init__.py +45 -0
- vayrm-0.1.0/acr/state/catalog.py +284 -0
- vayrm-0.1.0/acr/state/chunk.py +186 -0
- vayrm-0.1.0/acr/state/manifest.py +239 -0
- vayrm-0.1.0/acr/state/object.py +252 -0
- vayrm-0.1.0/acr/state/residency.py +282 -0
- vayrm-0.1.0/acr/storage/__init__.py +19 -0
- vayrm-0.1.0/acr/storage/backend.py +115 -0
- vayrm-0.1.0/acr/storage/filesystem.py +127 -0
- vayrm-0.1.0/acr/storage/memory.py +78 -0
- vayrm-0.1.0/acr/subroot/__init__.py +7 -0
- vayrm-0.1.0/acr/subroot/local_fabric.py +180 -0
- vayrm-0.1.0/acr/subroot/runtime.py +225 -0
- vayrm-0.1.0/acr/telemetry/__init__.py +3 -0
- vayrm-0.1.0/acr/telemetry/__main__.py +93 -0
- vayrm-0.1.0/acr/telemetry/base.py +25 -0
- vayrm-0.1.0/acr/telemetry/collector.py +94 -0
- vayrm-0.1.0/acr/telemetry/detector.py +45 -0
- vayrm-0.1.0/acr/telemetry/platforms/__init__.py +3 -0
- vayrm-0.1.0/acr/telemetry/platforms/linux/__init__.py +3 -0
- vayrm-0.1.0/acr/telemetry/platforms/linux/cpu.py +184 -0
- vayrm-0.1.0/acr/telemetry/platforms/linux/gpu.py +161 -0
- vayrm-0.1.0/acr/telemetry/platforms/linux/memory.py +149 -0
- vayrm-0.1.0/acr/telemetry/platforms/linux/network.py +170 -0
- vayrm-0.1.0/acr/telemetry/platforms/linux/power.py +52 -0
- vayrm-0.1.0/acr/telemetry/platforms/linux/provider.py +133 -0
- vayrm-0.1.0/acr/telemetry/platforms/linux/storage.py +98 -0
- vayrm-0.1.0/acr/telemetry/platforms/linux/system.py +30 -0
- vayrm-0.1.0/acr/telemetry/platforms/linux/thermal.py +106 -0
- vayrm-0.1.0/acr/telemetry/platforms/macos/__init__.py +3 -0
- vayrm-0.1.0/acr/telemetry/platforms/macos/cpu.py +85 -0
- vayrm-0.1.0/acr/telemetry/platforms/macos/gpu.py +208 -0
- vayrm-0.1.0/acr/telemetry/platforms/macos/memory.py +61 -0
- vayrm-0.1.0/acr/telemetry/platforms/macos/network.py +32 -0
- vayrm-0.1.0/acr/telemetry/platforms/macos/power.py +44 -0
- vayrm-0.1.0/acr/telemetry/platforms/macos/provider.py +75 -0
- vayrm-0.1.0/acr/telemetry/platforms/macos/storage.py +33 -0
- vayrm-0.1.0/acr/telemetry/platforms/macos/system.py +16 -0
- vayrm-0.1.0/acr/telemetry/platforms/macos/thermal.py +59 -0
- vayrm-0.1.0/acr/telemetry/platforms/windows/__init__.py +3 -0
- vayrm-0.1.0/acr/telemetry/platforms/windows/cpu.py +86 -0
- vayrm-0.1.0/acr/telemetry/platforms/windows/gpu.py +449 -0
- vayrm-0.1.0/acr/telemetry/platforms/windows/memory.py +69 -0
- vayrm-0.1.0/acr/telemetry/platforms/windows/network.py +86 -0
- vayrm-0.1.0/acr/telemetry/platforms/windows/power.py +68 -0
- vayrm-0.1.0/acr/telemetry/platforms/windows/provider.py +74 -0
- vayrm-0.1.0/acr/telemetry/platforms/windows/storage.py +62 -0
- vayrm-0.1.0/acr/telemetry/platforms/windows/system.py +13 -0
- vayrm-0.1.0/acr/telemetry/platforms/windows/thermal.py +139 -0
- vayrm-0.1.0/acr/telemetry/record.py +232 -0
- vayrm-0.1.0/acr/telemetry/root_telemetry_tracker.py +422 -0
- vayrm-0.1.0/acr/telemetry/validate.py +98 -0
- vayrm-0.1.0/acr/test_bug.py +6 -0
- vayrm-0.1.0/acr/test_migration.py +81 -0
- vayrm-0.1.0/acr/test_node.py +6 -0
- vayrm-0.1.0/acr/test_provider.py +10 -0
- vayrm-0.1.0/acr/training/__init__.py +0 -0
- vayrm-0.1.0/acr/training/backend.py +87 -0
- vayrm-0.1.0/acr/training/worker.py +48 -0
- vayrm-0.1.0/acr/transfer/__init__.py +51 -0
- vayrm-0.1.0/acr/transfer/backend.py +154 -0
- vayrm-0.1.0/acr/transfer/backends/__init__.py +3 -0
- vayrm-0.1.0/acr/transfer/backends/memory.py +239 -0
- vayrm-0.1.0/acr/transfer/backends/tcp.py +396 -0
- vayrm-0.1.0/acr/transfer/chunking.py +268 -0
- vayrm-0.1.0/acr/transfer/diff.py +283 -0
- vayrm-0.1.0/acr/transfer/manager.py +336 -0
- vayrm-0.1.0/acr/transfer/plan.py +307 -0
- vayrm-0.1.0/acr/ui/__init__.py +0 -0
- vayrm-0.1.0/acr/ui/resource_dashboard.py +0 -0
- vayrm-0.1.0/acr/ui/root_dashboard.py +1144 -0
- vayrm-0.1.0/acr/utils/__init__.py +0 -0
- vayrm-0.1.0/acr/utils/profiling.py +80 -0
- vayrm-0.1.0/acr/workloads/__init__.py +15 -0
- vayrm-0.1.0/acr/workloads/characteristics.py +36 -0
- vayrm-0.1.0/acr/workloads/cpu_worker.py +60 -0
- vayrm-0.1.0/acr/workloads/identity.py +36 -0
- vayrm-0.1.0/acr/workloads/io_worker.py +86 -0
- vayrm-0.1.0/acr/workloads/knowledge.py +36 -0
- vayrm-0.1.0/acr/workloads/memory_worker.py +68 -0
- vayrm-0.1.0/acr/workloads/mixed_worker.py +80 -0
- vayrm-0.1.0/acr/workloads/profile.py +44 -0
- vayrm-0.1.0/acr/workloads/pytorch/__init__.py +0 -0
- vayrm-0.1.0/acr/workloads/pytorch/adapter.py +37 -0
- vayrm-0.1.0/acr/workloads/pytorch/checkpoint.py +33 -0
- vayrm-0.1.0/acr/workloads/pytorch/runtime.py +229 -0
- vayrm-0.1.0/acr/workloads/requirements.py +155 -0
- vayrm-0.1.0/acr/workloads/spec.py +39 -0
- vayrm-0.1.0/acr/workloads/state_needs.py +32 -0
- vayrm-0.1.0/acr/workloads/virtual.py +146 -0
- vayrm-0.1.0/acr/workloads/windows_workloads.py +79 -0
- vayrm-0.1.0/acr/workloads/worker.py +83 -0
- vayrm-0.1.0/acr/workloads/workload.py +126 -0
- vayrm-0.1.0/paladin/ai/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/agents/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/agents/agents.py +0 -0
- vayrm-0.1.0/paladin/ai/checkpoints/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/checkpoints/checkpoints.py +0 -0
- vayrm-0.1.0/paladin/ai/datasets/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/datasets/datasets.py +0 -0
- vayrm-0.1.0/paladin/ai/fusion/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/fusion/fusion.py +0 -0
- vayrm-0.1.0/paladin/ai/inference/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/inference/inference.py +0 -0
- vayrm-0.1.0/paladin/ai/model_loader/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/model_loader/model_loader.py +0 -0
- vayrm-0.1.0/paladin/ai/model_registry/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/model_registry/model_registry.py +0 -0
- vayrm-0.1.0/paladin/ai/orchestration/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/orchestration/orchestration.py +0 -0
- vayrm-0.1.0/paladin/ai/plugins/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/plugins/coding/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/plugins/coding/coding.py +0 -0
- vayrm-0.1.0/paladin/ai/plugins/embedding/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/plugins/embedding/embedding.py +0 -0
- vayrm-0.1.0/paladin/ai/plugins/llm/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/plugins/llm/llm.py +0 -0
- vayrm-0.1.0/paladin/ai/plugins/memory/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/plugins/memory/memory.py +0 -0
- vayrm-0.1.0/paladin/ai/plugins/ocr/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/plugins/ocr/ocr.py +0 -0
- vayrm-0.1.0/paladin/ai/plugins/planning/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/plugins/planning/planning.py +0 -0
- vayrm-0.1.0/paladin/ai/plugins/reranker/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/plugins/reranker/reranker.py +0 -0
- vayrm-0.1.0/paladin/ai/plugins/slm/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/plugins/slm/slm.py +0 -0
- vayrm-0.1.0/paladin/ai/plugins/speech/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/plugins/speech/speech.py +0 -0
- vayrm-0.1.0/paladin/ai/plugins/trm/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/plugins/trm/trm.py +0 -0
- vayrm-0.1.0/paladin/ai/plugins/vision/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/plugins/vision/vision.py +0 -0
- vayrm-0.1.0/paladin/ai/runtime/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/runtime/runtime.py +0 -0
- vayrm-0.1.0/paladin/ai/tensors/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/tensors/tensors.py +0 -0
- vayrm-0.1.0/paladin/ai/training/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/training/training.py +0 -0
- vayrm-0.1.0/paladin/ai/workflows/__init__.py +0 -0
- vayrm-0.1.0/paladin/ai/workflows/workflows.py +0 -0
- vayrm-0.1.0/paladin/apps/__init__.py +0 -0
- vayrm-0.1.0/paladin/apps/cli/__init__.py +0 -0
- vayrm-0.1.0/paladin/apps/cli/main.py +517 -0
- vayrm-0.1.0/paladin/apps/node/__init__.py +0 -0
- vayrm-0.1.0/paladin/apps/node/api.py +140 -0
- vayrm-0.1.0/paladin/apps/node/main.py +634 -0
- vayrm-0.1.0/paladin/apps/node/peers.py +224 -0
- vayrm-0.1.0/paladin/apps/root/__init__.py +0 -0
- vayrm-0.1.0/paladin/apps/root/api/__init__.py +0 -0
- vayrm-0.1.0/paladin/apps/root/api/server.py +244 -0
- vayrm-0.1.0/paladin/apps/root/main.py +809 -0
- vayrm-0.1.0/paladin/cluster/__init__.py +0 -0
- vayrm-0.1.0/paladin/cluster/allocation/__init__.py +0 -0
- vayrm-0.1.0/paladin/cluster/allocation/allocation.py +0 -0
- vayrm-0.1.0/paladin/cluster/autoscaling/__init__.py +0 -0
- vayrm-0.1.0/paladin/cluster/autoscaling/autoscaling.py +0 -0
- vayrm-0.1.0/paladin/cluster/balancer/__init__.py +0 -0
- vayrm-0.1.0/paladin/cluster/balancer/balancer.py +0 -0
- vayrm-0.1.0/paladin/cluster/failover/__init__.py +0 -0
- vayrm-0.1.0/paladin/cluster/failover/failover.py +0 -0
- vayrm-0.1.0/paladin/cluster/global_state/__init__.py +0 -0
- vayrm-0.1.0/paladin/cluster/global_state/global_state.py +0 -0
- vayrm-0.1.0/paladin/cluster/health/__init__.py +0 -0
- vayrm-0.1.0/paladin/cluster/health/health.py +0 -0
- vayrm-0.1.0/paladin/cluster/leader/__init__.py +0 -0
- vayrm-0.1.0/paladin/cluster/leader/leader.py +0 -0
- vayrm-0.1.0/paladin/cluster/membership/__init__.py +0 -0
- vayrm-0.1.0/paladin/cluster/membership/membership.py +0 -0
- vayrm-0.1.0/paladin/cluster/node_manager/__init__.py +0 -0
- vayrm-0.1.0/paladin/cluster/node_manager/node_manager.py +0 -0
- vayrm-0.1.0/paladin/cluster/placement/__init__.py +0 -0
- vayrm-0.1.0/paladin/cluster/placement/placement.py +0 -0
- vayrm-0.1.0/paladin/cluster/recovery/__init__.py +0 -0
- vayrm-0.1.0/paladin/cluster/recovery/recovery.py +0 -0
- vayrm-0.1.0/paladin/cluster/registry/__init__.py +0 -0
- vayrm-0.1.0/paladin/cluster/registry/registry.py +0 -0
- vayrm-0.1.0/paladin/cluster/replication/__init__.py +0 -0
- vayrm-0.1.0/paladin/cluster/replication/replication.py +0 -0
- vayrm-0.1.0/paladin/cluster/resource_manager/__init__.py +0 -0
- vayrm-0.1.0/paladin/cluster/resource_manager/resource_manager.py +0 -0
- vayrm-0.1.0/paladin/cluster/routing/__init__.py +0 -0
- vayrm-0.1.0/paladin/cluster/routing/routing.py +0 -0
- vayrm-0.1.0/paladin/cluster/scheduler/__init__.py +0 -0
- vayrm-0.1.0/paladin/cluster/scheduler/scheduler.py +0 -0
- vayrm-0.1.0/paladin/cluster/topology/__init__.py +0 -0
- vayrm-0.1.0/paladin/cluster/topology/topology.py +0 -0
- vayrm-0.1.0/paladin/core/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/ai/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/ai/agent.py +8 -0
- vayrm-0.1.0/paladin/core/ai/cognition.py +9 -0
- vayrm-0.1.0/paladin/core/ai/context.py +8 -0
- vayrm-0.1.0/paladin/core/ai/dataset_security/__init__.py +9 -0
- vayrm-0.1.0/paladin/core/ai/dataset_security/dataset.py +26 -0
- vayrm-0.1.0/paladin/core/ai/execution.py +8 -0
- vayrm-0.1.0/paladin/core/ai/registry/__init__.py +9 -0
- vayrm-0.1.0/paladin/core/ai/registry/registry.py +40 -0
- vayrm-0.1.0/paladin/core/ai/scheduler.py +9 -0
- vayrm-0.1.0/paladin/core/bootstrap/__init__.py +50 -0
- vayrm-0.1.0/paladin/core/bootstrap/docker.py +209 -0
- vayrm-0.1.0/paladin/core/bootstrap/environment.py +50 -0
- vayrm-0.1.0/paladin/core/bootstrap/headscale.py +177 -0
- vayrm-0.1.0/paladin/core/bootstrap/manager.py +260 -0
- vayrm-0.1.0/paladin/core/bootstrap/metrics.py +40 -0
- vayrm-0.1.0/paladin/core/bootstrap/platform/__init__.py +68 -0
- vayrm-0.1.0/paladin/core/bootstrap/platform/base.py +164 -0
- vayrm-0.1.0/paladin/core/bootstrap/platform/capabilities.py +166 -0
- vayrm-0.1.0/paladin/core/bootstrap/platform/linux.py +168 -0
- vayrm-0.1.0/paladin/core/bootstrap/platform/macos.py +131 -0
- vayrm-0.1.0/paladin/core/bootstrap/platform/service_manager.py +226 -0
- vayrm-0.1.0/paladin/core/bootstrap/platform/windows.py +162 -0
- vayrm-0.1.0/paladin/core/bootstrap/policies.py +5 -0
- vayrm-0.1.0/paladin/core/bootstrap/ports.py +141 -0
- vayrm-0.1.0/paladin/core/bootstrap/processes.py +138 -0
- vayrm-0.1.0/paladin/core/bootstrap/recovery.py +29 -0
- vayrm-0.1.0/paladin/core/bootstrap/sources.py +5 -0
- vayrm-0.1.0/paladin/core/bootstrap/state_machine.py +86 -0
- vayrm-0.1.0/paladin/core/bootstrap/tailscale.py +175 -0
- vayrm-0.1.0/paladin/core/bootstrap/validators.py +5 -0
- vayrm-0.1.0/paladin/core/capabilities/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/capabilities/descriptor.py +12 -0
- vayrm-0.1.0/paladin/core/capabilities/graph/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/capabilities/graph/dependencies.py +15 -0
- vayrm-0.1.0/paladin/core/capabilities/graph/graph.py +14 -0
- vayrm-0.1.0/paladin/core/capabilities/graph/query.py +10 -0
- vayrm-0.1.0/paladin/core/capabilities/manager.py +8 -0
- vayrm-0.1.0/paladin/core/capabilities/registry.py +8 -0
- vayrm-0.1.0/paladin/core/cluster/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/cluster/consensus/__init__.py +9 -0
- vayrm-0.1.0/paladin/core/cluster/consensus/consensus.py +44 -0
- vayrm-0.1.0/paladin/core/cluster/events.py +10 -0
- vayrm-0.1.0/paladin/core/cluster/health.py +8 -0
- vayrm-0.1.0/paladin/core/cluster/lifecycle.py +6 -0
- vayrm-0.1.0/paladin/core/cluster/manager.py +24 -0
- vayrm-0.1.0/paladin/core/cluster/membership.py +16 -0
- vayrm-0.1.0/paladin/core/cluster/state.py +11 -0
- vayrm-0.1.0/paladin/core/communication/__init__.py +100 -0
- vayrm-0.1.0/paladin/core/communication/cache/__init__.py +8 -0
- vayrm-0.1.0/paladin/core/communication/cache/cache.py +72 -0
- vayrm-0.1.0/paladin/core/communication/compression/__init__.py +12 -0
- vayrm-0.1.0/paladin/core/communication/compression/compression.py +51 -0
- vayrm-0.1.0/paladin/core/communication/connection/__init__.py +106 -0
- vayrm-0.1.0/paladin/core/communication/discovery/__init__.py +214 -0
- vayrm-0.1.0/paladin/core/communication/discovery/discovery.py +0 -0
- vayrm-0.1.0/paladin/core/communication/encryption/__init__.py +68 -0
- vayrm-0.1.0/paladin/core/communication/encryption/encryption.py +0 -0
- vayrm-0.1.0/paladin/core/communication/errors/__init__.py +65 -0
- vayrm-0.1.0/paladin/core/communication/events/__init__.py +130 -0
- vayrm-0.1.0/paladin/core/communication/gateway/__init__.py +9 -0
- vayrm-0.1.0/paladin/core/communication/gateway/gateway.py +156 -0
- vayrm-0.1.0/paladin/core/communication/heartbeat/__init__.py +116 -0
- vayrm-0.1.0/paladin/core/communication/heartbeat/heartbeat.py +0 -0
- vayrm-0.1.0/paladin/core/communication/identity/__init__.py +180 -0
- vayrm-0.1.0/paladin/core/communication/identity/identity.py +0 -0
- vayrm-0.1.0/paladin/core/communication/interfaces/__init__.py +57 -0
- vayrm-0.1.0/paladin/core/communication/interfaces/interfaces.py +193 -0
- vayrm-0.1.0/paladin/core/communication/latency/__init__.py +8 -0
- vayrm-0.1.0/paladin/core/communication/latency/latency.py +77 -0
- vayrm-0.1.0/paladin/core/communication/layer.py +857 -0
- vayrm-0.1.0/paladin/core/communication/messaging/__init__.py +95 -0
- vayrm-0.1.0/paladin/core/communication/messaging/messaging.py +0 -0
- vayrm-0.1.0/paladin/core/communication/messaging/secure_bus.py +144 -0
- vayrm-0.1.0/paladin/core/communication/monitoring/__init__.py +8 -0
- vayrm-0.1.0/paladin/core/communication/monitoring/monitor.py +64 -0
- vayrm-0.1.0/paladin/core/communication/network/__init__.py +77 -0
- vayrm-0.1.0/paladin/core/communication/network/context.py +59 -0
- vayrm-0.1.0/paladin/core/communication/network/events.py +47 -0
- vayrm-0.1.0/paladin/core/communication/network/monitor.py +140 -0
- vayrm-0.1.0/paladin/core/communication/network/resolver.py +125 -0
- vayrm-0.1.0/paladin/core/communication/network/transport.py +197 -0
- vayrm-0.1.0/paladin/core/communication/network/tuner.py +94 -0
- vayrm-0.1.0/paladin/core/communication/peer/__init__.py +188 -0
- vayrm-0.1.0/paladin/core/communication/peer/peer.py +0 -0
- vayrm-0.1.0/paladin/core/communication/plugins/__init__.py +76 -0
- vayrm-0.1.0/paladin/core/communication/protocols/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/communication/protocols/protocol.py +0 -0
- vayrm-0.1.0/paladin/core/communication/qos/__init__.py +8 -0
- vayrm-0.1.0/paladin/core/communication/qos/qos.py +99 -0
- vayrm-0.1.0/paladin/core/communication/registry.py +83 -0
- vayrm-0.1.0/paladin/core/communication/relay/__init__.py +84 -0
- vayrm-0.1.0/paladin/core/communication/reliability/__init__.py +8 -0
- vayrm-0.1.0/paladin/core/communication/reliability/reliability.py +97 -0
- vayrm-0.1.0/paladin/core/communication/routing/__init__.py +54 -0
- vayrm-0.1.0/paladin/core/communication/routing/router.py +0 -0
- vayrm-0.1.0/paladin/core/communication/security/__init__.py +100 -0
- vayrm-0.1.0/paladin/core/communication/security/handshake.py +120 -0
- vayrm-0.1.0/paladin/core/communication/security/security.py +110 -0
- vayrm-0.1.0/paladin/core/communication/serialization/__init__.py +128 -0
- vayrm-0.1.0/paladin/core/communication/serialization/serialization.py +0 -0
- vayrm-0.1.0/paladin/core/communication/sessions/__init__.py +109 -0
- vayrm-0.1.0/paladin/core/communication/sessions/session.py +0 -0
- vayrm-0.1.0/paladin/core/communication/streaming/__init__.py +21 -0
- vayrm-0.1.0/paladin/core/communication/streaming/bandwidth_optimizer/__init__.py +8 -0
- vayrm-0.1.0/paladin/core/communication/streaming/bandwidth_optimizer/bandwidth_optimizer.py +68 -0
- vayrm-0.1.0/paladin/core/communication/streaming/checkpoint_sync/__init__.py +8 -0
- vayrm-0.1.0/paladin/core/communication/streaming/checkpoint_sync/checkpoint_sync.py +28 -0
- vayrm-0.1.0/paladin/core/communication/streaming/checksum/__init__.py +8 -0
- vayrm-0.1.0/paladin/core/communication/streaming/checksum/checksum.py +48 -0
- vayrm-0.1.0/paladin/core/communication/streaming/chunk_manager/__init__.py +8 -0
- vayrm-0.1.0/paladin/core/communication/streaming/chunk_manager/chunk_manager.py +100 -0
- vayrm-0.1.0/paladin/core/communication/streaming/dataset_sync/__init__.py +8 -0
- vayrm-0.1.0/paladin/core/communication/streaming/dataset_sync/dataset_sync.py +28 -0
- vayrm-0.1.0/paladin/core/communication/streaming/file_transfer/__init__.py +8 -0
- vayrm-0.1.0/paladin/core/communication/streaming/file_transfer/file_transfer.py +28 -0
- vayrm-0.1.0/paladin/core/communication/streaming/media_stream/__init__.py +8 -0
- vayrm-0.1.0/paladin/core/communication/streaming/media_stream/media_stream.py +28 -0
- vayrm-0.1.0/paladin/core/communication/streaming/model_distribution/__init__.py +8 -0
- vayrm-0.1.0/paladin/core/communication/streaming/model_distribution/model_distribution.py +28 -0
- vayrm-0.1.0/paladin/core/communication/streaming/replication/__init__.py +8 -0
- vayrm-0.1.0/paladin/core/communication/streaming/replication/replication.py +28 -0
- vayrm-0.1.0/paladin/core/communication/streaming/resume_manager/__init__.py +8 -0
- vayrm-0.1.0/paladin/core/communication/streaming/resume_manager/resume_manager.py +84 -0
- vayrm-0.1.0/paladin/core/communication/streaming/scheduler/__init__.py +76 -0
- vayrm-0.1.0/paladin/core/communication/streaming/secure_transfer.py +90 -0
- vayrm-0.1.0/paladin/core/communication/streaming/synchronization/__init__.py +8 -0
- vayrm-0.1.0/paladin/core/communication/streaming/synchronization/synchronization.py +28 -0
- vayrm-0.1.0/paladin/core/communication/streaming/tensor_stream/__init__.py +8 -0
- vayrm-0.1.0/paladin/core/communication/streaming/tensor_stream/tensor_stream.py +28 -0
- vayrm-0.1.0/paladin/core/communication/streaming/transfer_manager/__init__.py +8 -0
- vayrm-0.1.0/paladin/core/communication/streaming/transfer_manager/transfer_manager.py +212 -0
- vayrm-0.1.0/paladin/core/communication/topology/__init__.py +74 -0
- vayrm-0.1.0/paladin/core/communication/transport/__init__.py +1 -0
- vayrm-0.1.0/paladin/core/communication/transport/future/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/communication/transport/future/transport.py +0 -0
- vayrm-0.1.0/paladin/core/communication/transport/grpc/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/communication/transport/grpc/transport.py +0 -0
- vayrm-0.1.0/paladin/core/communication/transport/quic/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/communication/transport/quic/client.py +0 -0
- vayrm-0.1.0/paladin/core/communication/transport/quic/connection.py +0 -0
- vayrm-0.1.0/paladin/core/communication/transport/quic/server.py +0 -0
- vayrm-0.1.0/paladin/core/communication/transport/quic/transport.py +0 -0
- vayrm-0.1.0/paladin/core/communication/transport/tcp/__init__.py +149 -0
- vayrm-0.1.0/paladin/core/communication/transport/tcp/client.py +0 -0
- vayrm-0.1.0/paladin/core/communication/transport/tcp/connection.py +0 -0
- vayrm-0.1.0/paladin/core/communication/transport/tcp/server.py +0 -0
- vayrm-0.1.0/paladin/core/communication/transport/tcp/transport.py +0 -0
- vayrm-0.1.0/paladin/core/communication/transport/websocket/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/communication/transport/websocket/transport.py +0 -0
- vayrm-0.1.0/paladin/core/communication/traversal/__init__.py +60 -0
- vayrm-0.1.0/paladin/core/configuration/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/configuration/configuration.py +0 -0
- vayrm-0.1.0/paladin/core/configuration/scopes.py +13 -0
- vayrm-0.1.0/paladin/core/diagnostics/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/diagnostics/diagnostics.py +0 -0
- vayrm-0.1.0/paladin/core/discovery/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/discovery/context.py +9 -0
- vayrm-0.1.0/paladin/core/discovery/events.py +10 -0
- vayrm-0.1.0/paladin/core/discovery/failure/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/discovery/failure/detector.py +6 -0
- vayrm-0.1.0/paladin/core/discovery/failure/isolation.py +5 -0
- vayrm-0.1.0/paladin/core/discovery/failure/suspicion.py +5 -0
- vayrm-0.1.0/paladin/core/discovery/gossip/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/discovery/gossip/exchange.py +5 -0
- vayrm-0.1.0/paladin/core/discovery/gossip/manager.py +6 -0
- vayrm-0.1.0/paladin/core/discovery/gossip/protocol.py +9 -0
- vayrm-0.1.0/paladin/core/discovery/gossip/state.py +9 -0
- vayrm-0.1.0/paladin/core/discovery/heartbeat/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/discovery/heartbeat/manager.py +5 -0
- vayrm-0.1.0/paladin/core/discovery/heartbeat/monitor.py +5 -0
- vayrm-0.1.0/paladin/core/discovery/heartbeat/scheduler.py +6 -0
- vayrm-0.1.0/paladin/core/discovery/manager.py +8 -0
- vayrm-0.1.0/paladin/core/discovery/policies.py +9 -0
- vayrm-0.1.0/paladin/core/discovery/registry.py +11 -0
- vayrm-0.1.0/paladin/core/discovery/runtime.py +7 -0
- vayrm-0.1.0/paladin/core/discovery/state.py +9 -0
- vayrm-0.1.0/paladin/core/federation/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/federation/directory.py +5 -0
- vayrm-0.1.0/paladin/core/federation/discovery.py +5 -0
- vayrm-0.1.0/paladin/core/federation/manager.py +5 -0
- vayrm-0.1.0/paladin/core/federation/policies.py +5 -0
- vayrm-0.1.0/paladin/core/federation/registry.py +5 -0
- vayrm-0.1.0/paladin/core/federation/remote.py +5 -0
- vayrm-0.1.0/paladin/core/federation/routing.py +5 -0
- vayrm-0.1.0/paladin/core/federation/trust.py +5 -0
- vayrm-0.1.0/paladin/core/interfaces/__init__.py +325 -0
- vayrm-0.1.0/paladin/core/interfaces/icluster.py +1 -0
- vayrm-0.1.0/paladin/core/interfaces/icommunication.py +0 -0
- vayrm-0.1.0/paladin/core/interfaces/idataset.py +0 -0
- vayrm-0.1.0/paladin/core/interfaces/imodel.py +0 -0
- vayrm-0.1.0/paladin/core/interfaces/iplugin.py +0 -0
- vayrm-0.1.0/paladin/core/interfaces/iresource.py +0 -0
- vayrm-0.1.0/paladin/core/interfaces/iruntime.py +0 -0
- vayrm-0.1.0/paladin/core/interfaces/ischeduler.py +0 -0
- vayrm-0.1.0/paladin/core/interfaces/isecurity.py +0 -0
- vayrm-0.1.0/paladin/core/interfaces/istorage.py +0 -0
- vayrm-0.1.0/paladin/core/interfaces/istreaming.py +0 -0
- vayrm-0.1.0/paladin/core/interfaces/itelemetry.py +0 -0
- vayrm-0.1.0/paladin/core/interfaces/itransport.py +0 -0
- vayrm-0.1.0/paladin/core/kernel/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/kernel/context.py +19 -0
- vayrm-0.1.0/paladin/core/kernel/diagnostics.py +15 -0
- vayrm-0.1.0/paladin/core/kernel/events.py +13 -0
- vayrm-0.1.0/paladin/core/kernel/health.py +19 -0
- vayrm-0.1.0/paladin/core/kernel/kernel.py +23 -0
- vayrm-0.1.0/paladin/core/kernel/lifecycle.py +35 -0
- vayrm-0.1.0/paladin/core/kernel/manifest.py +29 -0
- vayrm-0.1.0/paladin/core/kernel/runtimes/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/kernel/runtimes/descriptor.py +30 -0
- vayrm-0.1.0/paladin/core/kernel/runtimes/registry.py +21 -0
- vayrm-0.1.0/paladin/core/kernel/state.py +39 -0
- vayrm-0.1.0/paladin/core/logging/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/logging/logging.py +0 -0
- vayrm-0.1.0/paladin/core/logging_setup.py +98 -0
- vayrm-0.1.0/paladin/core/network/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/bus.py +56 -0
- vayrm-0.1.0/paladin/core/network/config.py +202 -0
- vayrm-0.1.0/paladin/core/network/connection/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/connection/manager.py +57 -0
- vayrm-0.1.0/paladin/core/network/connection/pool.py +43 -0
- vayrm-0.1.0/paladin/core/network/connection/registry.py +19 -0
- vayrm-0.1.0/paladin/core/network/connection/retry.py +30 -0
- vayrm-0.1.0/paladin/core/network/connection/state.py +64 -0
- vayrm-0.1.0/paladin/core/network/controlplane/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/controlplane/acl/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/controlplane/acl/acl_manager.py +69 -0
- vayrm-0.1.0/paladin/core/network/controlplane/audit/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/controlplane/audit/logger.py +33 -0
- vayrm-0.1.0/paladin/core/network/controlplane/authentication/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/controlplane/authentication/auth.py +64 -0
- vayrm-0.1.0/paladin/core/network/controlplane/authorization/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/controlplane/authorization/authz.py +42 -0
- vayrm-0.1.0/paladin/core/network/controlplane/cluster/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/controlplane/cluster/synchronizer.py +32 -0
- vayrm-0.1.0/paladin/core/network/controlplane/configuration/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/controlplane/configuration/manager.py +37 -0
- vayrm-0.1.0/paladin/core/network/controlplane/derp/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/controlplane/derp/derp_coordinator.py +31 -0
- vayrm-0.1.0/paladin/core/network/controlplane/events.py +57 -0
- vayrm-0.1.0/paladin/core/network/controlplane/exceptions.py +26 -0
- vayrm-0.1.0/paladin/core/network/controlplane/identity/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/controlplane/identity/manager.py +92 -0
- vayrm-0.1.0/paladin/core/network/controlplane/models.py +70 -0
- vayrm-0.1.0/paladin/core/network/controlplane/monitoring/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/controlplane/monitoring/monitor.py +27 -0
- vayrm-0.1.0/paladin/core/network/controlplane/nat/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/controlplane/nat/nat_coordinator.py +30 -0
- vayrm-0.1.0/paladin/core/network/controlplane/peer_coordinator.py +40 -0
- vayrm-0.1.0/paladin/core/network/controlplane/registry/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/controlplane/registry/registry.py +67 -0
- vayrm-0.1.0/paladin/core/network/controlplane/routing/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/controlplane/routing/routing.py +32 -0
- vayrm-0.1.0/paladin/core/network/controlplane/services/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/controlplane/services/identity_service.py +16 -0
- vayrm-0.1.0/paladin/core/network/controlplane/topology/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/controlplane/topology/topology.py +54 -0
- vayrm-0.1.0/paladin/core/network/discovery/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/discovery/cache.py +30 -0
- vayrm-0.1.0/paladin/core/network/discovery/interfaces.py +43 -0
- vayrm-0.1.0/paladin/core/network/discovery/manager.py +49 -0
- vayrm-0.1.0/paladin/core/network/discovery/provider.py +331 -0
- vayrm-0.1.0/paladin/core/network/discovery/synchronizer.py +75 -0
- vayrm-0.1.0/paladin/core/network/events.py +136 -0
- vayrm-0.1.0/paladin/core/network/exceptions.py +34 -0
- vayrm-0.1.0/paladin/core/network/headscale/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/headscale/acl.py +11 -0
- vayrm-0.1.0/paladin/core/network/headscale/api.py +132 -0
- vayrm-0.1.0/paladin/core/network/headscale/client.py +163 -0
- vayrm-0.1.0/paladin/core/network/headscale/headscale_state.py +107 -0
- vayrm-0.1.0/paladin/core/network/headscale/headscale_sync_service.py +349 -0
- vayrm-0.1.0/paladin/core/network/headscale/health.py +76 -0
- vayrm-0.1.0/paladin/core/network/headscale/identity.py +8 -0
- vayrm-0.1.0/paladin/core/network/headscale/models.py +28 -0
- vayrm-0.1.0/paladin/core/network/headscale/registration.py +368 -0
- vayrm-0.1.0/paladin/core/network/headscale/startup_check.py +651 -0
- vayrm-0.1.0/paladin/core/network/headscale/sync.py +75 -0
- vayrm-0.1.0/paladin/core/network/health/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/health/monitor.py +50 -0
- vayrm-0.1.0/paladin/core/network/health/states.py +13 -0
- vayrm-0.1.0/paladin/core/network/management/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/management/config.py +35 -0
- vayrm-0.1.0/paladin/core/network/management/doctor.py +70 -0
- vayrm-0.1.0/paladin/core/network/management/headscale.py +77 -0
- vayrm-0.1.0/paladin/core/network/management/installer.py +44 -0
- vayrm-0.1.0/paladin/core/network/management/logs.py +21 -0
- vayrm-0.1.0/paladin/core/network/management/models.py +58 -0
- vayrm-0.1.0/paladin/core/network/management/operator.py +37 -0
- vayrm-0.1.0/paladin/core/network/management/provision.py +20 -0
- vayrm-0.1.0/paladin/core/network/management/tailscale.py +125 -0
- vayrm-0.1.0/paladin/core/network/manager.py +266 -0
- vayrm-0.1.0/paladin/core/network/metrics/__init__.py +6 -0
- vayrm-0.1.0/paladin/core/network/metrics/manager.py +77 -0
- vayrm-0.1.0/paladin/core/network/orchestrator/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/orchestrator/orchestrator.py +125 -0
- vayrm-0.1.0/paladin/core/network/orchestrator/route_evaluator.py +56 -0
- vayrm-0.1.0/paladin/core/network/platform/__init__.py +17 -0
- vayrm-0.1.0/paladin/core/network/platform/capabilities.py +237 -0
- vayrm-0.1.0/paladin/core/network/scheduler/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/scheduler/network_scheduler.py +0 -0
- vayrm-0.1.0/paladin/core/network/security/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/security/policy.py +0 -0
- vayrm-0.1.0/paladin/core/network/services/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/services/heartbeat.py +149 -0
- vayrm-0.1.0/paladin/core/network/session/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/session/manager.py +139 -0
- vayrm-0.1.0/paladin/core/network/transfer/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/transfer/checksum.py +13 -0
- vayrm-0.1.0/paladin/core/network/transfer/chunk_manager.py +17 -0
- vayrm-0.1.0/paladin/core/network/transfer/compression.py +13 -0
- vayrm-0.1.0/paladin/core/network/transfer/reassembly.py +27 -0
- vayrm-0.1.0/paladin/core/network/transfer/resume.py +36 -0
- vayrm-0.1.0/paladin/core/network/transfer/transfer_manager.py +103 -0
- vayrm-0.1.0/paladin/core/network/transfer/verification.py +13 -0
- vayrm-0.1.0/paladin/core/network/transport/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/transport/base.py +125 -0
- vayrm-0.1.0/paladin/core/network/transport/factory.py +27 -0
- vayrm-0.1.0/paladin/core/network/transport/interfaces.py +90 -0
- vayrm-0.1.0/paladin/core/network/transport/manager.py +37 -0
- vayrm-0.1.0/paladin/core/network/transport/mock_provider.py +60 -0
- vayrm-0.1.0/paladin/core/network/transport/provider.py +62 -0
- vayrm-0.1.0/paladin/core/network/transport/tcp_provider.py +45 -0
- vayrm-0.1.0/paladin/core/network/wireguard/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/network/wireguard/health_monitor.py +30 -0
- vayrm-0.1.0/paladin/core/network/wireguard/interface_manager.py +19 -0
- vayrm-0.1.0/paladin/core/network/wireguard/key_manager.py +61 -0
- vayrm-0.1.0/paladin/core/network/wireguard/peer_manager.py +33 -0
- vayrm-0.1.0/paladin/core/network/wireguard/provider.py +41 -0
- vayrm-0.1.0/paladin/core/network/wireguard/system_provider.py +85 -0
- vayrm-0.1.0/paladin/core/network/wireguard/tunnel_manager.py +25 -0
- vayrm-0.1.0/paladin/core/node/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/node/descriptor.py +10 -0
- vayrm-0.1.0/paladin/core/node/events.py +9 -0
- vayrm-0.1.0/paladin/core/node/health.py +6 -0
- vayrm-0.1.0/paladin/core/node/identity.py +9 -0
- vayrm-0.1.0/paladin/core/node/lifecycle.py +27 -0
- vayrm-0.1.0/paladin/core/node/manager.py +10 -0
- vayrm-0.1.0/paladin/core/node/state.py +15 -0
- vayrm-0.1.0/paladin/core/platform/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/platform/common/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/platform/common/common.py +0 -0
- vayrm-0.1.0/paladin/core/platform/drivers/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/platform/drivers/drivers.py +0 -0
- vayrm-0.1.0/paladin/core/platform/linux/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/platform/linux/linux.py +0 -0
- vayrm-0.1.0/paladin/core/platform/macos/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/platform/macos/macos.py +0 -0
- vayrm-0.1.0/paladin/core/platform/windows/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/platform/windows/windows.py +0 -0
- vayrm-0.1.0/paladin/core/plugins/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/plugins/manager.py +17 -0
- vayrm-0.1.0/paladin/core/plugins/manifest.py +24 -0
- vayrm-0.1.0/paladin/core/plugins/registry.py +11 -0
- vayrm-0.1.0/paladin/core/research/__init__.py +9 -0
- vayrm-0.1.0/paladin/core/resource_fabric/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resource_fabric/admission_control/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resource_fabric/admission_control/admission_control.py +0 -0
- vayrm-0.1.0/paladin/core/resource_fabric/allocator/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resource_fabric/allocator/allocator.py +0 -0
- vayrm-0.1.0/paladin/core/resource_fabric/discovery/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resource_fabric/discovery/discovery.py +0 -0
- vayrm-0.1.0/paladin/core/resource_fabric/gpu_pool/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resource_fabric/gpu_pool/gpu_pool.py +0 -0
- vayrm-0.1.0/paladin/core/resource_fabric/inventory/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resource_fabric/inventory/inventory.py +0 -0
- vayrm-0.1.0/paladin/core/resource_fabric/memory_pool/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resource_fabric/memory_pool/memory_pool.py +0 -0
- vayrm-0.1.0/paladin/core/resource_fabric/network_pool/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resource_fabric/network_pool/network_pool.py +0 -0
- vayrm-0.1.0/paladin/core/resource_fabric/placement/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resource_fabric/placement/placement.py +0 -0
- vayrm-0.1.0/paladin/core/resource_fabric/quotas/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resource_fabric/quotas/quotas.py +0 -0
- vayrm-0.1.0/paladin/core/resource_fabric/storage_pool/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resource_fabric/storage_pool/storage_pool.py +0 -0
- vayrm-0.1.0/paladin/core/resources/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resources/allocator/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resources/allocator/allocator.py +0 -0
- vayrm-0.1.0/paladin/core/resources/bandwidth/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resources/bandwidth/bandwidth.py +0 -0
- vayrm-0.1.0/paladin/core/resources/cpu/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resources/cpu/cpu.py +0 -0
- vayrm-0.1.0/paladin/core/resources/disk/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resources/disk/disk.py +0 -0
- vayrm-0.1.0/paladin/core/resources/gpu/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resources/gpu/gpu.py +0 -0
- vayrm-0.1.0/paladin/core/resources/manager.py +12 -0
- vayrm-0.1.0/paladin/core/resources/memory/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resources/memory/memory.py +0 -0
- vayrm-0.1.0/paladin/core/resources/models.py +42 -0
- vayrm-0.1.0/paladin/core/resources/network/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resources/network/network.py +0 -0
- vayrm-0.1.0/paladin/core/resources/npu/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resources/npu/npu.py +0 -0
- vayrm-0.1.0/paladin/core/resources/power/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resources/power/power.py +0 -0
- vayrm-0.1.0/paladin/core/resources/predictor/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resources/predictor/predictor.py +0 -0
- vayrm-0.1.0/paladin/core/resources/registry.py +11 -0
- vayrm-0.1.0/paladin/core/resources/storage/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resources/storage/storage.py +0 -0
- vayrm-0.1.0/paladin/core/resources/telemetry/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resources/telemetry/telemetry.py +0 -0
- vayrm-0.1.0/paladin/core/resources/temperature/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/resources/temperature/temperature.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/event_bus/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/event_bus/event_bus.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/executor/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/executor/executor.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/job_dispatcher/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/job_dispatcher/job_dispatcher.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/lifecycle/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/lifecycle/lifecycle.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/plugin_manager/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/plugin_manager/plugin_manager.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/runtime_api/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/runtime_api/runtime_api.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/scheduler/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/scheduler/scheduler.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/service_manager/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/service_manager/service_manager.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/state_machine/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/state_machine/state_machine.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/task_manager/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/task_manager/task_manager.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/task_queue/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/task_queue/task_queue.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/worker_pool/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/runtime/worker_pool/worker_pool.py +0 -0
- vayrm-0.1.0/paladin/core/scheduler/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/scheduler/execution_flow.py +8 -0
- vayrm-0.1.0/paladin/core/scheduler/executor.py +8 -0
- vayrm-0.1.0/paladin/core/scheduler/placement.py +7 -0
- vayrm-0.1.0/paladin/core/scheduler/queue.py +7 -0
- vayrm-0.1.0/paladin/core/scheduler/scheduler.py +8 -0
- vayrm-0.1.0/paladin/core/security/__init__.py +1 -0
- vayrm-0.1.0/paladin/core/security/audit/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/security/audit/journal.py +12 -0
- vayrm-0.1.0/paladin/core/security/audit/logger.py +7 -0
- vayrm-0.1.0/paladin/core/security/audit/retention.py +10 -0
- vayrm-0.1.0/paladin/core/security/authentication/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/security/authentication/handshake.py +16 -0
- vayrm-0.1.0/paladin/core/security/authentication/manager.py +17 -0
- vayrm-0.1.0/paladin/core/security/authentication/policy.py +12 -0
- vayrm-0.1.0/paladin/core/security/authorization/__init__.py +1 -0
- vayrm-0.1.0/paladin/core/security/authorization/manager.py +21 -0
- vayrm-0.1.0/paladin/core/security/authorization/policy.py +10 -0
- vayrm-0.1.0/paladin/core/security/authorization/rbac.py +23 -0
- vayrm-0.1.0/paladin/core/security/bus_integration.py +8 -0
- vayrm-0.1.0/paladin/core/security/crypto/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/security/crypto/keys.py +18 -0
- vayrm-0.1.0/paladin/core/security/crypto/provider.py +38 -0
- vayrm-0.1.0/paladin/core/security/domains/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/security/domains/domain.py +29 -0
- vayrm-0.1.0/paladin/core/security/hardware/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/security/hardware/provider.py +21 -0
- vayrm-0.1.0/paladin/core/security/identity/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/security/identity/descriptor.py +13 -0
- vayrm-0.1.0/paladin/core/security/identity/identity.py +36 -0
- vayrm-0.1.0/paladin/core/security/identity/registry.py +17 -0
- vayrm-0.1.0/paladin/core/security/identity/validator.py +13 -0
- vayrm-0.1.0/paladin/core/security/identity_store.py +34 -0
- vayrm-0.1.0/paladin/core/security/peer_registry.py +56 -0
- vayrm-0.1.0/paladin/core/security/pki/__init__.py +3 -0
- vayrm-0.1.0/paladin/core/security/pki/authority.py +12 -0
- vayrm-0.1.0/paladin/core/security/pki/ca.py +118 -0
- vayrm-0.1.0/paladin/core/security/pki/csr.py +10 -0
- vayrm-0.1.0/paladin/core/security/pki/manager.py +14 -0
- vayrm-0.1.0/paladin/core/security/pki/revocation.py +13 -0
- vayrm-0.1.0/paladin/core/security/pki/store.py +20 -0
- vayrm-0.1.0/paladin/core/security/pki/validator.py +16 -0
- vayrm-0.1.0/paladin/core/security/policy/__init__.py +1 -0
- vayrm-0.1.0/paladin/core/security/policy/policy.py +103 -0
- vayrm-0.1.0/paladin/core/security/runtime/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/security/runtime/context.py +22 -0
- vayrm-0.1.0/paladin/core/security/runtime/events.py +37 -0
- vayrm-0.1.0/paladin/core/security/runtime/lifecycle.py +26 -0
- vayrm-0.1.0/paladin/core/security/runtime/manager.py +49 -0
- vayrm-0.1.0/paladin/core/security/secrets/__init__.py +1 -0
- vayrm-0.1.0/paladin/core/security/secrets/manager.py +7 -0
- vayrm-0.1.0/paladin/core/security/secrets/provider.py +9 -0
- vayrm-0.1.0/paladin/core/security/secrets/rotation.py +6 -0
- vayrm-0.1.0/paladin/core/security/secrets/store.py +14 -0
- vayrm-0.1.0/paladin/core/security/secrets/vault.py +65 -0
- vayrm-0.1.0/paladin/core/security/security.py +0 -0
- vayrm-0.1.0/paladin/core/security/sessions/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/security/sessions/descriptor.py +11 -0
- vayrm-0.1.0/paladin/core/security/sessions/lifecycle.py +12 -0
- vayrm-0.1.0/paladin/core/security/sessions/manager.py +18 -0
- vayrm-0.1.0/paladin/core/security/sessions/state.py +11 -0
- vayrm-0.1.0/paladin/core/security/threats/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/security/threats/catalog.py +23 -0
- vayrm-0.1.0/paladin/core/security/threats/classification.py +17 -0
- vayrm-0.1.0/paladin/core/security/threats/mitigation.py +11 -0
- vayrm-0.1.0/paladin/core/security/threats/severity.py +23 -0
- vayrm-0.1.0/paladin/core/security/trust/__init__.py +1 -0
- vayrm-0.1.0/paladin/core/security/trust/engine.py +16 -0
- vayrm-0.1.0/paladin/core/security/trust/evaluator.py +6 -0
- vayrm-0.1.0/paladin/core/security/trust/evidence.py +17 -0
- vayrm-0.1.0/paladin/core/security/trust/graph.py +11 -0
- vayrm-0.1.0/paladin/core/security/trust/manager.py +16 -0
- vayrm-0.1.0/paladin/core/security/trust/policy.py +9 -0
- vayrm-0.1.0/paladin/core/security/trust/reputation.py +3 -0
- vayrm-0.1.0/paladin/core/security/trust/trust.py +62 -0
- vayrm-0.1.0/paladin/core/services/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/services/authentication/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/services/authentication/service.py +0 -0
- vayrm-0.1.0/paladin/core/services/cache/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/services/cache/service.py +0 -0
- vayrm-0.1.0/paladin/core/services/descriptor.py +7 -0
- vayrm-0.1.0/paladin/core/services/discovery/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/services/discovery/service.py +0 -0
- vayrm-0.1.0/paladin/core/services/discovery.py +7 -0
- vayrm-0.1.0/paladin/core/services/health/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/services/health/service.py +0 -0
- vayrm-0.1.0/paladin/core/services/health.py +7 -0
- vayrm-0.1.0/paladin/core/services/heartbeat/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/services/heartbeat/service.py +0 -0
- vayrm-0.1.0/paladin/core/services/lifecycle.py +7 -0
- vayrm-0.1.0/paladin/core/services/logging/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/services/logging/service.py +0 -0
- vayrm-0.1.0/paladin/core/services/manager.py +7 -0
- vayrm-0.1.0/paladin/core/services/manifest.py +7 -0
- vayrm-0.1.0/paladin/core/services/metrics/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/services/metrics/service.py +0 -0
- vayrm-0.1.0/paladin/core/services/notifications/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/services/notifications/service.py +0 -0
- vayrm-0.1.0/paladin/core/services/registry.py +7 -0
- vayrm-0.1.0/paladin/core/services/resolver.py +7 -0
- vayrm-0.1.0/paladin/core/services/resource_monitor/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/services/resource_monitor/service.py +0 -0
- vayrm-0.1.0/paladin/core/services/runtime.py +8 -0
- vayrm-0.1.0/paladin/core/services/scheduler/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/services/scheduler/service.py +0 -0
- vayrm-0.1.0/paladin/core/services/state.py +24 -0
- vayrm-0.1.0/paladin/core/services/sync/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/services/sync/service.py +0 -0
- vayrm-0.1.0/paladin/core/services/transfer/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/services/transfer/service.py +0 -0
- vayrm-0.1.0/paladin/core/storage/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/storage/artifacts/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/storage/artifacts/artifacts.py +0 -0
- vayrm-0.1.0/paladin/core/storage/cache/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/storage/cache/cache.py +0 -0
- vayrm-0.1.0/paladin/core/storage/checkpoints/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/storage/checkpoints/checkpoints.py +0 -0
- vayrm-0.1.0/paladin/core/storage/cleanup/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/storage/cleanup/cleanup.py +0 -0
- vayrm-0.1.0/paladin/core/storage/datasets/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/storage/datasets/datasets.py +0 -0
- vayrm-0.1.0/paladin/core/storage/distributed_store/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/storage/distributed_store/distributed_store.py +0 -0
- vayrm-0.1.0/paladin/core/storage/logs/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/storage/logs/logs.py +0 -0
- vayrm-0.1.0/paladin/core/storage/metadata/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/storage/metadata/metadata.py +0 -0
- vayrm-0.1.0/paladin/core/storage/metadata/store.py +7 -0
- vayrm-0.1.0/paladin/core/storage/models/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/storage/models/models.py +0 -0
- vayrm-0.1.0/paladin/core/storage/object_store/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/storage/object_store/object_store.py +0 -0
- vayrm-0.1.0/paladin/core/storage/replication/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/storage/replication/replication.py +0 -0
- vayrm-0.1.0/paladin/core/storage/snapshots/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/storage/snapshots/snapshots.py +0 -0
- vayrm-0.1.0/paladin/core/system/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/system/bus.py +15 -0
- vayrm-0.1.0/paladin/core/system/commands.py +7 -0
- vayrm-0.1.0/paladin/core/system/events.py +7 -0
- vayrm-0.1.0/paladin/core/system/queries.py +7 -0
- vayrm-0.1.0/paladin/core/system/subscriptions.py +7 -0
- vayrm-0.1.0/paladin/core/telemetry/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/telemetry/alerts/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/telemetry/alerts/alerts.py +0 -0
- vayrm-0.1.0/paladin/core/telemetry/analytics/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/telemetry/analytics/analytics.py +0 -0
- vayrm-0.1.0/paladin/core/telemetry/dashboards/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/telemetry/dashboards/dashboards.py +0 -0
- vayrm-0.1.0/paladin/core/telemetry/events/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/telemetry/events/events.py +0 -0
- vayrm-0.1.0/paladin/core/telemetry/metrics/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/telemetry/metrics/metrics.py +0 -0
- vayrm-0.1.0/paladin/core/telemetry/profiling/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/telemetry/profiling/profiling.py +0 -0
- vayrm-0.1.0/paladin/core/telemetry/tracing/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/telemetry/tracing/tracing.py +0 -0
- vayrm-0.1.0/paladin/core/time/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/time/clock.py +5 -0
- vayrm-0.1.0/paladin/core/time/logical.py +5 -0
- vayrm-0.1.0/paladin/core/time/synchronization.py +5 -0
- vayrm-0.1.0/paladin/core/time/vector.py +5 -0
- vayrm-0.1.0/paladin/core/topology/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/topology/graph.py +5 -0
- vayrm-0.1.0/paladin/core/topology/manager.py +5 -0
- vayrm-0.1.0/paladin/core/topology/snapshot.py +5 -0
- vayrm-0.1.0/paladin/core/utilities/__init__.py +0 -0
- vayrm-0.1.0/paladin/core/utilities/utilities.py +0 -0
- vayrm-0.1.0/paladin/protocol/__init__.py +0 -0
- vayrm-0.1.0/paladin/protocol/commands/__init__.py +0 -0
- vayrm-0.1.0/paladin/protocol/commands/commands.py +0 -0
- vayrm-0.1.0/paladin/protocol/errors/__init__.py +0 -0
- vayrm-0.1.0/paladin/protocol/errors/errors.py +0 -0
- vayrm-0.1.0/paladin/protocol/events/__init__.py +0 -0
- vayrm-0.1.0/paladin/protocol/events/events.py +0 -0
- vayrm-0.1.0/paladin/protocol/messages/__init__.py +0 -0
- vayrm-0.1.0/paladin/protocol/messages/messages.py +0 -0
- vayrm-0.1.0/paladin/protocol/protobuf/__init__.py +0 -0
- vayrm-0.1.0/paladin/protocol/responses/__init__.py +0 -0
- vayrm-0.1.0/paladin/protocol/responses/responses.py +0 -0
- vayrm-0.1.0/paladin/protocol/schemas/__init__.py +416 -0
- vayrm-0.1.0/paladin/protocol/versioning/__init__.py +0 -0
- vayrm-0.1.0/paladin/protocol/versioning/versioning.py +0 -0
- vayrm-0.1.0/paladin/protocol/wire/__init__.py +0 -0
- vayrm-0.1.0/paladin/protocol/wire/common/__init__.py +0 -0
- vayrm-0.1.0/paladin/protocol/wire/common/types.py +7 -0
- vayrm-0.1.0/paladin/protocol/wire/evolution.py +10 -0
- vayrm-0.1.0/pyproject.toml +68 -0
- vayrm-0.1.0/setup.cfg +4 -0
- vayrm-0.1.0/tests/test_adaptive_v3.py +122 -0
- vayrm-0.1.0/tests/test_estimation.py +104 -0
- vayrm-0.1.0/tests/test_live_dynamic_runtime.py +186 -0
- vayrm-0.1.0/tests/test_macos_telemetry.py +79 -0
- vayrm-0.1.0/tests/test_peer_view.py +53 -0
- vayrm-0.1.0/tests/test_phase_f.py +94 -0
- vayrm-0.1.0/tests/test_preemptive_state.py +44 -0
- vayrm-0.1.0/tests/test_recursive_subroots.py +67 -0
- vayrm-0.1.0/tests/test_root_telemetry_tracker_session.py +189 -0
- vayrm-0.1.0/tests/test_state_buffer.py +65 -0
- vayrm-0.1.0/tests/test_telemetry_contract.py +92 -0
- vayrm-0.1.0/vayrm/__init__.py +8 -0
- vayrm-0.1.0/vayrm.egg-info/PKG-INFO +166 -0
- vayrm-0.1.0/vayrm.egg-info/SOURCES.txt +1000 -0
- vayrm-0.1.0/vayrm.egg-info/dependency_links.txt +1 -0
- vayrm-0.1.0/vayrm.egg-info/entry_points.txt +3 -0
- vayrm-0.1.0/vayrm.egg-info/requires.txt +20 -0
- vayrm-0.1.0/vayrm.egg-info/top_level.txt +7 -0
vayrm-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: vayrm
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Adaptive Compute Runtime
|
|
5
|
+
Requires-Python: >=3.10
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
Requires-Dist: psutil>=5.9.0
|
|
8
|
+
Requires-Dist: cryptography>=41.0.0
|
|
9
|
+
Requires-Dist: PyYAML>=6.0.1
|
|
10
|
+
Requires-Dist: aiohttp>=3.9.0
|
|
11
|
+
Requires-Dist: qrcode>=7.4
|
|
12
|
+
Requires-Dist: pillow>=10.0.0
|
|
13
|
+
Requires-Dist: python-dotenv>=1.0.0
|
|
14
|
+
Requires-Dist: rich>=13.0.0
|
|
15
|
+
Provides-Extra: macos
|
|
16
|
+
Provides-Extra: windows
|
|
17
|
+
Provides-Extra: linux
|
|
18
|
+
Provides-Extra: dev
|
|
19
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
20
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
|
|
21
|
+
Requires-Dist: mypy>=1.0.0; extra == "dev"
|
|
22
|
+
Requires-Dist: ruff>=0.0.260; extra == "dev"
|
|
23
|
+
|
|
24
|
+
# Adaptive Compute Runtime (ACR)
|
|
25
|
+
|
|
26
|
+
ACR is an **OS-independent**, **Network-provider-independent**, and **Scheduler-independent** Python library for intelligent, decentralized, and adaptive workload scheduling across heterogeneous machines.
|
|
27
|
+
|
|
28
|
+
The core principle of ACR is to completely decouple the adaptive scheduling algorithms from static network constraints.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 1. Architecture
|
|
33
|
+
|
|
34
|
+
ACR is composed of a generic hierarchy that remains portable across macOS, Windows, and Linux.
|
|
35
|
+
|
|
36
|
+
* **Root**: The orchestrator role. The Root aggregates telemetry (NodeKnowledge), maintains the network route registry, and uses Schedulers to dispatch ExecutionPlans.
|
|
37
|
+
* **Node**: The worker role. The Node discovers its local capabilities, continually monitors its telemetry, and securely connects to the Root to advertise its service endpoint.
|
|
38
|
+
* **Endpoint Model**: ACR strictly distinguishes between the **Observed** IP/port (what the Root sees natively from the socket connection) and the **Advertised** IP/port (what the Node declares as its reachable listener). ACR always **Validates** the advertised endpoint over TCP before updating the internal Route table.
|
|
39
|
+
* **Authentication & Handshake**: Nodes register using an application-level handshake payload over a persistent TCP session that transmits the cluster ID, session ID, and endpoint topology.
|
|
40
|
+
* **Telemetry**: Node-native psutil monitors dynamically measure CPU and RAM degradation over time.
|
|
41
|
+
* **Scheduler**: Schedulers (RoundRobin, LeastLoaded, ResourceAware, HeterogeneityAware, Adaptive) perform workload allocation using real-time NodeSnapshot data without hardcoded hardware assumptions.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 2. Platform Support & Validation Status
|
|
46
|
+
|
|
47
|
+
**Root and Node are portable roles, not hardware-locked classes.** ACR guarantees identical algorithmic behavior across operating systems. However, validation evidence is tracked strictly:
|
|
48
|
+
|
|
49
|
+
* **macOS (Root / Node):**
|
|
50
|
+
* Architecture/Implementation: **PASS**
|
|
51
|
+
* Automated Deterministic Testing: **PASS**
|
|
52
|
+
* Physical TCP Runtime Execution: **PASS**
|
|
53
|
+
* **Windows / Linux (Root / Node):**
|
|
54
|
+
* Architecture/Implementation: **PASS**
|
|
55
|
+
* Automated Deterministic Testing: **PASS**
|
|
56
|
+
* Physical TCP Runtime Execution: **NOT RUN / DEFERRED** (pending available physical peers)
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## 3. Running ACR
|
|
61
|
+
|
|
62
|
+
ACR listener ports are **dynamically assigned by the OS** by default. You do not need to choose or remember a port number.
|
|
63
|
+
|
|
64
|
+
### Running as Root
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
python3 -m acr.entrypoint --role root
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
The Root selects an available port at runtime, binds its listener, tests TCP reachability to itself, and publishes its actual endpoint over the discovery locator.
|
|
71
|
+
|
|
72
|
+
### Running as Node
|
|
73
|
+
|
|
74
|
+
The Node dynamically selects its own service port, searches for the Root via discovery, probes it via TCP, and connects automatically:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# macOS / Linux:
|
|
78
|
+
python3 -m acr.entrypoint --role node
|
|
79
|
+
|
|
80
|
+
# Windows:
|
|
81
|
+
python -m acr.entrypoint --role node
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### The Automatic Flow
|
|
85
|
+
|
|
86
|
+
1. Root starts, binds to port `0` (dynamic OS assignment).
|
|
87
|
+
2. Root retrieves its Tailscale identity and discovers its assigned port.
|
|
88
|
+
3. Root tests if it can reach itself via TCP.
|
|
89
|
+
4. Root publishes a discovery record on its locator.
|
|
90
|
+
5. Node starts, asks Tailscale for peers.
|
|
91
|
+
6. Node scans peers for the Root locator.
|
|
92
|
+
7. Node extracts Root's dynamic endpoint and runs a TCP reachability probe.
|
|
93
|
+
8. If TCP passes, Node handshakes with Root and advertises its own dynamic endpoint.
|
|
94
|
+
9. Root validates Node's advertised endpoint via TCP probe.
|
|
95
|
+
10. Route is established using the validated endpoints.
|
|
96
|
+
|
|
97
|
+
### Failure Diagnostics
|
|
98
|
+
|
|
99
|
+
The runtime actively distinguishes failure modes:
|
|
100
|
+
- **Discovery Failure**: `[ACR NODE] discovery=FAIL`. Node cannot find Root. Ensure Root is running and Tailscale peers are online.
|
|
101
|
+
- **TCP Failure / Firewall Failure**: `[ACR TCP CHECK] result=FAIL`. Discovery worked but connection failed. Windows or macOS Firewall may be blocking the dynamic port. Read the actual port from the log and allow it.
|
|
102
|
+
- **Handshake Failure**: `[ACR NODE] handshake=FAIL`. TCP connected, but protocol failed (e.g. cluster ID mismatch).
|
|
103
|
+
- **Authentication/Session Failure**: Protocol mismatched or node identity blocked.
|
|
104
|
+
- **Endpoint Validation Failure**: Root connected to Node, but Root's return TCP probe to Node failed. Route will remain `is_routable = False`. Node must allow inbound on its actual port.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## 4. The Endpoint Model
|
|
109
|
+
|
|
110
|
+
In complex mesh deployments (like Tailscale, NATs, or Docker), the network socket alone is insufficient for tracking reliable reverse routes.
|
|
111
|
+
|
|
112
|
+
ACR utilizes a strict triplet of endpoint values to ensure node health:
|
|
113
|
+
1. **Observed**: `<incoming-ip>:<ephemeral-port>` - The raw socket origin the Root sees.
|
|
114
|
+
2. **Advertised**: `<mesh-ip>:<service-port>` - The Node tells the Root to reach it at this specific binding.
|
|
115
|
+
3. **Validated**: `<mesh-ip>:<service-port>` - The Root actively performs a TCP ping against the Advertised endpoint before approving it as a registered route.
|
|
116
|
+
|
|
117
|
+
If a Node's advertised endpoint fails validation, the Root **must not** silently assume the route is valid, nor can it permanently trust the ephemeral observed port.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 5. Physical Runtime Validation
|
|
122
|
+
|
|
123
|
+
Current physical execution validation (Phase 3-9) focuses purely on **macOS Root ↔ macOS Node** over standard TCP.
|
|
124
|
+
|
|
125
|
+
*Historical Context:* During Phase 6 exploratory testing, ACR used Tailscale purely as the **external networking environment**. Tailscale is NOT an ACR dependency. ACR core knows nothing about Tailscale binaries or hardcoded IPs. End-to-end Tailscale benchmarking across distributed networks is currently DEFERRED pending peer availability.
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## 6. Windows Troubleshooting
|
|
130
|
+
|
|
131
|
+
If you are running the Node on Windows and encountering connectivity issues, use this layered diagnostic sequence. Do NOT assume ACR is broken if ICMP fails.
|
|
132
|
+
|
|
133
|
+
1. **Tailscale Status**: Run `tailscale status` and verify the peer is online.
|
|
134
|
+
2. **ICMP Ping**: Run `ping <peer-ip>`. **Note**: Windows Firewall often blocks inbound ICMP by default. *An ICMP failure does not mean the application is unreachable.*
|
|
135
|
+
3. **Check Node startup log**: ACR prints the dynamically assigned port:
|
|
136
|
+
```
|
|
137
|
+
[ACR NODE]
|
|
138
|
+
actual_port=<RUNTIME_PORT>
|
|
139
|
+
advertised_endpoint=<WINDOWS_TAILSCALE_IP>:<RUNTIME_PORT>
|
|
140
|
+
```
|
|
141
|
+
4. **TCP Port Check**: Use the actual runtime port from the log:
|
|
142
|
+
```powershell
|
|
143
|
+
Test-NetConnection -ComputerName <ROOT_IP> -Port <ROOT_ACTUAL_PORT>
|
|
144
|
+
```
|
|
145
|
+
5. **Listener Check**: Verify ACR bound using:
|
|
146
|
+
```
|
|
147
|
+
netstat -an | findstr <RUNTIME_PORT>
|
|
148
|
+
```
|
|
149
|
+
The listener must appear on `0.0.0.0:<RUNTIME_PORT>` or `<LOCAL_IP>:<RUNTIME_PORT>`. The *advertised* address must be the Tailscale IP, not `0.0.0.0`.
|
|
150
|
+
6. **Windows Firewall (inbound)**: If TCP is blocked but the listener is up, add a narrowly scoped rule for the **actual runtime port**:
|
|
151
|
+
```powershell
|
|
152
|
+
# Replace <RUNTIME_PORT> with the actual port printed in the Node startup log.
|
|
153
|
+
New-NetFirewallRule -DisplayName "ACR Node <RUNTIME_PORT>" `
|
|
154
|
+
-Direction Inbound -LocalPort <RUNTIME_PORT> -Protocol TCP -Action Allow
|
|
155
|
+
```
|
|
156
|
+
Remove this rule after the experiment.
|
|
157
|
+
7. **ACR Handshake**: If TCP connects but the handshake fails, check that the `--cluster-id` matches on both sides.
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## 7. Automated Tests
|
|
162
|
+
|
|
163
|
+
To ensure the library remains stable across platform adaptations, ensure all unit and integration tests pass:
|
|
164
|
+
```bash
|
|
165
|
+
pytest tests/
|
|
166
|
+
```
|
vayrm-0.1.0/README.md
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# Adaptive Compute Runtime (ACR)
|
|
2
|
+
|
|
3
|
+
ACR is an **OS-independent**, **Network-provider-independent**, and **Scheduler-independent** Python library for intelligent, decentralized, and adaptive workload scheduling across heterogeneous machines.
|
|
4
|
+
|
|
5
|
+
The core principle of ACR is to completely decouple the adaptive scheduling algorithms from static network constraints.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. Architecture
|
|
10
|
+
|
|
11
|
+
ACR is composed of a generic hierarchy that remains portable across macOS, Windows, and Linux.
|
|
12
|
+
|
|
13
|
+
* **Root**: The orchestrator role. The Root aggregates telemetry (NodeKnowledge), maintains the network route registry, and uses Schedulers to dispatch ExecutionPlans.
|
|
14
|
+
* **Node**: The worker role. The Node discovers its local capabilities, continually monitors its telemetry, and securely connects to the Root to advertise its service endpoint.
|
|
15
|
+
* **Endpoint Model**: ACR strictly distinguishes between the **Observed** IP/port (what the Root sees natively from the socket connection) and the **Advertised** IP/port (what the Node declares as its reachable listener). ACR always **Validates** the advertised endpoint over TCP before updating the internal Route table.
|
|
16
|
+
* **Authentication & Handshake**: Nodes register using an application-level handshake payload over a persistent TCP session that transmits the cluster ID, session ID, and endpoint topology.
|
|
17
|
+
* **Telemetry**: Node-native psutil monitors dynamically measure CPU and RAM degradation over time.
|
|
18
|
+
* **Scheduler**: Schedulers (RoundRobin, LeastLoaded, ResourceAware, HeterogeneityAware, Adaptive) perform workload allocation using real-time NodeSnapshot data without hardcoded hardware assumptions.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 2. Platform Support & Validation Status
|
|
23
|
+
|
|
24
|
+
**Root and Node are portable roles, not hardware-locked classes.** ACR guarantees identical algorithmic behavior across operating systems. However, validation evidence is tracked strictly:
|
|
25
|
+
|
|
26
|
+
* **macOS (Root / Node):**
|
|
27
|
+
* Architecture/Implementation: **PASS**
|
|
28
|
+
* Automated Deterministic Testing: **PASS**
|
|
29
|
+
* Physical TCP Runtime Execution: **PASS**
|
|
30
|
+
* **Windows / Linux (Root / Node):**
|
|
31
|
+
* Architecture/Implementation: **PASS**
|
|
32
|
+
* Automated Deterministic Testing: **PASS**
|
|
33
|
+
* Physical TCP Runtime Execution: **NOT RUN / DEFERRED** (pending available physical peers)
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 3. Running ACR
|
|
38
|
+
|
|
39
|
+
ACR listener ports are **dynamically assigned by the OS** by default. You do not need to choose or remember a port number.
|
|
40
|
+
|
|
41
|
+
### Running as Root
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
python3 -m acr.entrypoint --role root
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
The Root selects an available port at runtime, binds its listener, tests TCP reachability to itself, and publishes its actual endpoint over the discovery locator.
|
|
48
|
+
|
|
49
|
+
### Running as Node
|
|
50
|
+
|
|
51
|
+
The Node dynamically selects its own service port, searches for the Root via discovery, probes it via TCP, and connects automatically:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# macOS / Linux:
|
|
55
|
+
python3 -m acr.entrypoint --role node
|
|
56
|
+
|
|
57
|
+
# Windows:
|
|
58
|
+
python -m acr.entrypoint --role node
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### The Automatic Flow
|
|
62
|
+
|
|
63
|
+
1. Root starts, binds to port `0` (dynamic OS assignment).
|
|
64
|
+
2. Root retrieves its Tailscale identity and discovers its assigned port.
|
|
65
|
+
3. Root tests if it can reach itself via TCP.
|
|
66
|
+
4. Root publishes a discovery record on its locator.
|
|
67
|
+
5. Node starts, asks Tailscale for peers.
|
|
68
|
+
6. Node scans peers for the Root locator.
|
|
69
|
+
7. Node extracts Root's dynamic endpoint and runs a TCP reachability probe.
|
|
70
|
+
8. If TCP passes, Node handshakes with Root and advertises its own dynamic endpoint.
|
|
71
|
+
9. Root validates Node's advertised endpoint via TCP probe.
|
|
72
|
+
10. Route is established using the validated endpoints.
|
|
73
|
+
|
|
74
|
+
### Failure Diagnostics
|
|
75
|
+
|
|
76
|
+
The runtime actively distinguishes failure modes:
|
|
77
|
+
- **Discovery Failure**: `[ACR NODE] discovery=FAIL`. Node cannot find Root. Ensure Root is running and Tailscale peers are online.
|
|
78
|
+
- **TCP Failure / Firewall Failure**: `[ACR TCP CHECK] result=FAIL`. Discovery worked but connection failed. Windows or macOS Firewall may be blocking the dynamic port. Read the actual port from the log and allow it.
|
|
79
|
+
- **Handshake Failure**: `[ACR NODE] handshake=FAIL`. TCP connected, but protocol failed (e.g. cluster ID mismatch).
|
|
80
|
+
- **Authentication/Session Failure**: Protocol mismatched or node identity blocked.
|
|
81
|
+
- **Endpoint Validation Failure**: Root connected to Node, but Root's return TCP probe to Node failed. Route will remain `is_routable = False`. Node must allow inbound on its actual port.
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## 4. The Endpoint Model
|
|
86
|
+
|
|
87
|
+
In complex mesh deployments (like Tailscale, NATs, or Docker), the network socket alone is insufficient for tracking reliable reverse routes.
|
|
88
|
+
|
|
89
|
+
ACR utilizes a strict triplet of endpoint values to ensure node health:
|
|
90
|
+
1. **Observed**: `<incoming-ip>:<ephemeral-port>` - The raw socket origin the Root sees.
|
|
91
|
+
2. **Advertised**: `<mesh-ip>:<service-port>` - The Node tells the Root to reach it at this specific binding.
|
|
92
|
+
3. **Validated**: `<mesh-ip>:<service-port>` - The Root actively performs a TCP ping against the Advertised endpoint before approving it as a registered route.
|
|
93
|
+
|
|
94
|
+
If a Node's advertised endpoint fails validation, the Root **must not** silently assume the route is valid, nor can it permanently trust the ephemeral observed port.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## 5. Physical Runtime Validation
|
|
99
|
+
|
|
100
|
+
Current physical execution validation (Phase 3-9) focuses purely on **macOS Root ↔ macOS Node** over standard TCP.
|
|
101
|
+
|
|
102
|
+
*Historical Context:* During Phase 6 exploratory testing, ACR used Tailscale purely as the **external networking environment**. Tailscale is NOT an ACR dependency. ACR core knows nothing about Tailscale binaries or hardcoded IPs. End-to-end Tailscale benchmarking across distributed networks is currently DEFERRED pending peer availability.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## 6. Windows Troubleshooting
|
|
107
|
+
|
|
108
|
+
If you are running the Node on Windows and encountering connectivity issues, use this layered diagnostic sequence. Do NOT assume ACR is broken if ICMP fails.
|
|
109
|
+
|
|
110
|
+
1. **Tailscale Status**: Run `tailscale status` and verify the peer is online.
|
|
111
|
+
2. **ICMP Ping**: Run `ping <peer-ip>`. **Note**: Windows Firewall often blocks inbound ICMP by default. *An ICMP failure does not mean the application is unreachable.*
|
|
112
|
+
3. **Check Node startup log**: ACR prints the dynamically assigned port:
|
|
113
|
+
```
|
|
114
|
+
[ACR NODE]
|
|
115
|
+
actual_port=<RUNTIME_PORT>
|
|
116
|
+
advertised_endpoint=<WINDOWS_TAILSCALE_IP>:<RUNTIME_PORT>
|
|
117
|
+
```
|
|
118
|
+
4. **TCP Port Check**: Use the actual runtime port from the log:
|
|
119
|
+
```powershell
|
|
120
|
+
Test-NetConnection -ComputerName <ROOT_IP> -Port <ROOT_ACTUAL_PORT>
|
|
121
|
+
```
|
|
122
|
+
5. **Listener Check**: Verify ACR bound using:
|
|
123
|
+
```
|
|
124
|
+
netstat -an | findstr <RUNTIME_PORT>
|
|
125
|
+
```
|
|
126
|
+
The listener must appear on `0.0.0.0:<RUNTIME_PORT>` or `<LOCAL_IP>:<RUNTIME_PORT>`. The *advertised* address must be the Tailscale IP, not `0.0.0.0`.
|
|
127
|
+
6. **Windows Firewall (inbound)**: If TCP is blocked but the listener is up, add a narrowly scoped rule for the **actual runtime port**:
|
|
128
|
+
```powershell
|
|
129
|
+
# Replace <RUNTIME_PORT> with the actual port printed in the Node startup log.
|
|
130
|
+
New-NetFirewallRule -DisplayName "ACR Node <RUNTIME_PORT>" `
|
|
131
|
+
-Direction Inbound -LocalPort <RUNTIME_PORT> -Protocol TCP -Action Allow
|
|
132
|
+
```
|
|
133
|
+
Remove this rule after the experiment.
|
|
134
|
+
7. **ACR Handshake**: If TCP connects but the handshake fails, check that the `--cluster-id` matches on both sides.
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## 7. Automated Tests
|
|
139
|
+
|
|
140
|
+
To ensure the library remains stable across platform adaptations, ensure all unit and integration tests pass:
|
|
141
|
+
```bash
|
|
142
|
+
pytest tests/
|
|
143
|
+
```
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Adaptive Computing Resource (ACR)
|
|
3
|
+
=================================
|
|
4
|
+
|
|
5
|
+
ACR is a platform-agnostic, distributed computing runtime for heterogeneous clusters.
|
|
6
|
+
It provides node intelligence, cluster knowledge exchange, adaptive scheduling,
|
|
7
|
+
and closed-loop execution feedback.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from acr.facade import ACRNode, ACRRoot
|
|
11
|
+
from acr.workloads import Workload
|
|
12
|
+
from acr.schedulers.adaptive import AdaptiveScheduler
|
|
13
|
+
from acr.schedulers.decision import SchedulingDecision
|
|
14
|
+
from acr.execution.manager import ExecutionManager
|
|
15
|
+
from acr.execution.models import ExecutionAttempt
|
|
16
|
+
from acr.communication.protocol import ExecutionObservationMessage as ExecutionObservation
|
|
17
|
+
from acr.resources.snapshot import NodeSnapshot
|
|
18
|
+
|
|
19
|
+
__all__ = [
|
|
20
|
+
"ACRNode",
|
|
21
|
+
"ACRRoot",
|
|
22
|
+
"Workload",
|
|
23
|
+
"AdaptiveScheduler",
|
|
24
|
+
"SchedulingDecision",
|
|
25
|
+
"ExecutionManager",
|
|
26
|
+
"ExecutionAttempt",
|
|
27
|
+
"ExecutionObservation",
|
|
28
|
+
"NodeSnapshot",
|
|
29
|
+
]
|
|
File without changes
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from typing import Dict, List, Optional
|
|
3
|
+
from acr.node.knowledge import NodeKnowledge
|
|
4
|
+
|
|
5
|
+
@dataclass
|
|
6
|
+
class WorkerRecord:
|
|
7
|
+
worker_key: str
|
|
8
|
+
endpoint: Optional[Dict]
|
|
9
|
+
paladin_node_id: str
|
|
10
|
+
session_id: Optional[str]
|
|
11
|
+
connection: str
|
|
12
|
+
connection_status: str
|
|
13
|
+
telemetry: Optional[dict]
|
|
14
|
+
knowledge: Optional[NodeKnowledge]
|
|
15
|
+
|
|
16
|
+
class RootDashboardAPI:
|
|
17
|
+
"""
|
|
18
|
+
API for retrieving WorkerRecords for the dashboard.
|
|
19
|
+
"""
|
|
20
|
+
def __init__(self, root_brain, control_plane):
|
|
21
|
+
self._brain = root_brain
|
|
22
|
+
self._cp = control_plane
|
|
23
|
+
|
|
24
|
+
def get_workers(self) -> List[WorkerRecord]:
|
|
25
|
+
workers = []
|
|
26
|
+
all_k = self._brain.all_node_knowledge()
|
|
27
|
+
tracker = getattr(self._cp, "telemetry_tracker", None)
|
|
28
|
+
|
|
29
|
+
# We also want to include nodes that the tracker knows about but have no knowledge yet
|
|
30
|
+
worker_keys = set(all_k.keys())
|
|
31
|
+
if tracker:
|
|
32
|
+
worker_keys.update(rec.node_id for rec in tracker.all_records())
|
|
33
|
+
|
|
34
|
+
for worker_key in worker_keys:
|
|
35
|
+
# worker_key is usually "{paladin_node_id}_{session_id}"
|
|
36
|
+
if "_" in worker_key:
|
|
37
|
+
paladin_node_id, session_id = worker_key.split("_", 1)
|
|
38
|
+
else:
|
|
39
|
+
paladin_node_id, session_id = worker_key, None
|
|
40
|
+
|
|
41
|
+
k = all_k.get(worker_key)
|
|
42
|
+
ep = None
|
|
43
|
+
conn_status = "UNKNOWN"
|
|
44
|
+
tel = None
|
|
45
|
+
|
|
46
|
+
if tracker:
|
|
47
|
+
rec = tracker.get_record(worker_key)
|
|
48
|
+
if rec:
|
|
49
|
+
tel = rec.__dict__
|
|
50
|
+
if rec.current_mesh_ip:
|
|
51
|
+
ep = {
|
|
52
|
+
"mesh_ip": rec.current_mesh_ip,
|
|
53
|
+
"service_port": rec.current_service_port
|
|
54
|
+
}
|
|
55
|
+
conn_status = rec.connection_status
|
|
56
|
+
|
|
57
|
+
if not ep and hasattr(self._cp, "get_node_endpoint"):
|
|
58
|
+
# fallback to paladin directly if tracker missed it
|
|
59
|
+
ep_data = self._cp.get_node_endpoint(paladin_node_id)
|
|
60
|
+
if ep_data:
|
|
61
|
+
ep = {
|
|
62
|
+
"mesh_ip": ep_data.get("mesh_ip"),
|
|
63
|
+
"service_port": ep_data.get("service_port")
|
|
64
|
+
}
|
|
65
|
+
if conn_status == "UNKNOWN":
|
|
66
|
+
conn_status = ep_data.get("connection_status", "UNKNOWN")
|
|
67
|
+
|
|
68
|
+
workers.append(WorkerRecord(
|
|
69
|
+
worker_key=worker_key,
|
|
70
|
+
endpoint=ep,
|
|
71
|
+
paladin_node_id=paladin_node_id,
|
|
72
|
+
session_id=session_id,
|
|
73
|
+
connection="PALADIN",
|
|
74
|
+
connection_status=conn_status,
|
|
75
|
+
telemetry=tel,
|
|
76
|
+
knowledge=k
|
|
77
|
+
))
|
|
78
|
+
|
|
79
|
+
# Sort so order is stable
|
|
80
|
+
workers.sort(key=lambda w: w.worker_key)
|
|
81
|
+
return workers
|
|
82
|
+
|
|
83
|
+
def get_worker(self, worker_key: str) -> Optional[WorkerRecord]:
|
|
84
|
+
for w in self.get_workers():
|
|
85
|
+
if w.worker_key == worker_key:
|
|
86
|
+
return w
|
|
87
|
+
return None
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"""
|
|
2
|
+
acr/api/server.py
|
|
3
|
+
FastAPI server exposing real-time state of the NodeBrain and WorkloadBrain.
|
|
4
|
+
"""
|
|
5
|
+
from fastapi import FastAPI, HTTPException
|
|
6
|
+
import uuid
|
|
7
|
+
import threading
|
|
8
|
+
|
|
9
|
+
from acr.runtime.node_brain import NodeBrain
|
|
10
|
+
from acr.runtime.workload_brain import WorkloadBrain
|
|
11
|
+
from acr.runtime.monitoring import RuntimeMonitor
|
|
12
|
+
from acr.workloads.pytorch.adapter import PyTorchWorkloadAdapter
|
|
13
|
+
from acr.workloads.pytorch.checkpoint import PyTorchCheckpointer
|
|
14
|
+
from acr.workloads.pytorch.runtime import run_training
|
|
15
|
+
|
|
16
|
+
app = FastAPI(title="ACR Live Runtime API", version="1.0.0")
|
|
17
|
+
|
|
18
|
+
# Global instances for the runtime
|
|
19
|
+
run_id = str(uuid.uuid4())
|
|
20
|
+
node_brain = NodeBrain(node_id="macos_node_1")
|
|
21
|
+
workload_brain = WorkloadBrain(workload_id="pytorch_resnet_1")
|
|
22
|
+
monitor = RuntimeMonitor(node_brain, workload_brain, run_id=run_id, interval_s=1.0)
|
|
23
|
+
adapter = PyTorchWorkloadAdapter(workload_brain)
|
|
24
|
+
checkpointer = PyTorchCheckpointer(f"checkpoints/{run_id}")
|
|
25
|
+
|
|
26
|
+
training_thread = None
|
|
27
|
+
|
|
28
|
+
@app.on_event("startup")
|
|
29
|
+
def startup_event():
|
|
30
|
+
print("Starting Continuous Node Monitor...")
|
|
31
|
+
monitor.start()
|
|
32
|
+
|
|
33
|
+
@app.on_event("shutdown")
|
|
34
|
+
def shutdown_event():
|
|
35
|
+
print("Stopping runtime...")
|
|
36
|
+
monitor.stop()
|
|
37
|
+
adapter.stop()
|
|
38
|
+
if training_thread:
|
|
39
|
+
training_thread.join(timeout=2.0)
|
|
40
|
+
|
|
41
|
+
@app.get("/api/v1/node")
|
|
42
|
+
def get_node_state():
|
|
43
|
+
"""Returns the current state and trends of the physical node."""
|
|
44
|
+
return node_brain.get_state_summary()
|
|
45
|
+
|
|
46
|
+
@app.get("/api/v1/workload")
|
|
47
|
+
def get_workload_state():
|
|
48
|
+
"""Returns the current state and metrics of the running workload."""
|
|
49
|
+
return workload_brain.get_state_summary()
|
|
50
|
+
|
|
51
|
+
@app.post("/api/v1/workload/start")
|
|
52
|
+
def start_workload(device: str = "cpu", batch_size: int = 64):
|
|
53
|
+
"""Start the real PyTorch workload in a background thread."""
|
|
54
|
+
global training_thread
|
|
55
|
+
if training_thread and training_thread.is_alive():
|
|
56
|
+
raise HTTPException(status_code=400, detail="Workload is already running")
|
|
57
|
+
|
|
58
|
+
training_thread = threading.Thread(
|
|
59
|
+
target=run_training,
|
|
60
|
+
args=(adapter, checkpointer, device, batch_size),
|
|
61
|
+
daemon=True
|
|
62
|
+
)
|
|
63
|
+
training_thread.start()
|
|
64
|
+
return {"status": "started", "device": device, "batch_size": batch_size}
|
|
65
|
+
|
|
66
|
+
@app.post("/api/v1/workload/stop")
|
|
67
|
+
def stop_workload():
|
|
68
|
+
"""Stop the running PyTorch workload."""
|
|
69
|
+
adapter.running = False
|
|
70
|
+
return {"status": "stopping"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"""
|
|
2
|
+
acr/cache/__init__.py
|
|
3
|
+
|
|
4
|
+
Local state cache management for ACR nodes.
|
|
5
|
+
"""
|
|
6
|
+
from acr.cache.policy import (
|
|
7
|
+
CacheEntry, EvictionPolicy, AdmissionPolicy,
|
|
8
|
+
LRUEvictionPolicy, LFUEvictionPolicy, SizeAwareEvictionPolicy,
|
|
9
|
+
AlwaysAdmitPolicy, SizeThresholdPolicy,
|
|
10
|
+
)
|
|
11
|
+
from acr.cache.manager import (
|
|
12
|
+
CacheTier, CacheEventType, CacheEvent, CacheStats, CacheManager,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
__all__ = [
|
|
16
|
+
"CacheEntry", "EvictionPolicy", "AdmissionPolicy",
|
|
17
|
+
"LRUEvictionPolicy", "LFUEvictionPolicy", "SizeAwareEvictionPolicy",
|
|
18
|
+
"AlwaysAdmitPolicy", "SizeThresholdPolicy",
|
|
19
|
+
"CacheTier", "CacheEventType", "CacheEvent", "CacheStats", "CacheManager",
|
|
20
|
+
]
|