abstractframework 0.1.12__tar.gz → 0.2.1__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 (198) hide show
  1. {abstractframework-0.1.12 → abstractframework-0.2.1}/CHANGELOG.md +140 -1
  2. {abstractframework-0.1.12/abstractframework.egg-info → abstractframework-0.2.1}/PKG-INFO +89 -33
  3. {abstractframework-0.1.12 → abstractframework-0.2.1}/README.md +82 -26
  4. {abstractframework-0.1.12 → abstractframework-0.2.1}/abstractframework/__init__.py +15 -5
  5. abstractframework-0.2.1/abstractframework/cli.py +537 -0
  6. abstractframework-0.2.1/abstractframework/install_manifest.py +263 -0
  7. {abstractframework-0.1.12 → abstractframework-0.2.1/abstractframework.egg-info}/PKG-INFO +89 -33
  8. {abstractframework-0.1.12 → abstractframework-0.2.1}/abstractframework.egg-info/SOURCES.txt +8 -0
  9. {abstractframework-0.1.12 → abstractframework-0.2.1}/abstractframework.egg-info/requires.txt +6 -6
  10. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/README.md +4 -2
  11. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0034-framework-release-sequence-and-gates.md +9 -0
  12. abstractframework-0.2.1/docs/adr/0038-script-bootstrap-and-gateway-console-install.md +100 -0
  13. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/README.md +1 -0
  14. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/api.md +22 -6
  15. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/architecture.md +32 -3
  16. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/faq.md +75 -3
  17. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/getting-started.md +48 -9
  18. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/glossary.md +22 -2
  19. abstractframework-0.2.1/docs/install.md +345 -0
  20. abstractframework-0.2.1/docs/installers/README.md +31 -0
  21. abstractframework-0.2.1/docs/installers/components.md +50 -0
  22. abstractframework-0.2.1/docs/installers/implementation-plan.md +44 -0
  23. abstractframework-0.2.1/docs/installers/operations-and-support.md +52 -0
  24. abstractframework-0.2.1/docs/installers/release-and-manifest.md +55 -0
  25. abstractframework-0.2.1/docs/installers/security-and-os-blocks.md +79 -0
  26. abstractframework-0.2.1/docs/installers/strategy.md +77 -0
  27. abstractframework-0.2.1/docs/installers/user-journeys.md +98 -0
  28. abstractframework-0.2.1/docs/workspace-scripts.md +144 -0
  29. {abstractframework-0.1.12 → abstractframework-0.2.1}/llms-full.txt +1628 -183
  30. {abstractframework-0.1.12 → abstractframework-0.2.1}/llms.txt +9 -4
  31. {abstractframework-0.1.12 → abstractframework-0.2.1}/pyproject.toml +7 -7
  32. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/af.sh +3 -2
  33. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/build.sh +259 -112
  34. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/clone.sh +65 -48
  35. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/commit.sh +6 -5
  36. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/console.sh +2 -3
  37. abstractframework-0.2.1/scripts/deps.sh +37 -0
  38. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/entity.sh +2 -2
  39. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/gen_llms_full.py +8 -0
  40. abstractframework-0.2.1/scripts/install.sh +806 -0
  41. abstractframework-0.2.1/scripts/lib/af_inventory.py +560 -0
  42. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/lib/apps_common.sh +4 -2
  43. abstractframework-0.2.1/scripts/lib/repo_groups.sh +241 -0
  44. abstractframework-0.2.1/scripts/pull.sh +189 -0
  45. abstractframework-0.2.1/scripts/push.sh +189 -0
  46. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/start-local.sh +3 -3
  47. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/status.sh +87 -34
  48. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/tests/test_af_supervisor.sh +28 -6
  49. abstractframework-0.2.1/scripts/tests/test_inventory.sh +158 -0
  50. abstractframework-0.2.1/scripts/tests/test_repo_scripts.sh +210 -0
  51. abstractframework-0.2.1/tests/test_install_profiles.py +607 -0
  52. abstractframework-0.1.12/abstractframework/cli.py +0 -214
  53. abstractframework-0.1.12/abstractframework/install_manifest.py +0 -145
  54. abstractframework-0.1.12/docs/install.md +0 -198
  55. abstractframework-0.1.12/docs/installers/README.md +0 -28
  56. abstractframework-0.1.12/docs/installers/components.md +0 -40
  57. abstractframework-0.1.12/docs/installers/implementation-plan.md +0 -34
  58. abstractframework-0.1.12/docs/installers/operations-and-support.md +0 -41
  59. abstractframework-0.1.12/docs/installers/release-and-manifest.md +0 -117
  60. abstractframework-0.1.12/docs/installers/security-and-os-blocks.md +0 -58
  61. abstractframework-0.1.12/docs/installers/strategy.md +0 -60
  62. abstractframework-0.1.12/docs/installers/user-journeys.md +0 -63
  63. abstractframework-0.1.12/scripts/install.sh +0 -93
  64. abstractframework-0.1.12/scripts/lib/repo_groups.sh +0 -119
  65. abstractframework-0.1.12/tests/test_install_profiles.py +0 -231
  66. {abstractframework-0.1.12 → abstractframework-0.2.1}/LICENSE +0 -0
  67. {abstractframework-0.1.12 → abstractframework-0.2.1}/MANIFEST.in +0 -0
  68. {abstractframework-0.1.12 → abstractframework-0.2.1}/abstractframework/__main__.py +0 -0
  69. {abstractframework-0.1.12 → abstractframework-0.2.1}/abstractframework/py.typed +0 -0
  70. {abstractframework-0.1.12 → abstractframework-0.2.1}/abstractframework.egg-info/dependency_links.txt +0 -0
  71. {abstractframework-0.1.12 → abstractframework-0.2.1}/abstractframework.egg-info/entry_points.txt +0 -0
  72. {abstractframework-0.1.12 → abstractframework-0.2.1}/abstractframework.egg-info/top_level.txt +0 -0
  73. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0001-layered-architecture.md +0 -0
  74. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0002-effect-system-design.md +0 -0
  75. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0003-tool-system-architecture.md +0 -0
  76. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0004-observability-strategy.md +0 -0
  77. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0005-memory-architecture.md +0 -0
  78. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0006-durable-tool-execution.md +0 -0
  79. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0007-active-context-and-memory-provenance.md +0 -0
  80. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0008-token-terminology.md +0 -0
  81. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0009-connected-memory-recall-and-provenance.md +0 -0
  82. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0010-runtime-owned-node-traces.md +0 -0
  83. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0011-ledger-subscriptions-and-event-bridge.md +0 -0
  84. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0012-portable-workflowartifact.md +0 -0
  85. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0013-durable-run-controls-pause-resume-cancel.md +0 -0
  86. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0014-runtime-authority-timeouts.md +0 -0
  87. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0015-execution-targets-and-remote-tool-workers.md +0 -0
  88. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0016-tool-calling-pipeline-and-responsibility-boundaries.md +0 -0
  89. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0017-host-ui-events-and-durable-prompts.md +0 -0
  90. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0018-durable-run-gateway-and-remote-host-control-plane.md +0 -0
  91. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0019-testing-strategy-and-levels.md +0 -0
  92. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0020-agent-host-pool-and-orchestrator-placement.md +0 -0
  93. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0021-deployment-topologies-and-supported-scenarios.md +0 -0
  94. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0022-orchestrator-host-and-runtime-daemonization.md +0 -0
  95. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0023-file-attachment-path-resolution-and-authorization.md +0 -0
  96. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0024-attachment-placeholders-and-compaction-invariants.md +0 -0
  97. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0025-kg-entity-normalization-and-dedup.md +0 -0
  98. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0026-truncation-policy-and-contract.md +0 -0
  99. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0027-timeout-policy-and-contract.md +0 -0
  100. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0028-capabilities-plugins-and-library-framework-modes.md +0 -0
  101. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0029-permissive-dependency-and-licensing-policy.md +0 -0
  102. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0030-security-test-fixtures-and-isolation.md +0 -0
  103. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0031-workflow-llm-routing-overrides-provider-model-and-base-url.md +0 -0
  104. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0032-package-dependency-boundaries-and-gateway-first-apps.md +0 -0
  105. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0033-install-profiles-config-entrypoints-and-server-boundaries.md +0 -0
  106. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0035-capability-routing-defaults.md +0 -0
  107. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0036-artifact-descriptor-contract.md +0 -0
  108. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/0037-hosted-file-source-contract-and-workspacepath-authority.md +0 -0
  109. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/memory-recall-levels.md +0 -0
  110. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/reorg/001_music_as_capability_plugin_via_acestep_api.md +0 -0
  111. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/reorg/002_abstractmusic_inprocess_local_generation.md +0 -0
  112. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/reorg/003_abstractmusic_acestep_v15_backend_source_strategy.md +0 -0
  113. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/reorg/004_smartnote_thin_client_architecture.md +0 -0
  114. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/reorg/005_smartnote_artifact_first_cards.md +0 -0
  115. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/reorg/2026-02-21_gateway-first-assistant.md +0 -0
  116. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/reorg/2026-02-21_installer_manager_strategy.md +0 -0
  117. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/adr/reorg/2026-02-21_macos_installer_manager.md +0 -0
  118. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/claude/README.md +0 -0
  119. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/claude/abstractframework-fit.md +0 -0
  120. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/claude/claude-skills-overview.md +0 -0
  121. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/claude/claude-skills-sources.md +0 -0
  122. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/claude/claude-skills-top-20.md +0 -0
  123. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/comparisons/README.md +0 -0
  124. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/configuration.md +0 -0
  125. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/guide/LANDING.md +0 -0
  126. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/guide/README.md +0 -0
  127. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/guide/agent-skills.md +0 -0
  128. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/guide/agent-vs-llm.md +0 -0
  129. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/guide/agora-workflow-agent.md +0 -0
  130. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/guide/apple-local-gateway-flow.md +0 -0
  131. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/guide/capability-plugins.md +0 -0
  132. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/guide/capability-routing-defaults.md +0 -0
  133. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/guide/deployment-iphone.md +0 -0
  134. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/guide/deployment-topologies.md +0 -0
  135. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/guide/deployment-web.md +0 -0
  136. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/guide/email-integration.md +0 -0
  137. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/guide/event-inbox-agent.md +0 -0
  138. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/guide/flow-and-kg-memory.md +0 -0
  139. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/guide/gateway-security.md +0 -0
  140. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/guide/headless-swarm.md +0 -0
  141. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/guide/process-manager-env-vars.md +0 -0
  142. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/guide/prompt-caching.md +0 -0
  143. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/guide/runtime-artifacts.md +0 -0
  144. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/guide/runtime-scope.md +0 -0
  145. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/guide/scheduled-workflows.md +0 -0
  146. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/guide/summoned-entities.md +0 -0
  147. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/guide/telegram-integration.md +0 -0
  148. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/guide/workflow-bundles.md +0 -0
  149. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/prompts/agora-collaboration.md +0 -0
  150. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/scenarios/README.md +0 -0
  151. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/scenarios/email-inbox-agent.md +0 -0
  152. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/scenarios/gateway-first-local-dev.md +0 -0
  153. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/scenarios/offline-coding-assistant.md +0 -0
  154. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/scenarios/phone-thin-client.md +0 -0
  155. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/scenarios/specialized-agent-flow.md +0 -0
  156. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/scenarios/telegram-permanent-contact.md +0 -0
  157. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/scenarios/workflow-bundle-lifecycle.md +0 -0
  158. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/skills/README.md +0 -0
  159. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/skills/abstractframework-agent-skills-fit.md +0 -0
  160. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/skills/abstractframework-architecture-deep-dive.md +0 -0
  161. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/skills/agent-skills-ecosystem-scan.md +0 -0
  162. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/skills/agent-skills-ecosystem-sources.md +0 -0
  163. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/skills/claude-agent-skills-overview.md +0 -0
  164. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/skills/claude-agent-skills-sources.md +0 -0
  165. {abstractframework-0.1.12 → abstractframework-0.2.1}/docs/skills/claude-agent-skills-top-20.md +0 -0
  166. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/af-local.sh +0 -0
  167. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/agora_react_flow_smoke.py +0 -0
  168. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/assistant-local.sh +0 -0
  169. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/assistant.sh +0 -0
  170. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/cache_probe_local_backends.py +0 -0
  171. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/cache_steer_repl.py +0 -0
  172. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/code-local.sh +0 -0
  173. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/code.sh +0 -0
  174. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/console-local.sh +0 -0
  175. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/core_operator_drive.py +0 -0
  176. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/entity-local.sh +0 -0
  177. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/event_inbox_flow_smoke.py +0 -0
  178. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/flow-local.sh +0 -0
  179. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/flow.sh +0 -0
  180. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/gateway-flow-local.sh +0 -0
  181. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/gateway-flow.sh +0 -0
  182. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/gateway-local.sh +0 -0
  183. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/gateway.sh +0 -0
  184. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/headless_fleet_bridge.py +0 -0
  185. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/headless_fleet_demo.py +0 -0
  186. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/headless_steer_repl.py +0 -0
  187. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/lib/af_stack.sh +0 -0
  188. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/lib/af_supervisor.sh +0 -0
  189. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/lib/gateway_user_tokens.py +0 -0
  190. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/meet_castor.sh +0 -0
  191. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/observer-local.sh +0 -0
  192. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/observer.sh +0 -0
  193. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/plan_walkthrough.py +0 -0
  194. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/spawn_demo_agent.sh +0 -0
  195. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/start.sh +0 -0
  196. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/steer_repl.py +0 -0
  197. {abstractframework-0.1.12 → abstractframework-0.2.1}/scripts/visit_resume_cache_probe.py +0 -0
  198. {abstractframework-0.1.12 → abstractframework-0.2.1}/setup.cfg +0 -0
