k1s-core 1.0.0a3__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.
Files changed (248) hide show
  1. k1s_core-1.0.0a3/LICENSE +201 -0
  2. k1s_core-1.0.0a3/PKG-INFO +465 -0
  3. k1s_core-1.0.0a3/README.md +414 -0
  4. k1s_core-1.0.0a3/pyproject.toml +113 -0
  5. k1s_core-1.0.0a3/requirements.in +10 -0
  6. k1s_core-1.0.0a3/setup.cfg +4 -0
  7. k1s_core-1.0.0a3/src/ae/__init__.py +14 -0
  8. k1s_core-1.0.0a3/src/ae/__main__.py +6 -0
  9. k1s_core-1.0.0a3/src/ae/accelerators.py +685 -0
  10. k1s_core-1.0.0a3/src/ae/apishim/__init__.py +9 -0
  11. k1s_core-1.0.0a3/src/ae/apishim/__main__.py +142 -0
  12. k1s_core-1.0.0a3/src/ae/apishim/adapter.py +2006 -0
  13. k1s_core-1.0.0a3/src/ae/apishim/env.py +234 -0
  14. k1s_core-1.0.0a3/src/ae/apishim/ha_store.py +1584 -0
  15. k1s_core-1.0.0a3/src/ae/apishim/server.py +12996 -0
  16. k1s_core-1.0.0a3/src/ae/apishim/store.py +756 -0
  17. k1s_core-1.0.0a3/src/ae/cli/__init__.py +1 -0
  18. k1s_core-1.0.0a3/src/ae/cli/__main__.py +7742 -0
  19. k1s_core-1.0.0a3/src/ae/cli/rotate_certs.py +40 -0
  20. k1s_core-1.0.0a3/src/ae/config/manager.py +43 -0
  21. k1s_core-1.0.0a3/src/ae/config/transport.py +153 -0
  22. k1s_core-1.0.0a3/src/ae/controller/__init__.py +1 -0
  23. k1s_core-1.0.0a3/src/ae/controller/__main__.py +3387 -0
  24. k1s_core-1.0.0a3/src/ae/controller/agent_api.py +782 -0
  25. k1s_core-1.0.0a3/src/ae/controller/app_ingress.py +325 -0
  26. k1s_core-1.0.0a3/src/ae/controller/authority.py +612 -0
  27. k1s_core-1.0.0a3/src/ae/controller/cronjob_authority.py +313 -0
  28. k1s_core-1.0.0a3/src/ae/controller/etcd_lease_client.py +320 -0
  29. k1s_core-1.0.0a3/src/ae/controller/etcd_state.py +4186 -0
  30. k1s_core-1.0.0a3/src/ae/controller/health.py +703 -0
  31. k1s_core-1.0.0a3/src/ae/controller/hpa_authority.py +702 -0
  32. k1s_core-1.0.0a3/src/ae/controller/inference_api.py +129 -0
  33. k1s_core-1.0.0a3/src/ae/controller/inference_cell.py +2025 -0
  34. k1s_core-1.0.0a3/src/ae/controller/node_identity.py +125 -0
  35. k1s_core-1.0.0a3/src/ae/controller/quantities.py +186 -0
  36. k1s_core-1.0.0a3/src/ae/controller/reconciler.py +2524 -0
  37. k1s_core-1.0.0a3/src/ae/controller/rollout.py +37 -0
  38. k1s_core-1.0.0a3/src/ae/controller/scheduler.py +584 -0
  39. k1s_core-1.0.0a3/src/ae/controller/spec.py +2177 -0
  40. k1s_core-1.0.0a3/src/ae/controller/state.py +6526 -0
  41. k1s_core-1.0.0a3/src/ae/controller/storage_authority.py +134 -0
  42. k1s_core-1.0.0a3/src/ae/controller/work_watchdog.py +86 -0
  43. k1s_core-1.0.0a3/src/ae/fabric/__init__.py +53 -0
  44. k1s_core-1.0.0a3/src/ae/fabric/ai_runtime_profile.py +428 -0
  45. k1s_core-1.0.0a3/src/ae/fabric/locality.py +982 -0
  46. k1s_core-1.0.0a3/src/ae/fabric/phase_assurance.py +645 -0
  47. k1s_core-1.0.0a3/src/ae/fabric/symbolic.py +58 -0
  48. k1s_core-1.0.0a3/src/ae/gateway/__init__.py +5 -0
  49. k1s_core-1.0.0a3/src/ae/gateway/__main__.py +92 -0
  50. k1s_core-1.0.0a3/src/ae/gateway/service.py +1277 -0
  51. k1s_core-1.0.0a3/src/ae/gateway/spool.py +463 -0
  52. k1s_core-1.0.0a3/src/ae/ha/__init__.py +39 -0
  53. k1s_core-1.0.0a3/src/ae/ha/dashboard.py +320 -0
  54. k1s_core-1.0.0a3/src/ae/ha/fencing.py +317 -0
  55. k1s_core-1.0.0a3/src/ae/ha/ops.py +1252 -0
  56. k1s_core-1.0.0a3/src/ae/ingress/__init__.py +14 -0
  57. k1s_core-1.0.0a3/src/ae/ingress/_atomic.py +36 -0
  58. k1s_core-1.0.0a3/src/ae/ingress/caddy.py +392 -0
  59. k1s_core-1.0.0a3/src/ae/ingress/edge_core_proxy.py +1367 -0
  60. k1s_core-1.0.0a3/src/ae/ingress/edge_docs.py +61 -0
  61. k1s_core-1.0.0a3/src/ae/ingress/edge_local.py +441 -0
  62. k1s_core-1.0.0a3/src/ae/ingress/envoy_control_plane.py +510 -0
  63. k1s_core-1.0.0a3/src/ae/ingress/envoy_core_proxy.py +419 -0
  64. k1s_core-1.0.0a3/src/ae/ingress/rathole.py +88 -0
  65. k1s_core-1.0.0a3/src/ae/ingress/service.py +274 -0
  66. k1s_core-1.0.0a3/src/ae/ingress/tls_sync.py +76 -0
  67. k1s_core-1.0.0a3/src/ae/k8s/__init__.py +1 -0
  68. k1s_core-1.0.0a3/src/ae/k8s/check.py +370 -0
  69. k1s_core-1.0.0a3/src/ae/k8s/convert.py +521 -0
  70. k1s_core-1.0.0a3/src/ae/k8s/exporter.py +1810 -0
  71. k1s_core-1.0.0a3/src/ae/k8s/presets.py +112 -0
  72. k1s_core-1.0.0a3/src/ae/k8s/validate.py +73 -0
  73. k1s_core-1.0.0a3/src/ae/kctl/__init__.py +9 -0
  74. k1s_core-1.0.0a3/src/ae/kctl/__main__.py +1182 -0
  75. k1s_core-1.0.0a3/src/ae/kctl/lifecycle.py +319 -0
  76. k1s_core-1.0.0a3/src/ae/kctl/profile_adapter.py +1418 -0
  77. k1s_core-1.0.0a3/src/ae/kctl/profile_backend.py +1439 -0
  78. k1s_core-1.0.0a3/src/ae/kctl/profile_bootstrap.py +800 -0
  79. k1s_core-1.0.0a3/src/ae/kctl/profile_component_runner.py +197 -0
  80. k1s_core-1.0.0a3/src/ae/kctl/profile_engine.py +274 -0
  81. k1s_core-1.0.0a3/src/ae/kctl/profile_host_helper.py +736 -0
  82. k1s_core-1.0.0a3/src/ae/kctl/profile_host_plan.py +1089 -0
  83. k1s_core-1.0.0a3/src/ae/kctl/profile_host_transaction.py +1380 -0
  84. k1s_core-1.0.0a3/src/ae/kctl/profile_migration.py +1725 -0
  85. k1s_core-1.0.0a3/src/ae/kctl/profile_node_adapter.py +229 -0
  86. k1s_core-1.0.0a3/src/ae/kctl/profile_paths.py +323 -0
  87. k1s_core-1.0.0a3/src/ae/kctl/profile_state.py +2473 -0
  88. k1s_core-1.0.0a3/src/ae/kctl/profile_supervisor.py +654 -0
  89. k1s_core-1.0.0a3/src/ae/kctl/profiles.py +720 -0
  90. k1s_core-1.0.0a3/src/ae/network/__init__.py +23 -0
  91. k1s_core-1.0.0a3/src/ae/network/overlay_health.py +82 -0
  92. k1s_core-1.0.0a3/src/ae/network/pod_cidr.py +74 -0
  93. k1s_core-1.0.0a3/src/ae/network/provider.py +44 -0
  94. k1s_core-1.0.0a3/src/ae/network/provider_docker.py +231 -0
  95. k1s_core-1.0.0a3/src/ae/network/provider_iptables.py +270 -0
  96. k1s_core-1.0.0a3/src/ae/network/provider_overlay.py +240 -0
  97. k1s_core-1.0.0a3/src/ae/network/service_controller.py +206 -0
  98. k1s_core-1.0.0a3/src/ae/node/__init__.py +1 -0
  99. k1s_core-1.0.0a3/src/ae/node/__main__.py +7 -0
  100. k1s_core-1.0.0a3/src/ae/node/net_helper.py +216 -0
  101. k1s_core-1.0.0a3/src/ae/node/rosenpass.py +1034 -0
  102. k1s_core-1.0.0a3/src/ae/node/server.py +1433 -0
  103. k1s_core-1.0.0a3/src/ae/observability/__init__.py +5 -0
  104. k1s_core-1.0.0a3/src/ae/observability/http_api.py +7681 -0
  105. k1s_core-1.0.0a3/src/ae/observability/logging.py +30 -0
  106. k1s_core-1.0.0a3/src/ae/observability/metrics.py +262 -0
  107. k1s_core-1.0.0a3/src/ae/observability/static/vendor/xterm-addon-fit.js +2 -0
  108. k1s_core-1.0.0a3/src/ae/observability/static/vendor/xterm.css +209 -0
  109. k1s_core-1.0.0a3/src/ae/observability/static/vendor/xterm.js +2 -0
  110. k1s_core-1.0.0a3/src/ae/resources/__init__.py +1 -0
  111. k1s_core-1.0.0a3/src/ae/resources/ingress/caddy_site.txt +10 -0
  112. k1s_core-1.0.0a3/src/ae/resources/loader.py +39 -0
  113. k1s_core-1.0.0a3/src/ae/resources/observability/dashboard.html +7091 -0
  114. k1s_core-1.0.0a3/src/ae/resources/observability/docs.html +32 -0
  115. k1s_core-1.0.0a3/src/ae/resources/observability/redoc.html +27 -0
  116. k1s_core-1.0.0a3/src/ae/resources/observability/swagger.html +26 -0
  117. k1s_core-1.0.0a3/src/ae/resources/profiles/profile-catalog-v1.json +123 -0
  118. k1s_core-1.0.0a3/src/ae/resources/profiles/workerbee-adapter-v1.json +88 -0
  119. k1s_core-1.0.0a3/src/ae/resources/sql/apishim/create_objects_pg.sql +16 -0
  120. k1s_core-1.0.0a3/src/ae/resources/sql/apishim/create_objects_sqlite.sql +16 -0
  121. k1s_core-1.0.0a3/src/ae/resources/sql/apishim/create_watch_events_pg.sql +15 -0
  122. k1s_core-1.0.0a3/src/ae/resources/sql/apishim/insert_watch_events_pg.sql +3 -0
  123. k1s_core-1.0.0a3/src/ae/resources/sql/apishim/select_object_pg.sql +1 -0
  124. k1s_core-1.0.0a3/src/ae/resources/sql/apishim/select_object_sqlite.sql +1 -0
  125. k1s_core-1.0.0a3/src/ae/resources/sql/apishim/select_objects_all_pg.sql +2 -0
  126. k1s_core-1.0.0a3/src/ae/resources/sql/apishim/select_objects_all_sqlite.sql +2 -0
  127. k1s_core-1.0.0a3/src/ae/resources/sql/apishim/select_objects_by_ns_pg.sql +2 -0
  128. k1s_core-1.0.0a3/src/ae/resources/sql/apishim/select_objects_by_ns_sqlite.sql +2 -0
  129. k1s_core-1.0.0a3/src/ae/resources/sql/apishim/select_watch_events_since_pg.sql +5 -0
  130. k1s_core-1.0.0a3/src/ae/resources/sql/apishim/upsert_object_pg.sql +5 -0
  131. k1s_core-1.0.0a3/src/ae/resources/sql/apishim/upsert_object_sqlite.sql +5 -0
  132. k1s_core-1.0.0a3/src/ae/resources/sql/controller/count_volume_attachments.sql +1 -0
  133. k1s_core-1.0.0a3/src/ae/resources/sql/controller/create_app_events.sql +8 -0
  134. k1s_core-1.0.0a3/src/ae/resources/sql/controller/create_app_registry.sql +9 -0
  135. k1s_core-1.0.0a3/src/ae/resources/sql/controller/create_app_revisions.sql +10 -0
  136. k1s_core-1.0.0a3/src/ae/resources/sql/controller/create_app_status.sql +22 -0
  137. k1s_core-1.0.0a3/src/ae/resources/sql/controller/create_edge_ingress_policies.sql +9 -0
  138. k1s_core-1.0.0a3/src/ae/resources/sql/controller/create_edge_ingress_routes.sql +14 -0
  139. k1s_core-1.0.0a3/src/ae/resources/sql/controller/create_node_heartbeats.sql +6 -0
  140. k1s_core-1.0.0a3/src/ae/resources/sql/controller/create_node_leases.sql +17 -0
  141. k1s_core-1.0.0a3/src/ae/resources/sql/controller/create_nodes.sql +17 -0
  142. k1s_core-1.0.0a3/src/ae/resources/sql/controller/create_pod_nodes.sql +7 -0
  143. k1s_core-1.0.0a3/src/ae/resources/sql/controller/create_pod_status.sql +16 -0
  144. k1s_core-1.0.0a3/src/ae/resources/sql/controller/create_probe_history.sql +10 -0
  145. k1s_core-1.0.0a3/src/ae/resources/sql/controller/create_rollout_canary.sql +8 -0
  146. k1s_core-1.0.0a3/src/ae/resources/sql/controller/create_service_endpoints.sql +8 -0
  147. k1s_core-1.0.0a3/src/ae/resources/sql/controller/create_services.sql +6 -0
  148. k1s_core-1.0.0a3/src/ae/resources/sql/controller/create_site_ingress_endpoints.sql +12 -0
  149. k1s_core-1.0.0a3/src/ae/resources/sql/controller/create_storage_bindings.sql +8 -0
  150. k1s_core-1.0.0a3/src/ae/resources/sql/controller/create_volume_attachments.sql +8 -0
  151. k1s_core-1.0.0a3/src/ae/resources/sql/controller/create_work_ledger.sql +19 -0
  152. k1s_core-1.0.0a3/src/ae/resources/sql/controller/create_work_outbox.sql +18 -0
  153. k1s_core-1.0.0a3/src/ae/resources/sql/controller/create_work_queue.sql +18 -0
  154. k1s_core-1.0.0a3/src/ae/resources/sql/controller/delete_probe_history_limit.sql +7 -0
  155. k1s_core-1.0.0a3/src/ae/resources/sql/controller/insert_app_events.sql +2 -0
  156. k1s_core-1.0.0a3/src/ae/resources/sql/controller/insert_app_registry_upsert.sql +9 -0
  157. k1s_core-1.0.0a3/src/ae/resources/sql/controller/insert_app_revisions.sql +3 -0
  158. k1s_core-1.0.0a3/src/ae/resources/sql/controller/insert_edge_ingress_policies_upsert.sql +7 -0
  159. k1s_core-1.0.0a3/src/ae/resources/sql/controller/insert_edge_ingress_routes_upsert.sql +10 -0
  160. k1s_core-1.0.0a3/src/ae/resources/sql/controller/insert_pod_nodes.sql +2 -0
  161. k1s_core-1.0.0a3/src/ae/resources/sql/controller/insert_pod_nodes_upsert.sql +5 -0
  162. k1s_core-1.0.0a3/src/ae/resources/sql/controller/insert_pod_status.sql +24 -0
  163. k1s_core-1.0.0a3/src/ae/resources/sql/controller/insert_probe_history.sql +2 -0
  164. k1s_core-1.0.0a3/src/ae/resources/sql/controller/insert_service_endpoints.sql +2 -0
  165. k1s_core-1.0.0a3/src/ae/resources/sql/controller/insert_volume_attachments_ignore.sql +3 -0
  166. k1s_core-1.0.0a3/src/ae/resources/sql/controller/select_app_events_by_app.sql +5 -0
  167. k1s_core-1.0.0a3/src/ae/resources/sql/controller/select_app_events_paginated.sql +5 -0
  168. k1s_core-1.0.0a3/src/ae/resources/sql/controller/select_app_registry_all.sql +3 -0
  169. k1s_core-1.0.0a3/src/ae/resources/sql/controller/select_app_registry_by_name.sql +3 -0
  170. k1s_core-1.0.0a3/src/ae/resources/sql/controller/select_app_status_all.sql +2 -0
  171. k1s_core-1.0.0a3/src/ae/resources/sql/controller/select_app_status_by_name.sql +2 -0
  172. k1s_core-1.0.0a3/src/ae/resources/sql/controller/select_edge_ingress_policies_all.sql +3 -0
  173. k1s_core-1.0.0a3/src/ae/resources/sql/controller/select_edge_ingress_policy_by_key.sql +4 -0
  174. k1s_core-1.0.0a3/src/ae/resources/sql/controller/select_edge_ingress_routes_all.sql +3 -0
  175. k1s_core-1.0.0a3/src/ae/resources/sql/controller/select_edge_ingress_routes_by_site.sql +4 -0
  176. k1s_core-1.0.0a3/src/ae/resources/sql/controller/select_latest_revision.sql +5 -0
  177. k1s_core-1.0.0a3/src/ae/resources/sql/controller/select_node_by_id.sql +7 -0
  178. k1s_core-1.0.0a3/src/ae/resources/sql/controller/select_nodes_with_heartbeat.sql +7 -0
  179. k1s_core-1.0.0a3/src/ae/resources/sql/controller/select_pod_nodes_with_status.sql +10 -0
  180. k1s_core-1.0.0a3/src/ae/resources/sql/controller/select_pod_status_by_app.sql +4 -0
  181. k1s_core-1.0.0a3/src/ae/resources/sql/controller/select_probe_history_by_app.sql +5 -0
  182. k1s_core-1.0.0a3/src/ae/resources/sql/controller/select_revision_spec_json.sql +3 -0
  183. k1s_core-1.0.0a3/src/ae/resources/sql/controller/select_revisions_by_app.sql +5 -0
  184. k1s_core-1.0.0a3/src/ae/resources/sql/controller/select_rollout_canary.sql +2 -0
  185. k1s_core-1.0.0a3/src/ae/resources/sql/controller/select_service_endpoints_by_app.sql +4 -0
  186. k1s_core-1.0.0a3/src/ae/resources/sql/controller/select_storage_bindings_all.sql +2 -0
  187. k1s_core-1.0.0a3/src/ae/resources/sql/controller/select_storage_bindings_by_app.sql +4 -0
  188. k1s_core-1.0.0a3/src/ae/resources/sql/controller/select_volume_attachments_by_app.sql +4 -0
  189. k1s_core-1.0.0a3/src/ae/resources/sql/controller/update_app_revisions_status.sql +3 -0
  190. k1s_core-1.0.0a3/src/ae/resources/sql/controller/upsert_app_status.sql +22 -0
  191. k1s_core-1.0.0a3/src/ae/resources/sql/controller/upsert_node_heartbeats.sql +3 -0
  192. k1s_core-1.0.0a3/src/ae/resources/sql/controller/upsert_nodes.sql +16 -0
  193. k1s_core-1.0.0a3/src/ae/resources/sql/controller/upsert_rollout_canary.sql +3 -0
  194. k1s_core-1.0.0a3/src/ae/resources/sql/controller/upsert_services.sql +3 -0
  195. k1s_core-1.0.0a3/src/ae/resources/sql/controller/upsert_volume_attachments.sql +6 -0
  196. k1s_core-1.0.0a3/src/ae/runtime/__init__.py +35 -0
  197. k1s_core-1.0.0a3/src/ae/runtime/base.py +213 -0
  198. k1s_core-1.0.0a3/src/ae/runtime/command_args.py +36 -0
  199. k1s_core-1.0.0a3/src/ae/runtime/containerd_runtime.py +1043 -0
  200. k1s_core-1.0.0a3/src/ae/runtime/cri/__init__.py +1 -0
  201. k1s_core-1.0.0a3/src/ae/runtime/cri/api/__init__.py +1 -0
  202. k1s_core-1.0.0a3/src/ae/runtime/cri/api/runtime/__init__.py +1 -0
  203. k1s_core-1.0.0a3/src/ae/runtime/cri/api/runtime/v1/__init__.py +1 -0
  204. k1s_core-1.0.0a3/src/ae/runtime/cri/api/runtime/v1/api_pb2.py +472 -0
  205. k1s_core-1.0.0a3/src/ae/runtime/cri/api/runtime/v1/api_pb2_grpc.py +1577 -0
  206. k1s_core-1.0.0a3/src/ae/runtime/cri/api/runtime/v1/gogo_pb2.py +50 -0
  207. k1s_core-1.0.0a3/src/ae/runtime/cri_runtime.py +3699 -0
  208. k1s_core-1.0.0a3/src/ae/runtime/docker_runtime.py +2050 -0
  209. k1s_core-1.0.0a3/src/ae/runtime/docker_stub.py +155 -0
  210. k1s_core-1.0.0a3/src/ae/runtime/podman_runtime.py +2738 -0
  211. k1s_core-1.0.0a3/src/ae/runtime/ports.py +82 -0
  212. k1s_core-1.0.0a3/src/ae/runtime/projections.py +177 -0
  213. k1s_core-1.0.0a3/src/ae/runtime/registry.py +95 -0
  214. k1s_core-1.0.0a3/src/ae/runtime/remote_runtime.py +514 -0
  215. k1s_core-1.0.0a3/src/ae/secrets/__init__.py +5 -0
  216. k1s_core-1.0.0a3/src/ae/secrets/manager.py +125 -0
  217. k1s_core-1.0.0a3/src/ae/security/__init__.py +23 -0
  218. k1s_core-1.0.0a3/src/ae/security/ca.py +231 -0
  219. k1s_core-1.0.0a3/src/ae/security/tokens.py +57 -0
  220. k1s_core-1.0.0a3/src/ae/storage/__init__.py +41 -0
  221. k1s_core-1.0.0a3/src/ae/storage/config.py +407 -0
  222. k1s_core-1.0.0a3/src/ae/storage/controller.py +2986 -0
  223. k1s_core-1.0.0a3/src/ae/storage/csi/__init__.py +19 -0
  224. k1s_core-1.0.0a3/src/ae/storage/csi/api/__init__.py +10 -0
  225. k1s_core-1.0.0a3/src/ae/storage/csi/api/csi_pb2.py +510 -0
  226. k1s_core-1.0.0a3/src/ae/storage/csi/api/csi_pb2_grpc.py +1168 -0
  227. k1s_core-1.0.0a3/src/ae/storage/csi/client.py +244 -0
  228. k1s_core-1.0.0a3/src/ae/storage/netfs.py +890 -0
  229. k1s_core-1.0.0a3/src/ae/storage/node_manager.py +136 -0
  230. k1s_core-1.0.0a3/src/ae/storage/state.py +438 -0
  231. k1s_core-1.0.0a3/src/ae/storage/types.py +40 -0
  232. k1s_core-1.0.0a3/src/ae/transport/__init__.py +41 -0
  233. k1s_core-1.0.0a3/src/ae/transport/controller_ingress.py +696 -0
  234. k1s_core-1.0.0a3/src/ae/transport/jetstream_monitor.py +119 -0
  235. k1s_core-1.0.0a3/src/ae/transport/nats_client.py +740 -0
  236. k1s_core-1.0.0a3/src/ae/transport/outbox_publisher.py +132 -0
  237. k1s_core-1.0.0a3/src/ae/transport/route_bundle_publisher.py +524 -0
  238. k1s_core-1.0.0a3/src/ae/transport/subjects.py +71 -0
  239. k1s_core-1.0.0a3/src/ae/transport/telemetry_ingress.py +105 -0
  240. k1s_core-1.0.0a3/src/ae/worker_stub/__init__.py +14 -0
  241. k1s_core-1.0.0a3/src/ae/worker_stub/__main__.py +203 -0
  242. k1s_core-1.0.0a3/src/k1s_core.egg-info/PKG-INFO +465 -0
  243. k1s_core-1.0.0a3/src/k1s_core.egg-info/SOURCES.txt +246 -0
  244. k1s_core-1.0.0a3/src/k1s_core.egg-info/dependency_links.txt +1 -0
  245. k1s_core-1.0.0a3/src/k1s_core.egg-info/entry_points.txt +7 -0
  246. k1s_core-1.0.0a3/src/k1s_core.egg-info/requires.txt +24 -0
  247. k1s_core-1.0.0a3/src/k1s_core.egg-info/top_level.txt +1 -0
  248. k1s_core-1.0.0a3/tests/test_apishim_env.py +25 -0
@@ -0,0 +1,201 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright 2026 k1s contributors
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
@@ -0,0 +1,465 @@
1
+ Metadata-Version: 2.4
2
+ Name: k1s-core
3
+ Version: 1.0.0a3
4
+ Summary: Core Python runtime and compatibility CLIs for k1s
5
+ Author: k1s contributors
6
+ License-Expression: Apache-2.0
7
+ Project-URL: Homepage, https://github.com/the-cm-collective/k1s
8
+ Project-URL: Repository, https://github.com/the-cm-collective/k1s
9
+ Project-URL: Documentation, https://github.com/the-cm-collective/k1s/tree/main/docs
10
+ Project-URL: Issues, https://github.com/the-cm-collective/k1s/issues
11
+ Project-URL: Changelog, https://github.com/the-cm-collective/k1s/blob/main/CHANGELOG.md
12
+ Keywords: containers,distributed-systems,orchestration
13
+ Classifier: Development Status :: 3 - Alpha
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Operating System :: POSIX :: Linux
17
+ Classifier: Programming Language :: Python
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Programming Language :: Python :: Implementation :: CPython
23
+ Classifier: Topic :: Software Development
24
+ Classifier: Topic :: System :: Distributed Computing
25
+ Requires-Python: >=3.11
26
+ Description-Content-Type: text/markdown
27
+ License-File: LICENSE
28
+ Requires-Dist: pydantic>=2.9
29
+ Requires-Dist: PyYAML>=6.0
30
+ Requires-Dist: docker>=7.1
31
+ Requires-Dist: requests>=2.32
32
+ Requires-Dist: psycopg[binary]>=3.1
33
+ Requires-Dist: croniter>=2.0
34
+ Requires-Dist: grpcio>=1.60
35
+ Requires-Dist: protobuf>=4.25
36
+ Requires-Dist: nats-py>=2.7
37
+ Requires-Dist: nkeys>=0.1.0
38
+ Provides-Extra: dev
39
+ Requires-Dist: pytest>=8.2; extra == "dev"
40
+ Requires-Dist: pytest-cov>=5.0; extra == "dev"
41
+ Requires-Dist: mypy>=1.11; extra == "dev"
42
+ Requires-Dist: ruff>=0.6; extra == "dev"
43
+ Requires-Dist: matplotlib>=3.9; extra == "dev"
44
+ Requires-Dist: Pillow>=10.4; extra == "dev"
45
+ Requires-Dist: pre-commit>=3.8; extra == "dev"
46
+ Requires-Dist: jsonschema>=4.22; extra == "dev"
47
+ Requires-Dist: huggingface_hub>=0.30; extra == "dev"
48
+ Provides-Extra: watch
49
+ Requires-Dist: watchdog>=3.0; extra == "watch"
50
+ Dynamic: license-file
51
+
52
+ <p align="center">
53
+ <img src="media/style/web-logos/k1s-killa-bee-refresh-0526.png" alt="k1s logo" width="260" />
54
+ </p>
55
+
56
+ # k1s Minimal Application Engine
57
+
58
+ k1s is a small, readable, Kubernetes-like orchestration engine built for distributed compute across messy reality: NAT/CGNAT, roaming nodes, intermittent links, heterogeneous sites, and federated clouds.
59
+
60
+ The goal is to make private, self-hosted, federated compute feasible without surrendering control to a single vendor or central authority. k1s is privacy-first, consent-first, and secure-by-default while staying understandable end-to-end (`spec -> reconcile -> runtime -> networking`).
61
+
62
+ k1s borrows Kubernetes mental models and API shapes where useful, but it is not a full Kubernetes clone. The focus is a compact surface area with a lightweight control plane and lower resource requirements.
63
+
64
+ Project principles and non-goals: `TENETS.md`. Cognitive-substrate philosophy and safeguards: `docs/design/project-philosophy.md`, `docs/design/cognitive-welfare-and-continuity.md`.
65
+
66
+ ## Status & Production Use
67
+
68
+ k1s is entering its 1.0 alpha line and remains actively evolving. The current
69
+ candidate establishes a tested compatibility boundary for the distribution,
70
+ imports, commands, and core installed contracts while runtime and fabric
71
+ surfaces continue through explicit qualification gates.
72
+
73
+ Production guidance:
74
+ - Recommended now: labs, staging, and controlled production pilots with explicit operator ownership.
75
+ - Not yet recommended: broad multi-tenant or compliance-critical environments that require full Kubernetes semantics.
76
+ - Always run environment-specific security review, failure drills, and rollout validation before promotion.
77
+
78
+ ## Current Release-Line Highlights
79
+
80
+ - High-availability control-plane support across controller authority, shared mutation fencing/CAS, and HA-safe API-shim reads: `docs/roadmap/high-availability-control-plane.md`, `docs/ops/ha-cluster-bring-up.md`
81
+ - HA operator tooling and validation automation for retained, live-helper, and drill lanes: `docs/ops/validated-procedures.md`, `docs/ops/ha-closeout.md`
82
+ - Hardened benchmark reruns and retained publishing for rootless, rootful, k1nd, k3d, and CRI lanes: `docs/benchmarks/memory.md`, `docs/ops/validated-procedures.md`
83
+ - Stronger local environment/bootstrap helpers, including `env-doctor`, controller env export helpers, and repo-local Nix shells: `scripts/dev/env_doctor.sh`, `scripts/ae-env.sh`, `flake.nix`
84
+
85
+ ## Documentation
86
+
87
+ - Start here onboarding: `docs/getting-started/start-here.md`
88
+ - High-level overview and getting started: `docs/getting-started/overview.md`
89
+ - Technical architecture and reference: `docs/reference/architecture.md`
90
+ - Project philosophy and cognitive safeguards: `docs/design/project-philosophy.md`, `docs/design/cognitive-welfare-and-continuity.md`
91
+ - Current inference-fabric behavior: `docs/reference/inference-fabric.md`
92
+ - Distributed compute fabric roadmap: `docs/roadmap/distributed-compute-fabric.md`, `docs/roadmap/status.md`
93
+ - Fabric deployment and control-plane design: `docs/design/fabric-deployment-topology.md`, `docs/design/fabric-control-plane.md`
94
+ - Multi-node architecture and lab: `docs/adr/0007-multinode-architecture-scope.md`, `docs/guides/multinode-lab.md`
95
+ - Runtime profile targets (including strict CRI aliases): `docs/guides/runtime-profiles.md`
96
+ - CRI/containerd workflows and registry-first image prep: `docs/reference/cri-containerd.md`
97
+ - API compatibility and shim status: `docs/reference/apishim-compatibility-matrix.md`, `docs/reference/apishim-roadmap.md`
98
+ - HTTP API reference and UI docs: `docs/reference/http-api.md`
99
+ - Configs & Secrets: `docs/reference/configs-secrets.md`
100
+ - Ingress and TLS reference: `docs/reference/ingress.md`
101
+ - Ingress deep validation lanes: `docs/guides/ingress-capability-test-sequence.md`
102
+ - Operations runbook: `docs/ops/runbook.md`
103
+ - Benchmarks and validated procedures: `docs/benchmarks/memory.md`, `docs/ops/validated-procedures.md`
104
+ - Demo modes and examples: `docs/guides/demos-examples.md`
105
+ - End-to-end walkthrough: `docs/guides/e2e.md`
106
+ - CI examples: `docs/ops/ci-gh-actions.md`
107
+ - Python distribution identity and release compatibility:
108
+ `docs/reference/python-distribution.md`
109
+ - Stable and experimental public contracts: `docs/reference/public-contracts.md`
110
+ - Experimental metadata-safe WorkerBee profile evidence contract:
111
+ `docs/reference/workerbee-profile-adapter.md`
112
+
113
+ ## Integrated Dashboard & Interactive Playground
114
+
115
+ Dashboard:
116
+ ![Dashboard](media/docs.home.arpa_8443_dashboard.png)
117
+
118
+ Playground:
119
+ ![Playground](media/docs.home.arpa_8443_playground.html.png)
120
+
121
+ ## Quickstart
122
+
123
+ 1) Install (editable for dev):
124
+
125
+ ```
126
+ python -m pip install -e .[dev]
127
+ ```
128
+
129
+ Published Python artifacts use the distribution name `k1s-core`. The runtime
130
+ package remains importable as `ae`, and the `k1s` and historical `ae*` command
131
+ entry points remain available. See `docs/reference/python-distribution.md` and
132
+ `docs/reference/public-contracts.md` for the 1.0-alpha compatibility policy.
133
+
134
+ Optional: add file-watching support for instant reconciles on spec changes:
135
+
136
+ ```
137
+ python -m pip install -e .[watch]
138
+ ```
139
+
140
+ Optional NixOS/dev-shell path (additive; Debian/Ubuntu flow above is unchanged):
141
+
142
+ ```
143
+ direnv allow
144
+ # or:
145
+ nix develop
146
+
147
+ python -m venv .venv
148
+ . .venv/bin/activate
149
+ python -m pip install -e .[dev]
150
+ make env-doctor
151
+ ```
152
+
153
+ Use `nix develop .#cri` when you want the CRI/containerd-oriented shell. The flake
154
+ fills in userland tooling such as `podman-compose`. Host runtimes still remain
155
+ host-managed (`podman`/`docker`, `containerd`), but `make dev-local` can now
156
+ manage local demo DNS/TLS state directly on Debian/RHEL and through the NixOS
157
+ bridge helper on NixOS. Run `make env-doctor` to check whether the bridge is
158
+ installed/imported and whether `docs/api/dash/blue/green.home.arpa` resolve
159
+ where the demo expects.
160
+
161
+ One-time NixOS bridge bootstrap:
162
+
163
+ ```bash
164
+ sudo install -D -m 0644 ops/nixos/k1s-local-dev-bridge.nix /etc/nixos/nixos/modules/k1s-local-dev-bridge.nix
165
+ # import ./nixos/modules/k1s-local-dev-bridge.nix from your host config
166
+ sudo nixos-rebuild switch --impure --flake /etc/nixos#$(hostname -s)
167
+ ```
168
+
169
+ 2) Run dev fixtures (optional):
170
+
171
+ ```
172
+ docker compose -f ops/dev/docker-compose.yaml up -d
173
+ ```
174
+
175
+ Podman registry cache note (demo helpers): if you use Podman with the local pull‑through cache, add an insecure registry entry for `localhost:5001`/`localhost:5002` (or set `AE_USE_REGISTRY_CACHE=0`) to avoid HTTPS pull errors and Docker Hub rate‑limit stalls.
176
+
177
+ 3) Start the controller loop:
178
+
179
+ ```
180
+ python -m ae.controller --loop --specs specs/ --metrics-port 9108 --watch
181
+ ```
182
+
183
+ Strict CRI quickstart (recommended for containerd lanes):
184
+
185
+ ```
186
+ make k1s-core-cri
187
+ # optional pairings:
188
+ make k1s-edge-cri
189
+ make k1s-edge-core-cri
190
+ ```
191
+
192
+ 4) Apply a sample app and inspect:
193
+
194
+ ```
195
+ python -m ae.cli apply -f specs/examples/echo.yaml
196
+ python -m ae.cli status echo --wide --events
197
+ python -m ae.cli logs echo --tail 50
198
+ python -m ae.cli shell echo
199
+ python -m ae.cli exec echo -- -- sh -c 'echo hello from main'
200
+ ```
201
+
202
+ Namespace targeting:
203
+ ```
204
+ ae apply -n demo -f specs/examples/echo.yaml
205
+ ae apply -n demo --force-namespace -f specs/examples/echo.yaml
206
+ AE_NAMESPACE=demo ae status echo
207
+ ae shell demo/echo
208
+ ```
209
+ Note: `ae shell` defaults to `sh`; use `-- bash` only when the image includes it.
210
+
211
+ Kubectl-like aliases via `k1s`:
212
+
213
+ ```
214
+ k1s get apps
215
+ k1s describe app/echo
216
+ k1s logs app/echo --follow --tail 100
217
+ ```
218
+
219
+ Installed profile inspection is deterministic and non-mutating. It lists the
220
+ public role catalog, checks static installation facts, and produces a
221
+ declarative plan without starting a runtime or preparing the host.
222
+
223
+ ```
224
+ k1s profile list
225
+ k1s profile doctor core
226
+ k1s profile plan edge-gateway --output json
227
+ ```
228
+
229
+ The production `edge-gateway` role never includes the development worker stub.
230
+ Legacy `edge` and `edge-core` aliases remain development-only. Existing
231
+ `profile start|status|stop|restart` actions retain their checkout-local
232
+ compatibility behavior pending later stateful lifecycle work. See
233
+ `docs/reference/profile-lifecycle.md` for the exact role, alias, schema, and
234
+ exit-code contracts.
235
+
236
+ The installed `k1s-core` package also contains a versioned, metadata-safe
237
+ WorkerBee profile evidence adapter. It projects already selected JSON results;
238
+ it adds no command, starts nothing, emits no raw log or connection value, and
239
+ remains `source-validated/unqualified`. Exact WorkerBee rebind and combined
240
+ disposable-guest qualification remain required before RC promotion. See
241
+ `docs/reference/workerbee-profile-adapter.md`.
242
+
243
+ API endpoints (when started with `--metrics-port`): see `docs/reference/http-api.md`.
244
+
245
+ Multi-container tips:
246
+ - Add sidecars under `spec.containers` and init containers under `spec.initContainers`.
247
+ - Use `ae logs <app> --container <name>` and `ae exec <app> --container <name> -- <cmd>` to target a specific container.
248
+ - Config/Secret file projections are mounted at `/var/run/ae/config/<app>`; sidecars can add custom `projectionMounts` to bind specific subpaths to custom mount points.
249
+ - Namespace targeting: add `-n <ns>`/`--namespace` or use `ns/app` (or `ns--app`) when apps live outside `default`.
250
+
251
+ Multi-node lab (controller + agents + overlay Service VIPs):
252
+ - Controller: `AE_ENABLE_SERVICE_PROXY=1 AE_SERVICE_PROVIDER=overlay AE_AGENT_API_TOKEN=changeme python -m ae.controller --loop --specs specs/ --metrics-port 9108`
253
+ - Worker agent on another host: `AE_CONTROLLER_URL=http://<controller>:9110 AE_AGENT_TOKEN=$AE_AGENT_API_TOKEN python -m ae.node --runtime-backend podman --port 9109 --ensure-pod-net`
254
+ - Apply the multi-node sample: `python -m ae.cli apply -f specs/examples/echo-multinode.yaml`
255
+ - Inspect nodes/placement: `ae nodes list`, `ae status echo-mn --wide --events`
256
+ - Full walkthrough: `docs/guides/multinode-lab.md`
257
+
258
+ Kubernetes API shim (kubectl/helm):
259
+ - Start shim (Postgres or SQLite): `AE_APISHIM_TOKEN=devtoken python -m ae.apishim serve --host 127.0.0.1 --port 8445`
260
+ - Point kubectl: `kubectl --server=http://127.0.0.1:8445 --token $AE_APISHIM_TOKEN get pods`
261
+ - Port-forward and apply work for Deployments/Services/Ingress/HPA/StatefulSet/DaemonSet/Job/CronJob.
262
+ - Compatibility matrix and open gaps: `docs/reference/apishim-compatibility-matrix.md`, `docs/reference/apishim-roadmap.md`.
263
+
264
+ Inference fabric (experimental):
265
+ - Apply a cell manifest: `ae cell apply -f specs/examples/inference/cell-bc-pp2-ray.yaml`
266
+ - Inspect cell state: `ae cell status cell-bc-pp2-ray --json`
267
+ - Inspect fabric sessions: `ae fabric sessions --json`
268
+ - Current behavior and limits: `docs/reference/inference-fabric.md`
269
+ - Hardware baseline and cluster prep: `docs/reference/ai-max-395-hardware-baseline.md`, `docs/ops/ai-max-395-cluster-prep.md`
270
+ - Formal design and roadmap: `docs/design/fabric-deployment-topology.md`, `docs/design/fabric-control-plane.md`, `docs/roadmap/distributed-compute-fabric.md`
271
+ - Formal target shape: AI Max+ 395-first execution cells behind a provider-facing HA edge, with an exact public node baseline today and Hyperon entering later as an advisory planning layer
272
+
273
+ ## Kubernetes Alignment Matrix (Operator View)
274
+
275
+ Legend: Green = aligned/supported; Yellow = partial/best-effort; Red = out-of-scope; N/A = not applicable.
276
+
277
+ Columns: Runtime = k1s engine behavior; Shim = Kubernetes API shim (kubectl/helm); Export = `ae export-k8s` YAML.
278
+
279
+ Matrix source: `docs/site/k8s_status.json`.
280
+
281
+ | Area | Capability | Runtime | Shim | Export | Operator notes |
282
+ | --- | --- | --- | --- | --- | --- |
283
+ | API & tooling | kubectl get/apply/watch | N/A | Green | N/A | CI smoke gates cover apply/watch and OpenAPI drift. |
284
+ | API & tooling | SSA + JSON Merge Patch | N/A | Green | N/A | `managedFields` + conflict detection supported. |
285
+ | API & tooling | OpenAPI v2/v3 | N/A | Green | N/A | v3 mirrors v2; schemas validated in CI. |
286
+ | Workloads | Deployment/ReplicaSet/Pod semantics | Green | Green | Green | status/conditions + logs/exec/port-forward. |
287
+ | Workloads | StatefulSet/DaemonSet/Job/CronJob semantics | Yellow | Yellow | Green | stored + best-effort status; emulated as Deployment-like apps. |
288
+ | Workloads | HPA v2 | Green | Green | Green | backed by k1s autoscaling with status/currentMetrics. |
289
+ | Networking | Service (ClusterIP/NodePort/LB status) | Green | Green | Green | VIP/overlay-aware; EndpointSlice projection. |
290
+ | Networking | Ingress v1 (basic) | Green | Green | Green | no regex/canary/advanced annotations. |
291
+ | Networking | NetworkPolicy enforcement | Red | Red | Yellow | export emits NP; enforcement depends on CNI (k3s default flannel doesn't enforce). |
292
+ | Security/Auth | Tokens + RBAC | N/A | Green | Green | RBAC enforced in shim; export emits Role/RoleBinding presets. |
293
+ | Security/Auth | ServiceAccount tokens | N/A | Green | Green | shim issues SA tokens; exporter emits SA + bindings. |
294
+ | Security/Auth | PodSecurity admission/webhooks | Red | Red | Yellow | exporter can emit PSA namespace labels only. |
295
+ | Storage | PV/PVC/StorageClass/CSI semantics | Red | Red | Yellow | exporter can emit PVCs/volumeClaimTemplates only. |
296
+ | Observability | Logs/exec/port-forward | Green | Green | N/A | pod + service port-forward supported in shim. |
297
+ | Observability | Events API | Green | Green | N/A | controller/agent events surfaced to `/api/v1/events`. |
298
+ | Observability | metrics.k8s.io / aggregated APIs | Red | Red | N/A | out-of-scope. |
299
+ | Scheduling | nodeSelector/taints/tolerations/topology spread | Green | Green | Green | honored by scheduler; passed through on export. |
300
+ | Nodes | Inventory/cordon/drain | Green | Yellow | N/A | `ae nodes` supports cordon/drain; shim projects Nodes but no kubelet. |
301
+ | Operator workflow | Helm install/upgrade/uninstall (stateless charts) | N/A | Yellow | N/A | good for Deploy/Service/Ingress + RBAC/HPA/PDB; operators/controllers out-of-scope. |
302
+ | Operator workflow | Rollout control (pause/resume/canary ramp) | Green | N/A | N/A | k1s-native rollout policy with canary weights. |
303
+
304
+ ### k1s-specific operator features (not part of upstream Kubernetes; not available in k3s by default)
305
+
306
+ - `ae k8s-check` portability checks and `ae k8s-report` compliance JSON embedded in docs.
307
+ - `ae export-k8s` presets (`web-hardened`, `web-strict`) + strict validation for portable YAML.
308
+ - Caddy site-fragment ingress with `ae tls` helpers for k8s-style TLS secrets.
309
+ - `ae plan` placement hints and `ae nodes` inventory/cordon/drain workflows.
310
+ - Rollout policy with canary weights + auto-ramp persisted in state.
311
+ - Built-in `/dashboard`, `/nodes`, and enriched `/metrics` endpoints.
312
+
313
+ ### Quick token generation with expiration
314
+ - Generate API tokens that expire in 24 hours and write them to a file of exports you can `source`:
315
+ - `python -m ae.cli api tokens --generate --ttl-hours 24 -o .env.api`
316
+
317
+ ## Makefile Helper Commands
318
+
319
+ Run with `make <target>`. You can override defaults via `VAR=value make <target>`.
320
+
321
+ Setup and quality:
322
+ - `make install`: install dev dependencies (`pip -e .[dev]`).
323
+ - `make watch`: install file-watching extras (`pip -e .[watch]`).
324
+ - `make test`: run unit tests (`pytest -q`).
325
+ - `make lint`: run `ruff check` + `mypy src/ae`.
326
+ - `make env-doctor`: report shell-provided tools, compose availability, host sockets/services, and local DNS/TLS bridge status.
327
+ - `make dev-local-clean`: remove helper-managed local DNS/TLS state.
328
+ - `make wheel`: build a wheel into `dist/`.
329
+
330
+ Local dev and samples:
331
+ - `make dev-up` / `make dev-down`: start/stop dev Docker Compose stack.
332
+ - `make down`: stop all dev/demo stacks (best-effort).
333
+ - `make loop`: controller reconcile loop (watch mode).
334
+ - `make run`: single reconcile pass.
335
+ - `make dev-min` / `make dev-etcd` / `make k1s-core` / `make k1s-edge`: runtime profiles with empty specs.
336
+ - `make k1s-core-cri` / `make k1s-edge-cri` / `make k1s-core-edge-cri` / `make k1s-edge-core-cri`: strict CRI profile aliases.
337
+ - `make edge-site-cri SITE_ID=<site> EDGE_PORT=<port> EDGE_HTTP_PORT=<port>`: strict CRI multi-site edge helper.
338
+ - `make apply-sample`: apply `specs/examples/echo.yaml`.
339
+ - `make status-sample`: status for `echo`.
340
+ - `make logs-sample`: logs for `echo`.
341
+ - `make k8s-smoke`: export + validate sample Kubernetes YAML (no cluster required).
342
+ - `make start-here`: build docs and open `docs/site/start-here.html`.
343
+ - `make haproxy-update`: regenerate HAProxy config from controller API.
344
+ - `make haproxy-watch`: watch/reload HAProxy config from controller API.
345
+ - `make install-systemd` / `make uninstall-systemd`: install/remove systemd units.
346
+ - `make install-docs-service` / `make uninstall-docs-service`: install/remove docs service.
347
+ - `make secrets-seal-demo`: run the sealed-secret demo helper.
348
+
349
+ Docs, labs, and playground:
350
+ - `make docs`: combine snapshots (if present), regenerate charts, build docs.
351
+ - `make docs-export`: build non-interactive HTML into `docs/export` (`DOCS_OUT_DIR=` override).
352
+ - `make docs-wiki-export`: export wiki-friendly Markdown into `docs/wiki` (`WIKI_OUT=` override).
353
+ - `make docs-watch`: rebuild docs when `combined/combined.csv` changes.
354
+ - `make docs-local-ignore`: locally hide `docs/site` changes from git status.
355
+ - `make docs-local-track`: re-enable tracking for `docs/site` updates before committing.
356
+ - `make labs-up` / `make labs-down`: dev labs stack (docs + controller via compose).
357
+ - `make labs-aio-up` / `make labs-aio-down`: all-in-one labs stack.
358
+ - `make labs-k3d-up` / `make labs-k3d-down`: bring up/down local k3d cluster for labs.
359
+ - `make labs-apishim-env`: print apishim tokens from `state/profiles/dev-etcd/apishim.env`.
360
+ - `make apishim-smoke`: quick API shim health check on port 8445.
361
+ - `make shim-helm-demo`: run the helm shim demo helper.
362
+
363
+ Demo workflows:
364
+ - `make demo`: run the playground labs demo (`--labs --labs-token`; podman backend, plaintext secrets allowed).
365
+ - `make demo-help`: show demo script help.
366
+ - `make demo-down`: tear down demo stacks.
367
+ - `make reg-cache-reset`: clear local registry cache used by demos.
368
+ - `make demo-hardened`: run hardened demo flow.
369
+ - `make demo-reset`: reset demo/labs state and prune volumes.
370
+ - `make dashboard-reload`: reload controller under the dashboard supervisor.
371
+ - `make dashboard-restart`: restart the supervisor and reload.
372
+
373
+ Integration and e2e:
374
+ - `make integ-test`: integration tests (`pytest -q tests/integration/`).
375
+ - `make e2e` / `make e2e-multiport`: run the multiport e2e script.
376
+
377
+ Benchmarks (memory + runtime tooling):
378
+ - `make bench-mem-k1s`: snapshot k1s memory.
379
+ - `make bench-mem-k3s`: snapshot k3s memory.
380
+ - `make bench-mem-debug`: quick debug benchmark pass.
381
+ - `make bench-mem-agg`: aggregate latest snapshot under a label.
382
+ - `make bench-mem-matrix-k1s`: run k1s replica matrix snapshots.
383
+ - `make bench-mem-combine`: combine snapshots into `combined/*`.
384
+ - `make bench-mem-verify`: verify a snapshot and print per-container split.
385
+ - `make bench-k3s-up` / `make bench-k3s-down`: manage a k3s bench cluster.
386
+ - `make bench-mem-matrix-k3s`: run k3s replica matrix snapshots.
387
+ - `make bench-mem-rollout-k1s`: run k1s rollout snapshots.
388
+ - `make bench-mem-rollout-k3s`: run k3s rollout snapshots.
389
+ - `make bench-mem-plot`: render benchmark charts.
390
+ - `make bench-mem-e2e-k3s-sudo`: full k3s e2e (matrix + rollout + charts) with sudo.
391
+ - `make bench-mem-e2e-k1s`: full k1s e2e (matrix + rollout + charts).
392
+ - `make bench-mem-e2e-k1s-sudo`: k1s e2e with sudo snapshots.
393
+ - `make bench-mem-e2e-k1nd`: k1nd (k1s-in-Docker) e2e.
394
+ - `make bench-mem-e2e-k1nd-sudo`: k1nd e2e with sudo snapshots.
395
+ - `make bench-mem-e2e-k1nd-quick`: fast k1nd profile.
396
+ - `make bench-mem-e2e-k1nd-resume-rollout`: resume only the rollout phase.
397
+ - `make bench-mem-e2e-k1nd-down`: k1nd e2e then tear down compose.
398
+ - `make bench-mem-e2e-all`: run all baseline suites.
399
+ - `make bench-mem-e2e-minimal`: minimal baseline suite.
400
+ - `make bench-watch-runtime`: live runtime debug snapshotter.
401
+ - `make bench-mem-e2e-baselines`: run baseline suite matrix.
402
+ - `make bench-mem-e2e-baselines-sudo`: baseline suite with sudo.
403
+ - `make bench-mem-docs`: combine + plot + rebuild docs.
404
+ - `make bench-retained-rebuild PROFILE=final STAMP=<fresh-stamp> DELETE_DROPPED=1`: rebuild retained benchmark artifacts from one validated rerun stamp plus the frozen legacy reference.
405
+ - `make bench-fix-perms`: normalize artifact permissions.
406
+ - `make bench-mem-backfill`: backfill missing summary.json + rebuild docs.
407
+ - `make bench-engines-clear`: stop/remove all containers (dangerous).
408
+ - `make bench-state-clean`: remove benchmark-only state (`state/bench-*`).
409
+ - `make dev-state-clean`: wipe full `state/` (requires `CONFIRM=1`).
410
+ - `make bench-mem-backfill-oci`: add OCI runtime metadata and recompute charts.
411
+ - `make bench-mem-backfill-oci-latest`: backfill OCI metadata for latest label only.
412
+ - `make bench-mem-finalize-sudo`: legacy finalize helper for mixed-ownership cleanup; retained publishing should use `bench-retained-rebuild`.
413
+ - `make bench-mem-e2e-k3s`: full k3s e2e (matrix + rollout + charts).
414
+ - `make bench-mem-idle-k1s`: idle baseline snapshot for k1s.
415
+ - `make bench-mem-idle-k3s`: idle baseline snapshot for k3s.
416
+
417
+ Images and containers:
418
+ - `make image-docker`: build controller image with Dockerfile.
419
+ - `make image-podman`: build controller image with Containerfile.
420
+ - `make push-docker` / `make push-podman`: push controller image.
421
+ - `make docker-build-controller`: build controller image (ops/images/controller.Dockerfile).
422
+ - `make docker-run-controller`: run controller container with specs/state mounts.
423
+
424
+ ## Kubernetes Export Quickstart
425
+
426
+ - Render the echo example to Kubernetes YAML and validate:
427
+ - `python -m ae.cli export-k8s -f specs/examples/echo.yaml --namespace demo --ingress-class traefik --validate > k8s.yaml`
428
+ - Include ConfigMap/Secret objects, envFrom, and file projections (mounted at `/var/run/ae/config`):
429
+ - `python -m ae.cli export-k8s -f specs/examples/envfrom-and-projection.yaml --namespace demo --emit-configs --emit-secrets --validate > k8s.yaml`
430
+ - Harden NetworkPolicy quickly:
431
+ - `python -m ae.cli export-k8s -f specs/examples/echo.yaml --namespace demo --np-preset web --validate > k8s.yaml`
432
+ - `python -m ae.cli export-k8s -f specs/examples/echo.yaml --namespace demo --np-preset backend --validate > k8s.yaml`
433
+ - See `docs/reference/k8s-export.md` for supported fields: startupProbe, image pull options, env/envFrom, projected volumes, PDB/HPA, pod-level security, and more.
434
+
435
+ ## Remote CLI (over LAN)
436
+
437
+ You can point the CLI at a controller running on another machine.
438
+
439
+ Controller (on the host):
440
+
441
+ ```
442
+ export AE_API_MUTATIONS=1
443
+ export AE_API_READ_TOKEN=readtoken
444
+ export AE_API_SCALER_TOKEN=scaletoken
445
+ export AE_API_ADMIN_TOKEN=admintoken
446
+ python -m ae.controller --loop --specs specs/ --metrics-port 9108 --watch
447
+ ```
448
+
449
+ Client (from another machine):
450
+
451
+ ```
452
+ # Reads
453
+ ae --server http://<controller-ip>:9108 --token readtoken status
454
+ ae --server http://<controller-ip>:9108 --token readtoken events echo --limit 20
455
+
456
+ # Mutations
457
+ ae --server http://<controller-ip>:9108 --token scaletoken scale echo --replicas 2
458
+ ae --server http://<controller-ip>:9108 --token admintoken delete echo --purge
459
+ ```
460
+
461
+ See `docs/ops/runbook.md` → “Remote CLI over LAN” for details and curl examples.
462
+
463
+ ## License
464
+
465
+ This project is licensed under the Apache License, Version 2.0. See `LICENSE` for full terms, including the patent grant and redistribution requirements.