@@ -2,7 +2,146 @@
2
2
 
3
3
  All notable changes to AbstractFramework will be documented in this file.
4
4
 
5
- ## [Unreleased]
5
+ ## [0.2.1] - 2026-09-24
6
+
7
+ Patch release: the one-line install works on a machine without a C compiler, and the
8
+ meta-package pins abstractvoice 0.11.4. Everything else is unchanged from 0.2.0.
9
+
10
+ ### Changed
11
+
12
+ - **abstractvoice 0.11.4** (was 0.11.3). It takes voice activity detection from
13
+ `webrtcvad-wheels`, which ships prebuilt wheels for macOS arm64, Linux and Windows, instead
14
+ of `webrtcvad`, which is source-only on PyPI and needs a compiler. This is the pin that made
15
+ `pip install abstractframework[apple]` build `webrtcvad` from source. The other pins are
16
+ unchanged: abstractgateway 0.3.0, abstractcore 2.14.0, AbstractRuntime 0.4.33.
17
+
18
+ ### Fixed
19
+
20
+ - **One-line install needs no compiler.** On a Mac without Xcode Command Line Tools the gateway
21
+ install failed building `webrtcvad` from source, and `llama-cpp-python`,
22
+ `stable-diffusion-cpp-python` and `aec-audio-processing` would have failed next. `install.sh` and
23
+ `install.ps1` now run `uv tool install` with `--with 'webrtcvad-wheels>=2.0.14'`, an overrides
24
+ file (`uv-overrides.txt` in the gateway data directory) that drops `webrtcvad`, keeps `vllm` to
25
+ Linux and leaves out the three compiled extras, plus `--no-build-package` for those packages so
26
+ a missing wheel fails fast instead of starting a compiler. The install runs from the data
27
+ directory and names the file relatively, because uv splits an `--overrides` value at whitespace
28
+ (`Application Support`). On macOS, Linux and Windows the preflight says when no compiler is
29
+ present, and that this is fine; the summary says what was skipped.
30
+
31
+ ### Added
32
+
33
+ - **`--full` (Windows: `-Full`)** keeps the compiled extras (llama.cpp GGUF, stable-diffusion.cpp,
34
+ echo cancellation) and builds them from source. It needs a C/C++ compiler and stops before
35
+ installing when none is found.
36
+
37
+ ## [0.2.0] - 2026-09-23
38
+
39
+ Install the framework with one line, sign in to the gateway console with a one-time link, and
40
+ manage local models and engines from the console, the terminal or the command line.
41
+
42
+ ### Added
43
+
44
+ - **One-line install.** `scripts/install.sh` (macOS, Linux) and `scripts/install.ps1` (Windows 10
45
+ 22H2+ / 11, PowerShell 5.1 and 7) install uv and Python 3.12 when needed, install the pinned
46
+ gateway as a uv tool (`abstractgateway[<profile>,tray]==0.3.0`, profile picked from the machine),
47
+ register it to start at login (`abstractgateway service install`), start it on `127.0.0.1`,
48
+ wait for `/api/health`, and open the console through a one-time sign-in link. No admin rights
49
+ and no system Python are needed:
50
+
51
+ ```bash
52
+ curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.sh | sh
53
+ ```
54
+
55
+ ```powershell
56
+ powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.ps1 | iex"
57
+ ```
58
+
59
+ Options: `--profile`, `--port`, `--with-apps` (Node.js through `nodejs-wheel`), `--with-ollama`,
60
+ `--with-lmstudio`, `--with-console`, `--with-code-cli`, `--with-core-cli`, `--no-service`,
61
+ `--no-open`, `--pin`, `--print` (dry run), `--uninstall [--purge]`. Re-running upgrades or
62
+ repairs in place. See [Install](docs/install.md#quick-start).
63
+ - **First-run wizard.** Through the pinned gateway 0.3.0, a bare `abstractgateway serve` binds
64
+ `127.0.0.1`, creates the admin user and prints a one-time console link; the console's first-run
65
+ guide sets up a local engine, a default model that fits the machine, and the apps.
66
+ - **Models and Engines in both entry points.** Through the pinned AbstractCore 2.14.0 and gateway
67
+ 0.3.0, `abstractcore serve` and `abstractgateway serve` both offer **Models** (catalog with a fit
68
+ verdict for this machine, installed models with sizes, download, delete) and **Engines**
69
+ (detect and install Ollama, LM Studio, MLX, llama.cpp; every install shows its command first)
70
+ in their web consoles, their terminal consoles (`abstractcore-console`,
71
+ `abstractgateway-console`) and on the command line (`abstractcore models|engines`,
72
+ `abstractgateway models|engines`). `abstractcore serve` gains a web console at `/console`.
73
+ - **Engine installs** from the console or the bootstrap flags (`--with-ollama`,
74
+ `--with-lmstudio`) use each vendor's official installer.
75
+ - `abstractframework doctor` checks the Python range (3.10–3.13), macOS 14+ on Apple Silicon for the
76
+ `apple` profile, uv, Node.js 18+ (system or `nodejs-wheel`), free disk, and reads the gateway
77
+ health (`ABSTRACTGATEWAY_URL`), `abstractgateway-config status --json`, Ollama and LM Studio
78
+ reachability with read-only requests. New `--no-network` and `--timeout`; checks can report
79
+ `info`.
80
+ - `CRATE_RELEASE_VERSIONS` lists the crates released with this version; `get_release_profile()`
81
+ returns them under `crates`.
82
+ - Workspace scripts for source checkouts:
83
+ - `scripts/lib/packages.txt`: one inventory of the 30 published packages (21 repositories) with
84
+ registry names, sub-paths, dependency tiers and edges, read by every workspace script.
85
+ `scripts/deps.sh` prints the tiers with their edges and reverse dependencies (`rdeps`) and
86
+ validates the inventory against the package files (`check`).
87
+ - `scripts/push.sh` (dry run by default, `--yes` to push `main`, never forced) and
88
+ `scripts/pull.sh` (fetch + fast-forward only), grouped by tier.
89
+ - `scripts/status.sh --registry` compares local versions with PyPI, npm and crates.io;
90
+ `--versions` and `--tiers` add the local versions and the dependency view.
91
+ - `scripts/build.sh` builds every package in tier order, including the Rust crates
92
+ `abstracttui`, `abstractcore-console`, `abstractcode` and `abstractgateway-console`. New
93
+ `--plan` and `AF_VENV_DIR`; `--python/--npm/--rust` combine; the script exits non-zero when a
94
+ selected build fails.
95
+ - See [Workspace scripts](docs/workspace-scripts.md).
96
+
97
+ ### Changed
98
+
99
+ - The release profile pins the packages released on 2026-09-23. `pip install abstractframework`
100
+ (and the `apple` / `gpu` extras) installs exactly these versions:
101
+
102
+ | Registry | Package | 0.1.12 | 0.2.0 |
103
+ |---|---|---|---|
104
+ | PyPI | `abstractgateway` (`[apple]`, `[gpu]` in the profiles) | 0.2.30 | **0.3.0** |
105
+ | PyPI | `abstractcore` | 2.13.42 | **2.14.0** |
106
+ | PyPI | `AbstractRuntime` | 0.4.32 | **0.4.33** |
107
+ | PyPI | `abstractassistant` (`[apple]` on macOS, `[gpu]` in the profiles) | 0.5.0 | 0.5.0 |
108
+ | PyPI | `abstractagent` | 0.3.13 | 0.3.13 |
109
+ | PyPI | `AbstractMemory` | 0.3.0 | 0.3.0 |
110
+ | PyPI | `abstractsemantics` | 0.0.5 | 0.0.5 |
111
+ | PyPI | `abstractvoice` | 0.11.3 | 0.11.3 |
112
+ | PyPI | `abstractvision` | 0.3.29 | 0.3.29 |
113
+ | PyPI | `abstractmusic` | 0.1.15 | 0.1.15 |
114
+ | npm | `@abstractframework/flow` | 0.3.20 | 0.3.20 |
115
+ | npm | `@abstractframework/code` | 0.4.2 | 0.4.2 |
116
+ | npm | `@abstractframework/observer` | 0.1.12 | 0.1.12 |
117
+ | npm | `@abstractframework/continuum` | 0.2.0 | 0.2.0 |
118
+ | npm | `@abstractframework/entity` | 0.1.0 | 0.1.0 |
119
+ | crates.io | `abstractgateway-console` | 0.6.0 | **0.7.0** |
120
+ | crates.io | `abstractcore-console` | — | **0.2.0** (new) |
121
+ | crates.io | `abstractcode` | 0.5.1 | 0.5.1 |
122
+ | crates.io | `abstracttui` | 0.6.0 | 0.6.0 |
123
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.2.30 | **0.3.0** |
124
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.13.42 | **2.14.0** |
125
+
126
+ `RELEASE_VERSIONS`, `NPM_RELEASE_VERSIONS`, `CRATE_RELEASE_VERSIONS`, `abstractframework doctor`,
127
+ the bootstrap scripts and the generated `docs/installers/install-manifest.json` follow the same
128
+ matrix.
129
+ - `abstractgateway serve` and `abstractcore serve` bind `127.0.0.1` by default when no auth is
130
+ configured (pinned packages). See the gateway and AbstractCore changelogs for the details.
131
+ - Install manifest schema version 2: new `bootstrap` section (gateway pin, Python version, extras
132
+ per profile, script URLs, flags); `post_install` is console-first (`abstractgateway serve` on
133
+ `127.0.0.1`, `/console`, claim link, service) and no longer lists `abstractcore --config`.
134
+ - `docs/installers/` describes the script bootstrap and the gateway console as the install
135
+ experience (ADR-0038) instead of a GUI installer manager with signed per-app packages.
136
+ - Linux ARM64 installs no longer need a C compiler with the pinned gateway. Older gateway pins
137
+ (`--pin 0.2.x`) still need `gcc` to build `psutil`; the installer warns during preflight.
138
+ - The AbstractCore server container image is documented under its published name,
139
+ `ghcr.io/lpalbou/abstractcore-server`.
140
+
141
+ ### Known limitations
142
+
143
+ - `install.ps1` is exercised in CI on Windows; the login entry created by
144
+ `abstractgateway service install` on Windows is experimental.
6
145
 
7
146
  ## [0.1.12] - 2026-09-23
8
147
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstractframework
3
- Version: 0.1.12
3
+ Version: 0.2.1
4
4
  Summary: Unified installer and documentation hub for the AbstractFramework ecosystem
5
5
  Author-email: Laurent-Philippe Albou <contact@abstractframework.ai>
6
6
  License: MIT
@@ -23,21 +23,21 @@ Classifier: Typing :: Typed
23
23
  Requires-Python: >=3.10
24
24
  Description-Content-Type: text/markdown
25
25
  License-File: LICENSE
26
- Requires-Dist: abstractgateway==0.2.30
26
+ Requires-Dist: abstractgateway==0.3.0
27
27
  Requires-Dist: abstractassistant==0.5.0
28
- Requires-Dist: abstractcore==2.13.42
29
- Requires-Dist: AbstractRuntime==0.4.32
28
+ Requires-Dist: abstractcore==2.14.0
29
+ Requires-Dist: AbstractRuntime==0.4.33
30
30
  Requires-Dist: abstractagent==0.3.13
31
31
  Requires-Dist: AbstractMemory==0.3.0
32
32
  Requires-Dist: abstractsemantics==0.0.5
33
- Requires-Dist: abstractvoice==0.11.3
33
+ Requires-Dist: abstractvoice==0.11.4
34
34
  Requires-Dist: abstractvision==0.3.29
35
35
  Requires-Dist: abstractmusic==0.1.15
36
36
  Provides-Extra: apple
37
- Requires-Dist: abstractgateway[apple]==0.2.30; extra == "apple"
37
+ Requires-Dist: abstractgateway[apple]==0.3.0; extra == "apple"
38
38
  Requires-Dist: abstractassistant[apple]==0.5.0; platform_system == "Darwin" and extra == "apple"
39
39
  Provides-Extra: gpu
40
- Requires-Dist: abstractgateway[gpu]==0.2.30; extra == "gpu"
40
+ Requires-Dist: abstractgateway[gpu]==0.3.0; extra == "gpu"
41
41
  Requires-Dist: abstractassistant[gpu]==0.5.0; extra == "gpu"
42
42
  Dynamic: license-file
43
43
 
@@ -56,7 +56,41 @@ AbstractFramework is an ecosystem of composable packages for building AI systems
56
56
 
57
57
  Think of it as an **agentic OS**: durable runs + replay-first observability + multimodal capabilities — write once, run across providers and deployment modes.
58
58
 
59
- > **Prerequisites**: Python 3.10+. Node.js 18+ for browser UIs. An LLM backend (Ollama, LM Studio, vLLM, or a cloud API key).
59
+ > **Prerequisites**: none for the one-line install below (it provisions Python and, optionally, Node.js). For a manual install: Python 3.10–3.13, Node.js 18+ for browser UIs, and an LLM backend (Ollama, LM Studio, vLLM, or a cloud API key).
60
+
61
+ ---
62
+
63
+ ## Quick start
64
+
65
+ One line installs the gateway (no admin rights, no system Python), registers it as a login
66
+ service, starts it on `127.0.0.1:8080`, and opens its web console already signed in. A first-run
67
+ guide then sets up a local engine (Ollama, LM Studio, MLX, llama.cpp), downloads a model that fits
68
+ your machine, and lists the apps:
69
+
70
+ ```bash
71
+ # macOS / Linux
72
+ curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.sh | sh
73
+ ```
74
+
75
+ ```powershell
76
+ # Windows 10 22H2+ / 11
77
+ powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.ps1 | iex"
78
+ ```
79
+
80
+ Add `--with-apps`, `--with-ollama` or `--with-lmstudio` for Node.js and local engines, `--print` to
81
+ see every command first, and `--uninstall` to remove it. Options, the equivalent commands and
82
+ uninstall details: [Install](docs/install.md).
83
+
84
+ Already have Python? Either entry point works the same way: start it, then open the link it prints.
85
+
86
+ ```bash
87
+ pip install abstractcore && abstractcore serve # http://127.0.0.1:8000/console#claim=…
88
+ pip install abstractgateway && abstractgateway serve # http://127.0.0.1:8080/console#claim=…
89
+ ```
90
+
91
+ Both consoles have **Models** (browse models that fit this machine, download, delete) and
92
+ **Engines** (detect and install local engines) tabs; every action also shows its command-line
93
+ equivalent (`abstractcore models …`, `abstractcore engines …`, `abstractgateway models …`).
60
94
 
61
95
  ---
62
96
 
@@ -86,6 +120,12 @@ resp = llm.generate("Explain durable execution in 3 bullets.")
86
120
  print(resp.content)
87
121
  ```
88
122
 
123
+ `abstractcore serve` starts the `/v1` server on `127.0.0.1:8000` and prints a one-time link to its
124
+ web console (Overview, Models, Engines, Providers). The same Models and Engines screens are
125
+ available from the command line (`abstractcore models catalog|list|download|delete`,
126
+ `abstractcore engines status|install`) and in the terminal console
127
+ (`cargo install abstractcore-console`).
128
+
89
129
  AbstractCore gives you one interface for provider switching, tools, structured output, and media — as a Python SDK or via `/v1` for any OpenAI-compatible client.
90
130
 
91
131
  ### 2) AbstractGateway — durable run control plane (HTTP/SSE APIs)
@@ -100,15 +140,24 @@ Start here if you're building persistent AI applications — agents that run for
100
140
 
101
141
  ```bash
102
142
  pip install abstractgateway
143
+ abstractgateway serve
144
+ ```
103
145
 
146
+ With no auth configured, `abstractgateway serve` binds `127.0.0.1:8080`, enables user auth,
147
+ creates `default/admin` in the per-user data folder, and prints a one-time sign-in link
148
+ (`http://127.0.0.1:8080/console#claim=…`, valid 10 minutes, this machine only). Open it to reach the
149
+ web console and its first-run guide. `abstractgateway claim` mints a new link;
150
+ `abstractgateway service install` starts the gateway at login.
151
+
152
+ To choose the data folder, the allowed browser origins or your own workflow bundles, set the
153
+ environment explicitly:
154
+
155
+ ```bash
104
156
  export ABSTRACTGATEWAY_USER_AUTH=1
105
157
  export ABSTRACTGATEWAY_ALLOWED_ORIGINS="http://localhost:*,http://127.0.0.1:*"
106
158
  export ABSTRACTGATEWAY_WORKFLOW_SOURCE=bundle
107
159
  export ABSTRACTGATEWAY_DATA_DIR="$PWD/runtime/gateway"
108
-
109
- # Optional: set only to serve your own bundle registry instead of the
110
- # workflows Gateway ships with.
111
- # export ABSTRACTGATEWAY_FLOWS_DIR="$PWD/bundles"
160
+ # export ABSTRACTGATEWAY_FLOWS_DIR="$PWD/bundles" # serve your own bundle registry
112
161
 
113
162
  abstractgateway serve --host 127.0.0.1 --port 8080
114
163
  ```
@@ -117,12 +166,10 @@ Out of the box this serves a ready set of workflows — a verify-gated coding
117
166
  agent, `deep-research`, and `co-scientist` among them. See
118
167
  [shipped workflows](abstractgateway/docs/shipped-workflows.md).
119
168
 
120
- On first local start, Gateway creates `default/admin`, writes the browser-login
121
- token to `runtime/gateway/auth/bootstrap-admin-token`, and prints the token in
122
- the terminal. Use that `admin` user token in the built-in web console at
123
- `http://127.0.0.1:8080/console`, AbstractFlow,
124
- AbstractCode Web, or AbstractObserver. `ABSTRACTGATEWAY_AUTH_TOKEN` remains a
125
- legacy server/operator bearer token; it is not a browser sign-in token.
169
+ The `admin` user token is kept in `<data dir>/auth/bootstrap-admin-token`; use it to sign in to
170
+ AbstractFlow, AbstractCode Web or AbstractObserver, or to the console without a claim link.
171
+ `ABSTRACTGATEWAY_AUTH_TOKEN` remains a legacy server/operator bearer token; it is not a browser
172
+ sign-in token.
126
173
 
127
174
  Monitor runs from a browser, or from a terminal with the gateway console:
128
175
 
@@ -134,8 +181,7 @@ ABSTRACTGATEWAY_AUTH_TOKEN=<token> abstractgateway-console --url http://127.0.0.
134
181
  ```
135
182
 
136
183
  Container images are published for the gateway and the AbstractCore server:
137
- `ghcr.io/lpalbou/abstractgateway:0.2.30` (`0.2.30-gpu` is an experimental NVIDIA
138
- image) and `ghcr.io/lpalbou/abstractcore:2.13.42`.
184
+ `ghcr.io/lpalbou/abstractgateway:0.3.0` and `ghcr.io/lpalbou/abstractcore-server:2.14.0`.
139
185
 
140
186
  For artifact and runtime-resource investigation, see
141
187
  `docs/guide/runtime-artifacts.md`.
@@ -209,7 +255,8 @@ The ecosystem, grouped by layer. Each name links to the package's own README.
209
255
  | [AbstractObserver](abstractobserver/) | Browser UI — monitor, control, and schedule gateway runs | `npx @abstractframework/observer` |
210
256
  | [AbstractEntity](abstractentity/) | Summoned-entity manager — roster, blueprint (cognition map + editing), chat drawer, live replay | `npx @abstractframework/entity` |
211
257
  | [AbstractContinuum](abstractcontinuum/) | Continuous iterative development and deployment console | `npx @abstractframework/continuum` |
212
- | **Gateway consoles** | Operator consoles for a running gateway: web at `/console`, terminal via `abstractgateway-console` | built into `abstractgateway`; `cargo install abstractgateway-console` |
258
+ | **Gateway consoles** | Operator consoles for a running gateway: web at `/console` (first-run guide, Models, Engines, providers, users), terminal via `abstractgateway-console` | built into `abstractgateway`; `cargo install abstractgateway-console` |
259
+ | **Core consoles** | Consoles for AbstractCore: web at `/console` of `abstractcore serve`, terminal via `abstractcore-console` (config, Models, Engines) | built into `abstractcore`; `cargo install abstractcore-console` |
213
260
  | **Code Web UI** | Browser client of AbstractCode (gateway-backed) | `npx @abstractframework/code` |
214
261
  | **Flow Editor** | Visual workflow authoring in the browser | `npx @abstractframework/flow` |
215
262
 
@@ -253,7 +300,7 @@ pip install "abstractframework[gpu]"
253
300
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
254
301
  | GPU | `pip install "abstractframework[gpu]"` | Linux / Windows with a CUDA or ROCm GPU | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
255
302
 
256
- ### Release matrix (abstractframework 0.1.12)
303
+ ### Release matrix (abstractframework 0.2.1)
257
304
 
258
305
  `abstractframework` pins every Python package with `==`, so one version of the
259
306
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -262,14 +309,14 @@ and tested together.
262
309
 
263
310
  | Registry | Package | Version |
264
311
  |---|---|---|
265
- | PyPI | `abstractgateway` | 0.2.30 |
312
+ | PyPI | `abstractgateway` | 0.3.0 |
266
313
  | PyPI | `abstractassistant` | 0.5.0 |
267
- | PyPI | `abstractcore` | 2.13.42 |
268
- | PyPI | `AbstractRuntime` | 0.4.32 |
314
+ | PyPI | `abstractcore` | 2.14.0 |
315
+ | PyPI | `AbstractRuntime` | 0.4.33 |
269
316
  | PyPI | `abstractagent` | 0.3.13 |
270
317
  | PyPI | `AbstractMemory` | 0.3.0 |
271
318
  | PyPI | `abstractsemantics` | 0.0.5 |
272
- | PyPI | `abstractvoice` | 0.11.3 |
319
+ | PyPI | `abstractvoice` | 0.11.4 |
273
320
  | PyPI | `abstractvision` | 0.3.29 |
274
321
  | PyPI | `abstractmusic` | 0.1.15 |
275
322
  | npm | `@abstractframework/flow` | 0.3.20 |
@@ -278,10 +325,11 @@ and tested together.
278
325
  | npm | `@abstractframework/continuum` | 0.2.0 |
279
326
  | npm | `@abstractframework/entity` | 0.1.0 |
280
327
  | crates.io | `abstractcode` | 0.5.1 |
281
- | crates.io | `abstractgateway-console` | 0.6.0 |
328
+ | crates.io | `abstractgateway-console` | 0.7.0 |
329
+ | crates.io | `abstractcore-console` | 0.2.0 |
282
330
  | crates.io | `abstracttui` | 0.6.0 |
283
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.2.30 (`0.2.30-gpu` experimental) |
284
- | GHCR | `ghcr.io/lpalbou/abstractcore` | 2.13.42 |
331
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.3.0 (`gpu-latest` / `<version>-gpu` experimental) |
332
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.14.0 |
285
333
 
286
334
  Optional add-ons that are not part of any profile install separately:
287
335
  `pip install abstract3d` (0.3.1), `pip install abstractcamera` (0.2.0) and
@@ -304,6 +352,7 @@ See [docs/install.md](docs/install.md) for the full install chooser, `uv`/venv g
304
352
  | [docs/glossary.md](docs/glossary.md) | Shared terminology (run, ledger, effect, wait, bundle, …) |
305
353
  | [docs/faq.md](docs/faq.md) | Common questions, comparisons, troubleshooting |
306
354
  | [docs/api.md](docs/api.md) | Meta-package API (pins, helpers, re-exports) |
355
+ | [docs/workspace-scripts.md](docs/workspace-scripts.md) | Working from source: package tiers, build, status, pull/commit/push scripts |
307
356
 
308
357
  ---
309
358
 
@@ -313,14 +362,21 @@ Clone all sibling repos and build everything in editable mode:
313
362
 
314
363
  ```bash
315
364
  ./scripts/clone.sh # clone every sibling repository next to this one
316
- source ./scripts/build.sh # editable installs into .venv (use `source` to stay in the venv)
365
+ ./scripts/deps.sh # dependency tiers: what builds and installs first, and why
366
+ source ./scripts/build.sh # Python (editable, into .venv), npm and Rust builds, tier by tier
317
367
  ```
318
368
 
319
- Then configure:
369
+ Keep the whole workspace in sync with `./scripts/status.sh` (git overview per tier; `--registry`
370
+ compares local versions with PyPI, npm and crates.io), `./scripts/pull.sh`, `./scripts/commit.sh`
371
+ and `./scripts/push.sh` (a dry run until you add `--yes`). See
372
+ [docs/workspace-scripts.md](docs/workspace-scripts.md) for every script and option.
373
+
374
+ Then configure providers and models in a console (`abstractcore serve` or
375
+ `abstractgateway serve`, then open the printed link), or from the terminal:
320
376
 
321
377
  ```bash
322
- abstractcore --config
323
- abstractcore --install
378
+ abstractcore --config # interactive configuration wizard
379
+ abstractcore --install # check every subsystem and download missing models and dependencies
324
380
  ```
325
381
 
326
382
  ---
@@ -13,7 +13,41 @@ AbstractFramework is an ecosystem of composable packages for building AI systems
13
13
 
14
14
  Think of it as an **agentic OS**: durable runs + replay-first observability + multimodal capabilities — write once, run across providers and deployment modes.
15
15
 
16
- > **Prerequisites**: Python 3.10+. Node.js 18+ for browser UIs. An LLM backend (Ollama, LM Studio, vLLM, or a cloud API key).
16
+ > **Prerequisites**: none for the one-line install below (it provisions Python and, optionally, Node.js). For a manual install: Python 3.10–3.13, Node.js 18+ for browser UIs, and an LLM backend (Ollama, LM Studio, vLLM, or a cloud API key).
17
+
18
+ ---
19
+
20
+ ## Quick start
21
+
22
+ One line installs the gateway (no admin rights, no system Python), registers it as a login
23
+ service, starts it on `127.0.0.1:8080`, and opens its web console already signed in. A first-run
24
+ guide then sets up a local engine (Ollama, LM Studio, MLX, llama.cpp), downloads a model that fits
25
+ your machine, and lists the apps:
26
+
27
+ ```bash
28
+ # macOS / Linux
29
+ curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.sh | sh
30
+ ```
31
+
32
+ ```powershell
33
+ # Windows 10 22H2+ / 11
34
+ powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.ps1 | iex"
35
+ ```
36
+
37
+ Add `--with-apps`, `--with-ollama` or `--with-lmstudio` for Node.js and local engines, `--print` to
38
+ see every command first, and `--uninstall` to remove it. Options, the equivalent commands and
39
+ uninstall details: [Install](docs/install.md).
40
+
41
+ Already have Python? Either entry point works the same way: start it, then open the link it prints.
42
+
43
+ ```bash
44
+ pip install abstractcore && abstractcore serve # http://127.0.0.1:8000/console#claim=…
45
+ pip install abstractgateway && abstractgateway serve # http://127.0.0.1:8080/console#claim=…
46
+ ```
47
+
48
+ Both consoles have **Models** (browse models that fit this machine, download, delete) and
49
+ **Engines** (detect and install local engines) tabs; every action also shows its command-line
50
+ equivalent (`abstractcore models …`, `abstractcore engines …`, `abstractgateway models …`).
17
51
 
18
52
  ---
19
53
 
@@ -43,6 +77,12 @@ resp = llm.generate("Explain durable execution in 3 bullets.")
43
77
  print(resp.content)
44
78
  ```
45
79
 
80
+ `abstractcore serve` starts the `/v1` server on `127.0.0.1:8000` and prints a one-time link to its
81
+ web console (Overview, Models, Engines, Providers). The same Models and Engines screens are
82
+ available from the command line (`abstractcore models catalog|list|download|delete`,
83
+ `abstractcore engines status|install`) and in the terminal console
84
+ (`cargo install abstractcore-console`).
85
+
46
86
  AbstractCore gives you one interface for provider switching, tools, structured output, and media — as a Python SDK or via `/v1` for any OpenAI-compatible client.
47
87
 
48
88
  ### 2) AbstractGateway — durable run control plane (HTTP/SSE APIs)
@@ -57,15 +97,24 @@ Start here if you're building persistent AI applications — agents that run for
57
97
 
58
98
  ```bash
59
99
  pip install abstractgateway
100
+ abstractgateway serve
101
+ ```
60
102
 
103
+ With no auth configured, `abstractgateway serve` binds `127.0.0.1:8080`, enables user auth,
104
+ creates `default/admin` in the per-user data folder, and prints a one-time sign-in link
105
+ (`http://127.0.0.1:8080/console#claim=…`, valid 10 minutes, this machine only). Open it to reach the
106
+ web console and its first-run guide. `abstractgateway claim` mints a new link;
107
+ `abstractgateway service install` starts the gateway at login.
108
+
109
+ To choose the data folder, the allowed browser origins or your own workflow bundles, set the
110
+ environment explicitly:
111
+
112
+ ```bash
61
113
  export ABSTRACTGATEWAY_USER_AUTH=1
62
114
  export ABSTRACTGATEWAY_ALLOWED_ORIGINS="http://localhost:*,http://127.0.0.1:*"
63
115
  export ABSTRACTGATEWAY_WORKFLOW_SOURCE=bundle
64
116
  export ABSTRACTGATEWAY_DATA_DIR="$PWD/runtime/gateway"
65
-
66
- # Optional: set only to serve your own bundle registry instead of the
67
- # workflows Gateway ships with.
68
- # export ABSTRACTGATEWAY_FLOWS_DIR="$PWD/bundles"
117
+ # export ABSTRACTGATEWAY_FLOWS_DIR="$PWD/bundles" # serve your own bundle registry
69
118
 
70
119
  abstractgateway serve --host 127.0.0.1 --port 8080
71
120
  ```
@@ -74,12 +123,10 @@ Out of the box this serves a ready set of workflows — a verify-gated coding
74
123
  agent, `deep-research`, and `co-scientist` among them. See
75
124
  [shipped workflows](abstractgateway/docs/shipped-workflows.md).
76
125
 
77
- On first local start, Gateway creates `default/admin`, writes the browser-login
78
- token to `runtime/gateway/auth/bootstrap-admin-token`, and prints the token in
79
- the terminal. Use that `admin` user token in the built-in web console at
80
- `http://127.0.0.1:8080/console`, AbstractFlow,
81
- AbstractCode Web, or AbstractObserver. `ABSTRACTGATEWAY_AUTH_TOKEN` remains a
82
- legacy server/operator bearer token; it is not a browser sign-in token.
126
+ The `admin` user token is kept in `<data dir>/auth/bootstrap-admin-token`; use it to sign in to
127
+ AbstractFlow, AbstractCode Web or AbstractObserver, or to the console without a claim link.
128
+ `ABSTRACTGATEWAY_AUTH_TOKEN` remains a legacy server/operator bearer token; it is not a browser
129
+ sign-in token.
83
130
 
84
131
  Monitor runs from a browser, or from a terminal with the gateway console:
85
132
 
@@ -91,8 +138,7 @@ ABSTRACTGATEWAY_AUTH_TOKEN=<token> abstractgateway-console --url http://127.0.0.
91
138
  ```
92
139
 
93
140
  Container images are published for the gateway and the AbstractCore server:
94
- `ghcr.io/lpalbou/abstractgateway:0.2.30` (`0.2.30-gpu` is an experimental NVIDIA
95
- image) and `ghcr.io/lpalbou/abstractcore:2.13.42`.
141
+ `ghcr.io/lpalbou/abstractgateway:0.3.0` and `ghcr.io/lpalbou/abstractcore-server:2.14.0`.
96
142
 
97
143
  For artifact and runtime-resource investigation, see
98
144
  `docs/guide/runtime-artifacts.md`.
@@ -166,7 +212,8 @@ The ecosystem, grouped by layer. Each name links to the package's own README.
166
212
  | [AbstractObserver](abstractobserver/) | Browser UI — monitor, control, and schedule gateway runs | `npx @abstractframework/observer` |
167
213
  | [AbstractEntity](abstractentity/) | Summoned-entity manager — roster, blueprint (cognition map + editing), chat drawer, live replay | `npx @abstractframework/entity` |
168
214
  | [AbstractContinuum](abstractcontinuum/) | Continuous iterative development and deployment console | `npx @abstractframework/continuum` |
169
- | **Gateway consoles** | Operator consoles for a running gateway: web at `/console`, terminal via `abstractgateway-console` | built into `abstractgateway`; `cargo install abstractgateway-console` |
215
+ | **Gateway consoles** | Operator consoles for a running gateway: web at `/console` (first-run guide, Models, Engines, providers, users), terminal via `abstractgateway-console` | built into `abstractgateway`; `cargo install abstractgateway-console` |
216
+ | **Core consoles** | Consoles for AbstractCore: web at `/console` of `abstractcore serve`, terminal via `abstractcore-console` (config, Models, Engines) | built into `abstractcore`; `cargo install abstractcore-console` |
170
217
  | **Code Web UI** | Browser client of AbstractCode (gateway-backed) | `npx @abstractframework/code` |
171
218
  | **Flow Editor** | Visual workflow authoring in the browser | `npx @abstractframework/flow` |
172
219
 
@@ -210,7 +257,7 @@ pip install "abstractframework[gpu]"
210
257
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
211
258
  | GPU | `pip install "abstractframework[gpu]"` | Linux / Windows with a CUDA or ROCm GPU | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
212
259
 
213
- ### Release matrix (abstractframework 0.1.12)
260
+ ### Release matrix (abstractframework 0.2.1)
214
261
 
215
262
  `abstractframework` pins every Python package with `==`, so one version of the
216
263
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -219,14 +266,14 @@ and tested together.
219
266
 
220
267
  | Registry | Package | Version |
221
268
  |---|---|---|
222
- | PyPI | `abstractgateway` | 0.2.30 |
269
+ | PyPI | `abstractgateway` | 0.3.0 |
223
270
  | PyPI | `abstractassistant` | 0.5.0 |
224
- | PyPI | `abstractcore` | 2.13.42 |
225
- | PyPI | `AbstractRuntime` | 0.4.32 |
271
+ | PyPI | `abstractcore` | 2.14.0 |
272
+ | PyPI | `AbstractRuntime` | 0.4.33 |
226
273
  | PyPI | `abstractagent` | 0.3.13 |
227
274
  | PyPI | `AbstractMemory` | 0.3.0 |
228
275
  | PyPI | `abstractsemantics` | 0.0.5 |
229
- | PyPI | `abstractvoice` | 0.11.3 |
276
+ | PyPI | `abstractvoice` | 0.11.4 |
230
277
  | PyPI | `abstractvision` | 0.3.29 |
231
278
  | PyPI | `abstractmusic` | 0.1.15 |
232
279
  | npm | `@abstractframework/flow` | 0.3.20 |
@@ -235,10 +282,11 @@ and tested together.
235
282
  | npm | `@abstractframework/continuum` | 0.2.0 |
236
283
  | npm | `@abstractframework/entity` | 0.1.0 |
237
284
  | crates.io | `abstractcode` | 0.5.1 |
238
- | crates.io | `abstractgateway-console` | 0.6.0 |
285
+ | crates.io | `abstractgateway-console` | 0.7.0 |
286
+ | crates.io | `abstractcore-console` | 0.2.0 |
239
287
  | crates.io | `abstracttui` | 0.6.0 |
240
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.2.30 (`0.2.30-gpu` experimental) |
241
- | GHCR | `ghcr.io/lpalbou/abstractcore` | 2.13.42 |
288
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.3.0 (`gpu-latest` / `<version>-gpu` experimental) |
289
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.14.0 |
242
290
 
243
291
  Optional add-ons that are not part of any profile install separately:
244
292
  `pip install abstract3d` (0.3.1), `pip install abstractcamera` (0.2.0) and
@@ -261,6 +309,7 @@ See [docs/install.md](docs/install.md) for the full install chooser, `uv`/venv g
261
309
  | [docs/glossary.md](docs/glossary.md) | Shared terminology (run, ledger, effect, wait, bundle, …) |
262
310
  | [docs/faq.md](docs/faq.md) | Common questions, comparisons, troubleshooting |
263
311
  | [docs/api.md](docs/api.md) | Meta-package API (pins, helpers, re-exports) |
312
+ | [docs/workspace-scripts.md](docs/workspace-scripts.md) | Working from source: package tiers, build, status, pull/commit/push scripts |
264
313
 
265
314
  ---
266
315
 
@@ -270,14 +319,21 @@ Clone all sibling repos and build everything in editable mode:
270
319
 
271
320
  ```bash
272
321
  ./scripts/clone.sh # clone every sibling repository next to this one
273
- source ./scripts/build.sh # editable installs into .venv (use `source` to stay in the venv)
322
+ ./scripts/deps.sh # dependency tiers: what builds and installs first, and why
323
+ source ./scripts/build.sh # Python (editable, into .venv), npm and Rust builds, tier by tier
274
324
  ```
275
325
 
276
- Then configure:
326
+ Keep the whole workspace in sync with `./scripts/status.sh` (git overview per tier; `--registry`
327
+ compares local versions with PyPI, npm and crates.io), `./scripts/pull.sh`, `./scripts/commit.sh`
328
+ and `./scripts/push.sh` (a dry run until you add `--yes`). See
329
+ [docs/workspace-scripts.md](docs/workspace-scripts.md) for every script and option.
330
+
331
+ Then configure providers and models in a console (`abstractcore serve` or
332
+ `abstractgateway serve`, then open the printed link), or from the terminal:
277
333
 
278
334
  ```bash
279
- abstractcore --config
280
- abstractcore --install
335
+ abstractcore --config # interactive configuration wizard
336
+ abstractcore --install # check every subsystem and download missing models and dependencies
281
337
  ```
282
338
 
283
339
  ---
@@ -10,18 +10,18 @@ Most implementation functionality still lives in component projects.
10
10
 
11
11
  from __future__ import annotations
12
12
 
13
- __version__ = "0.1.12"
13
+ __version__ = "0.2.1"
14
14
  __author__ = "Laurent-Philippe Albou"
15
15
  __license__ = "MIT"
16
16
 
17
17
  RELEASE_VERSIONS: dict[str, str] = {
18
- "abstractcore": "2.13.42",
19
- "abstractruntime": "0.4.32",
18
+ "abstractcore": "2.14.0",
19
+ "abstractruntime": "0.4.33",
20
20
  "abstractagent": "0.3.13",
21
- "abstractgateway": "0.2.30",
21
+ "abstractgateway": "0.3.0",
22
22
  "abstractmemory": "0.3.0",
23
23
  "abstractsemantics": "0.0.5",
24
- "abstractvoice": "0.11.3",
24
+ "abstractvoice": "0.11.4",
25
25
  "abstractvision": "0.3.29",
26
26
  "abstractmusic": "0.1.15",
27
27
  "abstractassistant": "0.5.0",
@@ -48,6 +48,15 @@ NPM_RELEASE_VERSIONS: dict[str, str] = {
48
48
  "@abstractframework/entity": "0.1.0",
49
49
  }
50
50
 
51
+ # Terminal tools published on crates.io alongside this release (installed with `cargo install`,
52
+ # or by the bootstrap scripts' --with-console / --with-code-cli flags).
53
+ CRATE_RELEASE_VERSIONS: dict[str, str] = {
54
+ "abstractgateway-console": "0.7.0",
55
+ "abstractcore-console": "0.2.0",
56
+ "abstractcode": "0.5.1",
57
+ "abstracttui": "0.6.0",
58
+ }
59
+
51
60
  CORE_DEFAULT_EXTRAS = [
52
61
  "remote",
53
62
  "tools",
@@ -90,6 +99,7 @@ def get_release_profile() -> dict[str, object]:
90
99
  "packages": RELEASE_VERSIONS.copy(),
91
100
  "distributions": PACKAGE_DISTRIBUTIONS.copy(),
92
101
  "npm_packages": NPM_RELEASE_VERSIONS.copy(),
102
+ "crates": CRATE_RELEASE_VERSIONS.copy(),
93
103
  "core_extras": list(CORE_DEFAULT_EXTRAS),
94
104
  "install_profiles": {
95
105
  "light": "pip install abstractframework",