abstractframework 0.6.1__tar.gz → 0.6.3__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 (194) hide show
  1. {abstractframework-0.6.1 → abstractframework-0.6.3}/CHANGELOG.md +248 -0
  2. {abstractframework-0.6.1/abstractframework.egg-info → abstractframework-0.6.3}/PKG-INFO +55 -36
  3. {abstractframework-0.6.1 → abstractframework-0.6.3}/README.md +46 -28
  4. {abstractframework-0.6.1 → abstractframework-0.6.3}/abstractframework/__init__.py +15 -18
  5. {abstractframework-0.6.1 → abstractframework-0.6.3/abstractframework.egg-info}/PKG-INFO +55 -36
  6. {abstractframework-0.6.1 → abstractframework-0.6.3}/abstractframework.egg-info/SOURCES.txt +2 -0
  7. {abstractframework-0.6.1 → abstractframework-0.6.3}/abstractframework.egg-info/requires.txt +8 -7
  8. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/api.md +11 -7
  9. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/automations.md +1 -1
  10. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/faq.md +33 -4
  11. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/getting-started.md +43 -28
  12. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/guide/apple-local-gateway-flow.md +5 -10
  13. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/guide/scheduled-workflows.md +6 -2
  14. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/guide/summoned-entities.md +4 -4
  15. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/guide/telegram-integration.md +3 -2
  16. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/install.md +349 -33
  17. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/installers/implementation-plan.md +1 -1
  18. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/installers/strategy.md +3 -2
  19. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/installers/user-journeys.md +9 -4
  20. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/scenarios/gateway-first-local-dev.md +3 -5
  21. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/scenarios/telegram-permanent-contact.md +3 -2
  22. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/workspace-scripts.md +1 -1
  23. {abstractframework-0.6.1 → abstractframework-0.6.3}/llms-full.txt +541 -150
  24. {abstractframework-0.6.1 → abstractframework-0.6.3}/llms.txt +5 -4
  25. {abstractframework-0.6.1 → abstractframework-0.6.3}/pyproject.toml +9 -8
  26. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/build.sh +11 -3
  27. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/install.sh +641 -73
  28. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/start-local.sh +2 -2
  29. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/tests/test_install_user_path.sh +230 -6
  30. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/tests/test_inventory.sh +16 -2
  31. {abstractframework-0.6.1 → abstractframework-0.6.3}/tests/test_install_profiles.py +222 -12
  32. abstractframework-0.6.3/tests/test_install_ps1_gpu_stack.py +432 -0
  33. abstractframework-0.6.3/tests/test_install_sh_gpu_stack.py +306 -0
  34. {abstractframework-0.6.1 → abstractframework-0.6.3}/LICENSE +0 -0
  35. {abstractframework-0.6.1 → abstractframework-0.6.3}/MANIFEST.in +0 -0
  36. {abstractframework-0.6.1 → abstractframework-0.6.3}/abstractframework/__main__.py +0 -0
  37. {abstractframework-0.6.1 → abstractframework-0.6.3}/abstractframework/cli.py +0 -0
  38. {abstractframework-0.6.1 → abstractframework-0.6.3}/abstractframework/install_manifest.py +0 -0
  39. {abstractframework-0.6.1 → abstractframework-0.6.3}/abstractframework/py.typed +0 -0
  40. {abstractframework-0.6.1 → abstractframework-0.6.3}/abstractframework.egg-info/dependency_links.txt +0 -0
  41. {abstractframework-0.6.1 → abstractframework-0.6.3}/abstractframework.egg-info/entry_points.txt +0 -0
  42. {abstractframework-0.6.1 → abstractframework-0.6.3}/abstractframework.egg-info/top_level.txt +0 -0
  43. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/README.md +0 -0
  44. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0001-layered-architecture.md +0 -0
  45. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0002-effect-system-design.md +0 -0
  46. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0003-tool-system-architecture.md +0 -0
  47. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0004-observability-strategy.md +0 -0
  48. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0005-memory-architecture.md +0 -0
  49. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0006-durable-tool-execution.md +0 -0
  50. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0007-active-context-and-memory-provenance.md +0 -0
  51. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0008-token-terminology.md +0 -0
  52. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0009-connected-memory-recall-and-provenance.md +0 -0
  53. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0010-runtime-owned-node-traces.md +0 -0
  54. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0011-ledger-subscriptions-and-event-bridge.md +0 -0
  55. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0012-portable-workflowartifact.md +0 -0
  56. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0013-durable-run-controls-pause-resume-cancel.md +0 -0
  57. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0014-runtime-authority-timeouts.md +0 -0
  58. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0015-execution-targets-and-remote-tool-workers.md +0 -0
  59. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0016-tool-calling-pipeline-and-responsibility-boundaries.md +0 -0
  60. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0017-host-ui-events-and-durable-prompts.md +0 -0
  61. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0018-durable-run-gateway-and-remote-host-control-plane.md +0 -0
  62. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0019-testing-strategy-and-levels.md +0 -0
  63. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0020-agent-host-pool-and-orchestrator-placement.md +0 -0
  64. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0021-deployment-topologies-and-supported-scenarios.md +0 -0
  65. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0022-orchestrator-host-and-runtime-daemonization.md +0 -0
  66. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0023-file-attachment-path-resolution-and-authorization.md +0 -0
  67. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0024-attachment-placeholders-and-compaction-invariants.md +0 -0
  68. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0025-kg-entity-normalization-and-dedup.md +0 -0
  69. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0026-truncation-policy-and-contract.md +0 -0
  70. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0027-timeout-policy-and-contract.md +0 -0
  71. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0028-capabilities-plugins-and-library-framework-modes.md +0 -0
  72. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0029-permissive-dependency-and-licensing-policy.md +0 -0
  73. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0030-security-test-fixtures-and-isolation.md +0 -0
  74. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0031-workflow-llm-routing-overrides-provider-model-and-base-url.md +0 -0
  75. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0032-package-dependency-boundaries-and-gateway-first-apps.md +0 -0
  76. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0033-install-profiles-config-entrypoints-and-server-boundaries.md +0 -0
  77. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0034-framework-release-sequence-and-gates.md +0 -0
  78. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0035-capability-routing-defaults.md +0 -0
  79. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0036-artifact-descriptor-contract.md +0 -0
  80. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0037-hosted-file-source-contract-and-workspacepath-authority.md +0 -0
  81. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/0038-script-bootstrap-and-gateway-console-install.md +0 -0
  82. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/README.md +0 -0
  83. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/memory-recall-levels.md +0 -0
  84. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/reorg/001_music_as_capability_plugin_via_acestep_api.md +0 -0
  85. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/reorg/002_abstractmusic_inprocess_local_generation.md +0 -0
  86. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/reorg/003_abstractmusic_acestep_v15_backend_source_strategy.md +0 -0
  87. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/reorg/004_smartnote_thin_client_architecture.md +0 -0
  88. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/reorg/005_smartnote_artifact_first_cards.md +0 -0
  89. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/reorg/2026-02-21_gateway-first-assistant.md +0 -0
  90. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/reorg/2026-02-21_installer_manager_strategy.md +0 -0
  91. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/adr/reorg/2026-02-21_macos_installer_manager.md +0 -0
  92. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/agent-sessions.md +0 -0
  93. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/architecture.md +0 -0
  94. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/claude/README.md +0 -0
  95. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/claude/abstractframework-fit.md +0 -0
  96. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/claude/claude-skills-overview.md +0 -0
  97. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/claude/claude-skills-sources.md +0 -0
  98. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/claude/claude-skills-top-20.md +0 -0
  99. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/comparisons/README.md +0 -0
  100. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/configuration.md +0 -0
  101. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/glossary.md +0 -0
  102. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/guide/LANDING.md +0 -0
  103. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/guide/README.md +0 -0
  104. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/guide/agent-skills.md +0 -0
  105. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/guide/agent-vs-llm.md +0 -0
  106. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/guide/agora-workflow-agent.md +0 -0
  107. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/guide/capability-plugins.md +0 -0
  108. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/guide/capability-routing-defaults.md +0 -0
  109. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/guide/deployment-iphone.md +0 -0
  110. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/guide/deployment-topologies.md +0 -0
  111. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/guide/deployment-web.md +0 -0
  112. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/guide/email-integration.md +0 -0
  113. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/guide/event-inbox-agent.md +0 -0
  114. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/guide/flow-and-kg-memory.md +0 -0
  115. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/guide/gateway-security.md +0 -0
  116. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/guide/headless-swarm.md +0 -0
  117. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/guide/process-manager-env-vars.md +0 -0
  118. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/guide/prompt-caching.md +0 -0
  119. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/guide/runtime-artifacts.md +0 -0
  120. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/guide/runtime-scope.md +0 -0
  121. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/guide/workflow-bundles.md +0 -0
  122. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/installers/README.md +0 -0
  123. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/installers/components.md +0 -0
  124. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/installers/operations-and-support.md +0 -0
  125. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/installers/release-and-manifest.md +0 -0
  126. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/installers/security-and-os-blocks.md +0 -0
  127. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/prompts/agora-collaboration.md +0 -0
  128. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/scenarios/README.md +0 -0
  129. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/scenarios/email-inbox-agent.md +0 -0
  130. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/scenarios/offline-coding-assistant.md +0 -0
  131. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/scenarios/phone-thin-client.md +0 -0
  132. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/scenarios/specialized-agent-flow.md +0 -0
  133. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/scenarios/workflow-bundle-lifecycle.md +0 -0
  134. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/skills/README.md +0 -0
  135. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/skills/abstractframework-agent-skills-fit.md +0 -0
  136. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/skills/abstractframework-architecture-deep-dive.md +0 -0
  137. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/skills/agent-skills-ecosystem-scan.md +0 -0
  138. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/skills/agent-skills-ecosystem-sources.md +0 -0
  139. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/skills/claude-agent-skills-overview.md +0 -0
  140. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/skills/claude-agent-skills-sources.md +0 -0
  141. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/skills/claude-agent-skills-top-20.md +0 -0
  142. {abstractframework-0.6.1 → abstractframework-0.6.3}/docs/troubleshooting.md +0 -0
  143. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/af-local.sh +0 -0
  144. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/af.sh +0 -0
  145. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/agora_react_flow_smoke.py +0 -0
  146. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/assistant-local.sh +0 -0
  147. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/assistant.sh +0 -0
  148. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/cache_probe_local_backends.py +0 -0
  149. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/cache_steer_repl.py +0 -0
  150. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/check_identity_sync.py +0 -0
  151. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/clone.sh +0 -0
  152. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/code-local.sh +0 -0
  153. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/code.sh +0 -0
  154. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/commit.sh +0 -0
  155. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/console-local.sh +0 -0
  156. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/console.sh +0 -0
  157. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/core_operator_drive.py +0 -0
  158. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/deps.sh +0 -0
  159. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/entity-local.sh +0 -0
  160. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/entity.sh +0 -0
  161. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/event_inbox_flow_smoke.py +0 -0
  162. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/flow-local.sh +0 -0
  163. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/flow.sh +0 -0
  164. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/gateway-flow-local.sh +0 -0
  165. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/gateway-flow.sh +0 -0
  166. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/gateway-local.sh +0 -0
  167. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/gateway.sh +0 -0
  168. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/gen_llms_full.py +0 -0
  169. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/headless_fleet_bridge.py +0 -0
  170. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/headless_fleet_demo.py +0 -0
  171. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/headless_steer_repl.py +0 -0
  172. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/lib/af_inventory.py +0 -0
  173. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/lib/af_stack.sh +0 -0
  174. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/lib/af_supervisor.sh +0 -0
  175. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/lib/apps_common.sh +0 -0
  176. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/lib/build_macos_installer.sh +0 -0
  177. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/lib/gateway_user_tokens.py +0 -0
  178. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/lib/repo_groups.sh +0 -0
  179. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/meet_castor.sh +0 -0
  180. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/observer-local.sh +0 -0
  181. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/observer.sh +0 -0
  182. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/plan_walkthrough.py +0 -0
  183. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/pull.sh +0 -0
  184. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/push.sh +0 -0
  185. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/spawn_demo_agent.sh +0 -0
  186. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/start.sh +0 -0
  187. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/status.sh +0 -0
  188. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/steer_repl.py +0 -0
  189. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/tests/test_af_supervisor.sh +0 -0
  190. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/tests/test_repo_scripts.sh +0 -0
  191. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/uninstall.sh +0 -0
  192. {abstractframework-0.6.1 → abstractframework-0.6.3}/scripts/visit_resume_cache_probe.py +0 -0
  193. {abstractframework-0.6.1 → abstractframework-0.6.3}/setup.cfg +0 -0
  194. {abstractframework-0.6.1 → abstractframework-0.6.3}/tests/test_llms_full.py +0 -0
@@ -4,6 +4,254 @@ All notable changes to AbstractFramework will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.6.3] - 2026-09-29
8
+
9
+ The `gpu` setting on NVIDIA machines, speech-to-text in the fresh setup, and loaded image models
10
+ that are reused. Pins: AbstractGateway 0.7.4, AbstractCore 2.19.2, AbstractRuntime 0.7.3,
11
+ AbstractVoice 0.13.2, AbstractVision 0.3.33 and Abstract3D 0.3.2; the gateway's terminal console is
12
+ `abstractgateway-console` 0.11.2, and the browser client AbstractCode web is 0.6.2. Every other
13
+ version, and the other terminal clients, are unchanged from 0.6.2.
14
+
15
+ ### Added
16
+
17
+ - **The `gpu` setting on Linux + NVIDIA, rehearsed on real hardware with this release.** On
18
+ Ubuntu 26.04 with a Quadro RTX 5000 (16 GB, driver 595.91.07, CUDA 13.2; 4 vCPU, 26 GB RAM),
19
+ `install.sh` installed this release's candidate versions from PyPI in 3 min 1 s (AbstractGateway
20
+ 0.7.3, AbstractCore 2.19.1, AbstractRuntime 0.7.2, AbstractVoice 0.13.1 and AbstractVision 0.3.32;
21
+ the patch releases listed under Fixed came after this run). The previous
22
+ install had been removed with `uninstall.sh --yes --purge` and uv's download cache cleared; model
23
+ weights, LM Studio and a Rust toolchain were already on the machine. The Python packages took 39 s
24
+ (about 5.8 GB of wheels), llama.cpp's `cu130` build 18 s (726 MB), compiling the two terminal
25
+ clients with cargo 110 s, and the start and health check 5 s. The install added 14.2 GB on disk.
26
+ Its checks reported PyTorch 2.11.0 on CUDA 13.0, llama.cpp 0.3.35 (`cu130`) with GPU offload and
27
+ Whisper on the GPU. Run again, it reported "already up to date" in 10 s. With **Use recommended
28
+ defaults** and the model weights already downloaded:
29
+ - text with LM Studio (`qwen/qwen3.5-9b`, Q4_K_M, 6.5 GB on the GPU): the first gateway request
30
+ took 23 s including loading the model, the next 12 s for a 318-token answer (308 of them
31
+ reasoning); from AbstractCore in Python about 41 tokens/s;
32
+ - text-to-speech with Supertonic, on the processor: 1.1 to 1.4 s per sentence (3.2 s for the
33
+ first gateway request);
34
+ - image generation with FLUX.2 [klein] 4B through Diffusers, with model CPU offload (7.8 GB
35
+ peak): 41 s to load the model, then 15 to 16 s per 1024x1024 image. Each gateway image request
36
+ loads the model again, so one request takes 54 to 59 s;
37
+ - speech-to-text did not work as installed; see Known issues below.
38
+
39
+ vLLM 0.22.1 installs with the gpu setting but was not validated: it needs a C compiler
40
+ (`build-essential`) the first time it starts a model, and on GPUs older than compute capability
41
+ 8.0 the `--attention-backend TRITON_ATTN` option. See
42
+ [GPU on Linux (NVIDIA)](docs/install.md#gpu-on-linux-nvidia).
43
+ - **`install.sh` on Linux + NVIDIA** installs llama.cpp's CUDA build that matches PyTorch's CUDA
44
+ (PyPI's PyTorch for Linux is a CUDA 13 build, which needs NVIDIA driver 580 or newer; with an
45
+ older driver PyTorch and llama.cpp run on the processor) and keeps it only when it
46
+ loads and offloads to the GPU; otherwise the CPU build goes back and the summary says why. At the
47
+ end it checks that PyTorch sees the GPU and which device Whisper uses (`PyTorch:`, `GGUF:` and
48
+ `Voice:` summary lines), and warns when no C compiler is found for vLLM.
49
+ - **`install.ps1` on Windows + NVIDIA** picks the GPU stack from `nvidia-smi` (CUDA 13 with driver
50
+ 580 or newer and compute capability 7.5 or newer, CUDA 12 with driver 525 or newer, otherwise the
51
+ CPU), installs PyTorch's CUDA build and llama.cpp's matching prebuilt build (CUDA, then Vulkan,
52
+ then CPU), and ends with GPU checks that replace any part that does not work with one that does.
53
+ The Windows gpu setting is implemented and tested with simulated drivers and wheel-only
54
+ resolves, but it has **not yet been validated on real NVIDIA hardware**. See
55
+ [GPU on Windows (NVIDIA)](docs/install.md#gpu-on-windows-nvidia).
56
+ - **Live installer progress.** Both installers show uv's output as it comes, with a
57
+ `still working (… elapsed; last: …)` line after 15 seconds of silence, so a multi-GB download no
58
+ longer looks frozen. `install.ps1` announces the big downloads before they start.
59
+
60
+ ### Changed
61
+
62
+ - **Only the three install settings in hints.** Every install hint across the framework names
63
+ light (`pip install -U abstractcore`), `abstractcore[apple]` or `abstractcore[gpu]`, or says that
64
+ a capability is not available on this machine, never a bare package or a plugin's own extra
65
+ (AbstractCore 2.19.1, AbstractGateway 0.7.3, AbstractVoice 0.13.1, AbstractRuntime 0.7.2,
66
+ Abstract3D 0.3.2).
67
+ - **Smaller gpu setting.** The gpu setting no longer installs MLX-Gen (AbstractVision 0.3.32):
68
+ about 2.1 GB less on Linux, and it installs on Linux distributions with an older glibc.
69
+ - **`abstractcore[gpu]` installs on Windows with wheels only** (vLLM is Linux only;
70
+ stable-diffusion.cpp and llama.cpp are left to the installer's prebuilt builds on Windows).
71
+ - **Recommendations on NVIDIA machines.** **Use recommended defaults** picks FLUX.2 [klein] 4B
72
+ through Diffusers for image generation on an NVIDIA GPU (it fits a 16 GB card), and the LM Studio
73
+ text download is `qwen/qwen3.5-9b@q4_k_m`, which LM Studio offers on Linux and Windows.
74
+ - **AbstractRuntime depends on AbstractCore's three settings** (`abstractcore`, `[apple]`, `[gpu]`),
75
+ and `openai` 2.x is allowed across the stack, so the gpu setting resolves a current vLLM.
76
+
77
+ ### Fixed
78
+
79
+ - **The approval gate shows in every client.** When the agent's tool call waits for approval, a
80
+ browser or phone that opens the same conversation later now shows the same Allow / Deny card and
81
+ "Approval needed" as the client that started the turn, instead of "Running a tool" and a Steer box
82
+ (AbstractCode web 0.6.2 with `@abstractframework/panel-chat` 0.1.20; two-browser end-to-end test).
83
+ - **Speech-to-text without an OpenAI key.** Transcription runs on the configured `input.voice`
84
+ route (for example local Whisper) and no longer needs TTS credentials (AbstractCore 2.19.1,
85
+ AbstractVoice 0.13.1).
86
+ - **Speech-to-text in the fresh setup.** The fresh-install defaults and **Use recommended defaults**
87
+ set speech input (`input.voice`: faster-whisper, model `base`) with text, voice and images, so a
88
+ new install transcribes locally without an OpenAI key (AbstractCore 2.19.2, AbstractGateway
89
+ 0.7.4). An install that earlier release defaults seeded gains the route once, when it is empty; a
90
+ route you set yourself is kept. PyAV is held below 19, which faster-whisper 1.2.1 needs to read
91
+ audio files (AbstractVoice 0.13.2).
92
+ - **Use recommended defaults saves every route it reports**, including on a fresh install right
93
+ after the console read the routes (AbstractCore 2.19.2).
94
+ - **Whisper on NVIDIA GPUs.** faster-whisper uses CUDA only when CUDA 12 cuBLAS loads (installed
95
+ with the gpu setting on Linux and Windows), and otherwise runs on the CPU with a warning.
96
+ - **llama.cpp on CUDA** loads without importing PyTorch first on Linux, and a GGUF model too large
97
+ for the GPU at its full context tries smaller contexts on the GPU before falling back to the CPU.
98
+ - **Image generation on smaller GPUs.** A Diffusers pipeline that does not fit the GPU's free
99
+ memory loads with model CPU offload instead of failing with CUDA out of memory. When even the
100
+ largest component does not fit (for example next to a loaded text model), it falls back to
101
+ sequential CPU offload, which uses much less GPU memory and is slower per step (AbstractVision
102
+ 0.3.33). On the Quadro RTX 5000, FLUX.2 [klein] 4B at 768x768 and 4 steps peaked near 1.4 GB and
103
+ took 10.9 to 15.6 s, against 13.4 to 18.5 s with model CPU offload; at about 2.3 s per step
104
+ against 1.5 s, models that run many steps are slower with it.
105
+ - **A loaded image model is reused.** After **Load** in the console (or `POST /models/load`), image
106
+ and video requests for that model run on the loaded pipeline instead of loading the model again
107
+ for each request (AbstractRuntime 0.7.3, AbstractGateway 0.7.4). On the rehearsal machine,
108
+ FLUX.2 [klein] 4B images through the gateway took 17 to 19 s each instead of 54 to 59 s. A model
109
+ that was not loaded still runs each request in its own process.
110
+ - **Unloading an image model frees its memory.** On CUDA, FLUX.2 [klein] 4B with model CPU offload
111
+ left 16.3 GB held after an unload; it now leaves 0.86 GB (AbstractVision 0.3.33).
112
+
113
+ ### Security
114
+
115
+ - **Email connections verify TLS.** AbstractCore's mail tools (`list_emails`, `read_email`,
116
+ `send_email`) and the gateway's email bridge check the server certificate and host name, and refuse
117
+ before login when the check fails; a server signed by a private CA is trusted with the new
118
+ `ca_file` field of an account (AbstractCore 2.19.2, AbstractGateway 0.7.4).
119
+ - **Automations no longer email anyone the model chooses.** With the default automatic tool
120
+ approval, message-sending tools are no longer pre-approved: a `send_email` to your registered
121
+ email runs unattended, any other recipient waits for your approval (AbstractRuntime 0.7.3,
122
+ AbstractGateway 0.7.4).
123
+ - A `password_env_var` / `imap_password_env_var` that is not an environment variable name is refused
124
+ instead of being read as the password (AbstractCore 2.19.2, AbstractGateway 0.7.4).
125
+
126
+ ### Found in the rehearsal
127
+
128
+ Found in the rehearsal on the Quadro RTX 5000 described above, which ran the candidate versions. The
129
+ Fixed entries above address each one.
130
+
131
+ - **Speech-to-text failed on a fresh gpu install**, for two reasons:
132
+ - **Use recommended defaults** did not set the speech input route (`input.voice`). With no route,
133
+ transcription used OpenAI and failed with "OpenAI audio requires OPENAI_API_KEY".
134
+ - PyAV 19.0.0, released on 2026-09-29, removed an option that faster-whisper 1.2.1 uses to read
135
+ audio files. Every transcription through the gateway then failed with `open() got an unexpected
136
+ keyword argument 'metadata_errors'`.
137
+
138
+ With the route set to faster-whisper `base` by hand and PyAV 18, faster-whisper transcribed on the
139
+ GPU with no OpenAI key: 1.0 to 2.3 s per gateway request, and 0.3 GB of GPU memory.
140
+ - **An image next to a loaded text model ran out of GPU memory on a 16 GB card.** LM Studio's
141
+ `qwen/qwen3.5-9b` keeps 6.5 GB on the GPU while it is loaded. FLUX.2 [klein] needed 7.8 GB even
142
+ with model CPU offload, so the image request failed with CUDA out of memory after three attempts
143
+ (about 2.5 minutes). With the text model unloaded (`lms unload --all`, or the console's model
144
+ list), the same request worked. In this case AbstractVision 0.3.33 falls back to sequential CPU
145
+ offload (see Fixed above).
146
+ - **Use recommended defaults could skip the image route on a fresh install.** On an NVIDIA machine,
147
+ if the button was used within a few seconds of the console reading the routes, it could report the
148
+ image route as already set without saving it. Using it again saved it.
149
+
150
+ ## [0.6.2] - 2026-09-29
151
+
152
+ One line installs, upgrades and repairs AbstractFramework, and **Update** in the consoles and the
153
+ menu-bar icon runs that same line. Pins: AbstractGateway 0.7.2, AbstractCore 2.19.0,
154
+ AbstractVision 0.3.31, Abstract3D 0.3.1 (new in the matrix: AbstractCore now installs it) and the
155
+ terminal consoles `abstractgateway-console` 0.11.1 and
156
+ `abstractcore-console` 0.4.1; every other version is unchanged from 0.6.1.
157
+
158
+ ### Changed
159
+
160
+ - **One line installs, upgrades and repairs.** Re-running the install line (or double-clicking
161
+ **Install AbstractFramework.command** again) finds the existing install and says what it does:
162
+ `AbstractFramework <yours> found: upgrading to AbstractFramework <latest>` or `already up to
163
+ date` for installs from 0.6.2 on, which record their release. An install made by 0.6.1 or
164
+ earlier recorded none, so its first upgrade says `AbstractFramework found (abstractgateway 0.7.1;
165
+ its release was not recorded): upgrading to AbstractFramework 0.6.2`.
166
+ The summary lists what changed, old -> new, under **Changes**, and ends with `Upgraded: …` or
167
+ `Already up to date: …; nothing changed.` `install.ps1` does the same on Windows. See
168
+ [Upgrade](docs/install.md#upgrade).
169
+ - **Update in the web console, the terminal console and the menu-bar icon runs the installer**
170
+ (AbstractGateway 0.7.2). For an install made by the AbstractFramework installer, the check
171
+ compares your AbstractFramework release with the latest one, and **Update** runs the latest
172
+ `install.sh` with `--no-start`. Before you confirm, it shows the installer's address, commit,
173
+ sha256 and the exact command. The result says what moved and offers the restart, says
174
+ **already up to date**, or shows why it didn't finish. On Windows, the check shows the PowerShell
175
+ line to paste. See [From the console or the menu-bar icon](docs/install.md#from-the-console-or-the-menu-bar-icon).
176
+ - **Your install options are remembered.** A re-run keeps the profile, port, start at login, a
177
+ custom `--data-dir`, and `--no-console`, `--no-code-cli`, `--no-core-cli`, `--no-tray` and
178
+ `--full`, and says which ones it kept. `--with-console`, `--with-code-cli`, `--with-core-cli`,
179
+ `--with-tray` and `--no-full` (Windows: `-WithConsole`, `-WithCodeCli`, `-WithCoreCli`,
180
+ `-WithTray`, `-NoFull`) turn one back.
181
+ - **The libraries land on the release's tested versions.** The installer installs AbstractCore,
182
+ AbstractRuntime, AbstractAgent, AbstractSkill, AbstractMemory, AbstractSemantics and the voice,
183
+ vision, music and 3D packages at exactly the versions of the AbstractFramework release, not only at
184
+ the gateway's minimums. `--print-versions` (`-PrintVersions`) lists the release and that matrix.
185
+ `--pin latest` still installs the newest gateway and libraries, and records no release.
186
+ - **The gateway restarts whenever anything changed**, a library alone included: the macOS login
187
+ item through launchd, a running Linux `systemd --user` service with `systemctl --user restart`,
188
+ and a background gateway by starting it again. On Windows the installer stops the gateway before
189
+ it changes any file and starts it again afterwards. AbstractGateway 0.7.2 fixes the macOS
190
+ `5: Input/output error` when the login item is replaced: it waits until launchd has removed the
191
+ previous job and retries. When the login item cannot be registered, the gateway starts in the
192
+ background instead, so an upgrade never leaves it stopped.
193
+ - **Upgrading from 0.6.1 or earlier.** Those installs did not record their options, so the first
194
+ re-run reads them from what is installed (the terminal console, `abstractcode`, the tray extra,
195
+ the AbstractCore commands, a `--full` build, a custom data directory through the gateway
196
+ pointer), says what it found and records it; you can also repeat your options once. The Update
197
+ button of AbstractGateway 0.7.1 and earlier cannot upgrade an installer install: re-run the line
198
+ once. See [Upgrading from 0.6.1 or earlier](docs/install.md#upgrading-from-061-or-earlier).
199
+ - **`--no-start` (`-NoStart`)** upgrades without starting or restarting the gateway and says when a
200
+ restart is due. It keeps this install's port even when a program the installer did not start
201
+ holds it.
202
+ - **One installer at a time.** A second installer for the same data directory (the line re-run
203
+ while a console's Update runs, or the other way round) stops with `another AbstractFramework
204
+ installer is already running` and changes nothing. The lock of an interrupted run is taken over
205
+ by the next one.
206
+ - **Install AbstractFramework.command runs the latest installer** from GitHub, so double-clicking
207
+ it again upgrades. It uses the copy it came with only when GitHub cannot be reached, and says so.
208
+ - **`--pin latest` (`-Pin latest`) upgrades an existing install** with the same profile, voice and
209
+ llama.cpp setup (`uv tool install --upgrade`), and the summary's upgrade lines give the commands
210
+ that work.
211
+ - **AbstractCore has three install settings** (AbstractCore 2.19.0): `pip install abstractcore`
212
+ (light: every remote provider, the built-in tools, media inputs, the server and console, and the
213
+ voice, vision, music and 3D plugins with their remote backends; about 600 MB for AbstractCore
214
+ alone in a fresh Python 3.12 environment), `pip install
215
+ "abstractcore[apple]"` (adds every local engine an Apple silicon Mac runs) and `pip install
216
+ "abstractcore[gpu]"` (adds every local engine an NVIDIA or AMD machine runs). The earlier extra
217
+ names still install as deprecated aliases; see AbstractCore's
218
+ [Installation](https://github.com/lpalbou/abstractcore/blob/main/docs/installation.md#deprecated-aliases).
219
+ `abstract3d` now comes with AbstractCore in every profile, pinned at 0.3.1.
220
+ - **Recommendations for every capability** (AbstractCore 2.19.0).
221
+ `abstractcore models recommendations` shows the recommended model for text, image input, speech
222
+ output, speech input, image, video and music on every kind of machine (`--host`: this one), with
223
+ the engine, the download size, the memory need and whether it fits. On Apple silicon the fit
224
+ estimate follows the measured GPU memory limit (about 75% of unified memory by default). The text
225
+ tiers are unchanged: Qwen3.5 9B below 24 GB (on an 8 GB Mac it reads as tight, with a small context), Qwen3.8 27B
226
+ from 24 GB, Qwen3.8 Flash-Next from 128 GB. A model that runs only with a small context, such as
227
+ Qwen3.8 27B on a 24 GB Mac, says so and prints the `sudo sysctl iogpu.wired_limit_mb=…` command
228
+ that gives it more (20480 on 24 GB, 114688 for Flash-Next on 128 GB); nothing runs it for you.
229
+ The recommended image model is memory-gated: on an 8 GB Mac the gateway's first-run guide shows
230
+ it as not available here, with the reason, and a saved image or video route that does not fit is
231
+ flagged. See AbstractCore's
232
+ [Recommended models](https://github.com/lpalbou/abstractcore/blob/main/docs/recommended-models.md).
233
+ - **Faster video by default** (AbstractVision 0.3.31). Each Wan2.2 model has its own
234
+ speed-oriented default size: 832x480 (TI2V-5B: 121 frames at 24 fps; T2V-A14B and I2V-A14B: 81
235
+ frames at 16 fps), and the video is decoded in overlapping tiles, so the decode no longer sets the
236
+ memory peak. Measured on Apple silicon (MLX peaks at 832x480 with tiled decode), TI2V-5B needs
237
+ about 16.3 GiB for text-to-video and 16.6 GiB for image-to-video (about 60 GiB at the previous
238
+ 1280x704 default), so the recommended video route is written on Macs with 32 GB of unified memory
239
+ or more, and a 24 GB Mac is told the GPU memory limit that makes it fit. T2V-A14B and I2V-A14B
240
+ (about 38.3 and 38.4 GiB, measured) fit a 48 GB Mac once its GPU memory limit is raised. Pass `width`, `height`, `num_frames`, `fps` and `steps` for
241
+ another size. The memory figures are AbstractVision/mlx-gen's measurements (the engine keeps the
242
+ text encoder and VAE in memory), not the model's own requirement.
243
+ - **Left and Right switch screens in both terminal consoles** (`abstractgateway-console` 0.11.1,
244
+ `abstractcore-console` 0.4.1): the previous or next screen in browse mode, wrapping at both ends,
245
+ like `Ctrl+P` / `Ctrl+N`. A focused element that uses the arrows keeps them: a text field moves
246
+ its caret, a list or tabs bar changes its selection, a dialog keeps every key, and a focused
247
+ scrolling pane scrolls.
248
+
249
+ ### Documentation
250
+
251
+ - **[Upgrade](docs/install.md#upgrade)**: upgrading everything, the gateway only, from the consoles
252
+ or the menu-bar icon, restarting the gateway, upgrading the apps and checking versions. README and
253
+ Getting started lead with an **Install** section: the Mac package and the one-line commands.
254
+
7
255
  ## [0.6.1] - 2026-09-28
8
256
 
9
257
  Every terminal command lands on your PATH, AbstractCode's terminal client says how to sign in, and
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstractframework
3
- Version: 0.6.1
3
+ Version: 0.6.3
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,22 +23,23 @@ 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.7.1
26
+ Requires-Dist: abstractgateway==0.7.4
27
27
  Requires-Dist: abstractassistant==0.9.1
28
- Requires-Dist: abstractcore==2.18.0
29
- Requires-Dist: AbstractRuntime==0.7.1
28
+ Requires-Dist: abstractcore==2.19.2
29
+ Requires-Dist: AbstractRuntime==0.7.3
30
30
  Requires-Dist: abstractagent==0.3.17
31
31
  Requires-Dist: abstractskill==0.3.0
32
32
  Requires-Dist: AbstractMemory==0.3.0
33
33
  Requires-Dist: abstractsemantics==0.0.5
34
- Requires-Dist: abstractvoice==0.13.0
35
- Requires-Dist: abstractvision==0.3.30
34
+ Requires-Dist: abstractvoice==0.13.2
35
+ Requires-Dist: abstractvision==0.3.33
36
36
  Requires-Dist: abstractmusic==0.1.15
37
+ Requires-Dist: abstract3d==0.3.2
37
38
  Provides-Extra: apple
38
- Requires-Dist: abstractgateway[apple]==0.7.1; extra == "apple"
39
+ Requires-Dist: abstractgateway[apple]==0.7.4; extra == "apple"
39
40
  Requires-Dist: abstractassistant[apple]==0.9.1; platform_system == "Darwin" and extra == "apple"
40
41
  Provides-Extra: gpu
41
- Requires-Dist: abstractgateway[gpu]==0.7.1; extra == "gpu"
42
+ Requires-Dist: abstractgateway[gpu]==0.7.4; extra == "gpu"
42
43
  Requires-Dist: abstractassistant[gpu]==0.9.1; extra == "gpu"
43
44
  Dynamic: license-file
44
45
 
@@ -61,17 +62,7 @@ Think of it as an **agentic OS**: durable runs + replay-first observability + mu
61
62
 
62
63
  ---
63
64
 
64
- ## Quick start
65
-
66
- The installer sets up the gateway in your user account (no admin password, no system Python),
67
- with local voice (Supertonic text-to-speech and Whisper speech-to-text), asks whether to start it
68
- at login (Enter = yes; an unattended install leaves it off and says how to turn it on), starts it
69
- on `127.0.0.1:8080`, and opens its web console in your browser already signed in. A first-run guide
70
- then sets up a local engine (Ollama, LM Studio, MLX, llama.cpp), downloads a model that fits your
71
- machine, and lists the apps; the gateway serves them on its own address at `/apps/<app>/`. The
72
- installer also builds the terminal console, `abstractgateway-console`, which runs the same guide on
73
- a server without a browser and offers itself at the end of an install over SSH
74
- ([Headless or remote machine](docs/install.md#headless-or-remote-machine)).
65
+ ## Install
75
66
 
76
67
  - **Mac, no Terminal:** download and double-click
77
68
  [AbstractFramework-Installer.pkg](https://github.com/lpalbou/AbstractFramework/releases/latest/download/AbstractFramework-Installer.pkg).
@@ -90,7 +81,32 @@ a server without a browser and offers itself at the end of an install over SSH
90
81
  powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.ps1 | iex"
91
82
  ```
92
83
 
93
- Every failure says what to do next; running the installer again repairs or upgrades in place. To
84
+ To upgrade, run the same line again (on a Mac, double-clicking **Install AbstractFramework.command**
85
+ again does the same), or, on macOS and Linux, press **Update** in the web console, the terminal console or the menu-bar
86
+ icon: each runs the same installer, which installs the latest AbstractFramework release, keeps your
87
+ settings, options and data, and lists what changed. Coming from 0.6.1 or earlier, re-run the line
88
+ once: it reads your earlier options from what is installed (or repeat them once), and the Update
89
+ button of gateway 0.7.1 cannot upgrade. Gateway only, apps, and version checks:
90
+ [Upgrade](docs/install.md#upgrade).
91
+
92
+ On Linux or Windows with an NVIDIA GPU (`nvidia-smi` works), the installer picks the `gpu` profile:
93
+ PyTorch and llama.cpp on CUDA, Whisper on the GPU, Diffusers image generation. On Linux it needs
94
+ NVIDIA driver 580 or newer. Its release candidate was rehearsed on a Quadro RTX 5000 on Ubuntu
95
+ 26.04; the measured results, and what the final versions changed, are in GPU on Linux. The Windows gpu install is
96
+ implemented but not yet validated on real NVIDIA hardware. See [GPU on Linux](docs/install.md#gpu-on-linux-nvidia) and
97
+ [GPU on Windows](docs/install.md#gpu-on-windows-nvidia).
98
+
99
+ The installer sets up the gateway in your user account (no admin password, no system Python),
100
+ with local voice (Supertonic text-to-speech and Whisper speech-to-text), asks whether to start it
101
+ at login (Enter = yes; an unattended install leaves it off and says how to turn it on), starts it
102
+ on `127.0.0.1:8080`, and opens its web console in your browser already signed in. A first-run guide
103
+ then sets up a local engine (Ollama, LM Studio, MLX, llama.cpp), downloads a model that fits your
104
+ machine, and lists the apps; the gateway serves them on its own address at `/apps/<app>/`. The
105
+ installer also builds the terminal console, `abstractgateway-console`, which runs the same guide on
106
+ a server without a browser and offers itself at the end of an install over SSH
107
+ ([Headless or remote machine](docs/install.md#headless-or-remote-machine)).
108
+
109
+ Every failure says what to do next; running the installer again repairs the install in place. To
94
110
  remove it, double-click `Uninstall AbstractFramework.command` (in
95
111
  `~/Library/Application Support/AbstractFramework/Installer` after a package install), or run
96
112
  `curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/uninstall.sh | sh`.
@@ -125,7 +141,9 @@ Start here if you need a lightweight LLM library for scripts, notebooks, or exis
125
141
  - Multimodal via capability plugins (Voice, Vision, Music)
126
142
 
127
143
  ```bash
128
- pip install abstractcore
144
+ pip install abstractcore # light: every remote provider (OpenAI, Anthropic, OpenRouter, Ollama, LM Studio, ...)
145
+ pip install "abstractcore[apple]" # + the local engines of an Apple silicon Mac (MLX, voice, image, video, music)
146
+ pip install "abstractcore[gpu]" # + the local engines of an NVIDIA or AMD machine (vLLM, voice, image, video, music)
129
147
  ```
130
148
 
131
149
  ```python
@@ -198,7 +216,7 @@ abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token
198
216
  ```
199
217
 
200
218
  Container images are published for the gateway and the AbstractCore server:
201
- `ghcr.io/lpalbou/abstractgateway:0.7.1` and `ghcr.io/lpalbou/abstractcore-server:2.18.0`.
219
+ `ghcr.io/lpalbou/abstractgateway:0.7.4` and `ghcr.io/lpalbou/abstractcore-server:2.19.2`.
202
220
 
203
221
  For artifact and runtime-resource investigation, see
204
222
  [Runtime artifacts and retrieval](docs/guide/runtime-artifacts.md).
@@ -342,9 +360,9 @@ pip install "abstractframework[gpu]"
342
360
  |---|---|---|---|
343
361
  | Light | `pip install abstractframework` | macOS, Linux, Windows | 3.10–3.13 |
344
362
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
345
- | GPU | `pip install "abstractframework[gpu]"` | Linux / Windows with a CUDA or ROCm GPU | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
363
+ | GPU | `pip install "abstractframework[gpu]"` | Linux with a CUDA or ROCm GPU; on Windows, use the one-line installer (a plain pip install gets PyPI's CPU-only PyTorch and no llama.cpp) | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
346
364
 
347
- ### Release matrix (abstractframework 0.6.1)
365
+ ### Release matrix (abstractframework 0.6.3)
348
366
 
349
367
  `abstractframework` pins every Python package with `==`, so one version of the
350
368
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -353,31 +371,32 @@ and tested together.
353
371
 
354
372
  | Registry | Package | Version |
355
373
  |---|---|---|
356
- | PyPI | `abstractgateway` | 0.7.1 |
374
+ | PyPI | `abstractgateway` | 0.7.4 |
357
375
  | PyPI | `abstractassistant` | 0.9.1 |
358
- | PyPI | `abstractcore` | 2.18.0 |
359
- | PyPI | `AbstractRuntime` | 0.7.1 |
376
+ | PyPI | `abstractcore` | 2.19.2 |
377
+ | PyPI | `AbstractRuntime` | 0.7.3 |
360
378
  | PyPI | `abstractagent` | 0.3.17 |
361
379
  | PyPI | `abstractskill` | 0.3.0 |
362
380
  | PyPI | `AbstractMemory` | 0.3.0 |
363
381
  | PyPI | `abstractsemantics` | 0.0.5 |
364
- | PyPI | `abstractvoice` | 0.13.0 |
365
- | PyPI | `abstractvision` | 0.3.30 |
382
+ | PyPI | `abstractvoice` | 0.13.2 |
383
+ | PyPI | `abstractvision` | 0.3.33 |
366
384
  | PyPI | `abstractmusic` | 0.1.15 |
385
+ | PyPI | `abstract3d` | 0.3.2 |
367
386
  | npm | `@abstractframework/flow` | 0.4.0 |
368
- | npm | `@abstractframework/code` | 0.6.1 |
387
+ | npm | `@abstractframework/code` | 0.6.2 |
369
388
  | npm | `@abstractframework/observer` | 0.2.1 |
370
389
  | npm | `@abstractframework/continuum` | 0.4.0 |
371
390
  | npm | `@abstractframework/entity` | 0.3.0 |
372
391
  | crates.io | `abstractcode` | 0.7.1 |
373
- | crates.io | `abstractgateway-console` | 0.11.0 |
374
- | crates.io | `abstractcore-console` | 0.4.0 |
392
+ | crates.io | `abstractgateway-console` | 0.11.2 |
393
+ | crates.io | `abstractcore-console` | 0.4.1 |
375
394
  | crates.io | `abstracttui` | 0.6.0 |
376
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.7.1 (`gpu-latest` / `<version>-gpu` experimental) |
377
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.18.0 |
395
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.7.4 (`gpu-latest` / `<version>-gpu` experimental) |
396
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.19.2 |
378
397
 
379
- Optional add-ons that are not part of any profile install separately:
380
- `pip install abstract3d` (0.3.1) and `pip install abstractcamera` (0.2.0). `abstractskill` (pinned above)
398
+ `abstract3d` (pinned above) comes with AbstractCore in every profile. The optional add-on that is
399
+ not part of any profile installs separately: `pip install abstractcamera` (0.2.1). `abstractskill` (pinned above)
381
400
  comes with the gateway, which carries its curated skill shelf; install it on its own with
382
401
  `pip install abstractskill`.
383
402
 
@@ -17,17 +17,7 @@ Think of it as an **agentic OS**: durable runs + replay-first observability + mu
17
17
 
18
18
  ---
19
19
 
20
- ## Quick start
21
-
22
- The installer sets up the gateway in your user account (no admin password, no system Python),
23
- with local voice (Supertonic text-to-speech and Whisper speech-to-text), asks whether to start it
24
- at login (Enter = yes; an unattended install leaves it off and says how to turn it on), starts it
25
- on `127.0.0.1:8080`, and opens its web console in your browser already signed in. A first-run guide
26
- then sets up a local engine (Ollama, LM Studio, MLX, llama.cpp), downloads a model that fits your
27
- machine, and lists the apps; the gateway serves them on its own address at `/apps/<app>/`. The
28
- installer also builds the terminal console, `abstractgateway-console`, which runs the same guide on
29
- a server without a browser and offers itself at the end of an install over SSH
30
- ([Headless or remote machine](docs/install.md#headless-or-remote-machine)).
20
+ ## Install
31
21
 
32
22
  - **Mac, no Terminal:** download and double-click
33
23
  [AbstractFramework-Installer.pkg](https://github.com/lpalbou/AbstractFramework/releases/latest/download/AbstractFramework-Installer.pkg).
@@ -46,7 +36,32 @@ a server without a browser and offers itself at the end of an install over SSH
46
36
  powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.ps1 | iex"
47
37
  ```
48
38
 
49
- Every failure says what to do next; running the installer again repairs or upgrades in place. To
39
+ To upgrade, run the same line again (on a Mac, double-clicking **Install AbstractFramework.command**
40
+ again does the same), or, on macOS and Linux, press **Update** in the web console, the terminal console or the menu-bar
41
+ icon: each runs the same installer, which installs the latest AbstractFramework release, keeps your
42
+ settings, options and data, and lists what changed. Coming from 0.6.1 or earlier, re-run the line
43
+ once: it reads your earlier options from what is installed (or repeat them once), and the Update
44
+ button of gateway 0.7.1 cannot upgrade. Gateway only, apps, and version checks:
45
+ [Upgrade](docs/install.md#upgrade).
46
+
47
+ On Linux or Windows with an NVIDIA GPU (`nvidia-smi` works), the installer picks the `gpu` profile:
48
+ PyTorch and llama.cpp on CUDA, Whisper on the GPU, Diffusers image generation. On Linux it needs
49
+ NVIDIA driver 580 or newer. Its release candidate was rehearsed on a Quadro RTX 5000 on Ubuntu
50
+ 26.04; the measured results, and what the final versions changed, are in GPU on Linux. The Windows gpu install is
51
+ implemented but not yet validated on real NVIDIA hardware. See [GPU on Linux](docs/install.md#gpu-on-linux-nvidia) and
52
+ [GPU on Windows](docs/install.md#gpu-on-windows-nvidia).
53
+
54
+ The installer sets up the gateway in your user account (no admin password, no system Python),
55
+ with local voice (Supertonic text-to-speech and Whisper speech-to-text), asks whether to start it
56
+ at login (Enter = yes; an unattended install leaves it off and says how to turn it on), starts it
57
+ on `127.0.0.1:8080`, and opens its web console in your browser already signed in. A first-run guide
58
+ then sets up a local engine (Ollama, LM Studio, MLX, llama.cpp), downloads a model that fits your
59
+ machine, and lists the apps; the gateway serves them on its own address at `/apps/<app>/`. The
60
+ installer also builds the terminal console, `abstractgateway-console`, which runs the same guide on
61
+ a server without a browser and offers itself at the end of an install over SSH
62
+ ([Headless or remote machine](docs/install.md#headless-or-remote-machine)).
63
+
64
+ Every failure says what to do next; running the installer again repairs the install in place. To
50
65
  remove it, double-click `Uninstall AbstractFramework.command` (in
51
66
  `~/Library/Application Support/AbstractFramework/Installer` after a package install), or run
52
67
  `curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/uninstall.sh | sh`.
@@ -81,7 +96,9 @@ Start here if you need a lightweight LLM library for scripts, notebooks, or exis
81
96
  - Multimodal via capability plugins (Voice, Vision, Music)
82
97
 
83
98
  ```bash
84
- pip install abstractcore
99
+ pip install abstractcore # light: every remote provider (OpenAI, Anthropic, OpenRouter, Ollama, LM Studio, ...)
100
+ pip install "abstractcore[apple]" # + the local engines of an Apple silicon Mac (MLX, voice, image, video, music)
101
+ pip install "abstractcore[gpu]" # + the local engines of an NVIDIA or AMD machine (vLLM, voice, image, video, music)
85
102
  ```
86
103
 
87
104
  ```python
@@ -154,7 +171,7 @@ abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token
154
171
  ```
155
172
 
156
173
  Container images are published for the gateway and the AbstractCore server:
157
- `ghcr.io/lpalbou/abstractgateway:0.7.1` and `ghcr.io/lpalbou/abstractcore-server:2.18.0`.
174
+ `ghcr.io/lpalbou/abstractgateway:0.7.4` and `ghcr.io/lpalbou/abstractcore-server:2.19.2`.
158
175
 
159
176
  For artifact and runtime-resource investigation, see
160
177
  [Runtime artifacts and retrieval](docs/guide/runtime-artifacts.md).
@@ -298,9 +315,9 @@ pip install "abstractframework[gpu]"
298
315
  |---|---|---|---|
299
316
  | Light | `pip install abstractframework` | macOS, Linux, Windows | 3.10–3.13 |
300
317
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
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+) |
318
+ | GPU | `pip install "abstractframework[gpu]"` | Linux with a CUDA or ROCm GPU; on Windows, use the one-line installer (a plain pip install gets PyPI's CPU-only PyTorch and no llama.cpp) | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
302
319
 
303
- ### Release matrix (abstractframework 0.6.1)
320
+ ### Release matrix (abstractframework 0.6.3)
304
321
 
305
322
  `abstractframework` pins every Python package with `==`, so one version of the
306
323
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -309,31 +326,32 @@ and tested together.
309
326
 
310
327
  | Registry | Package | Version |
311
328
  |---|---|---|
312
- | PyPI | `abstractgateway` | 0.7.1 |
329
+ | PyPI | `abstractgateway` | 0.7.4 |
313
330
  | PyPI | `abstractassistant` | 0.9.1 |
314
- | PyPI | `abstractcore` | 2.18.0 |
315
- | PyPI | `AbstractRuntime` | 0.7.1 |
331
+ | PyPI | `abstractcore` | 2.19.2 |
332
+ | PyPI | `AbstractRuntime` | 0.7.3 |
316
333
  | PyPI | `abstractagent` | 0.3.17 |
317
334
  | PyPI | `abstractskill` | 0.3.0 |
318
335
  | PyPI | `AbstractMemory` | 0.3.0 |
319
336
  | PyPI | `abstractsemantics` | 0.0.5 |
320
- | PyPI | `abstractvoice` | 0.13.0 |
321
- | PyPI | `abstractvision` | 0.3.30 |
337
+ | PyPI | `abstractvoice` | 0.13.2 |
338
+ | PyPI | `abstractvision` | 0.3.33 |
322
339
  | PyPI | `abstractmusic` | 0.1.15 |
340
+ | PyPI | `abstract3d` | 0.3.2 |
323
341
  | npm | `@abstractframework/flow` | 0.4.0 |
324
- | npm | `@abstractframework/code` | 0.6.1 |
342
+ | npm | `@abstractframework/code` | 0.6.2 |
325
343
  | npm | `@abstractframework/observer` | 0.2.1 |
326
344
  | npm | `@abstractframework/continuum` | 0.4.0 |
327
345
  | npm | `@abstractframework/entity` | 0.3.0 |
328
346
  | crates.io | `abstractcode` | 0.7.1 |
329
- | crates.io | `abstractgateway-console` | 0.11.0 |
330
- | crates.io | `abstractcore-console` | 0.4.0 |
347
+ | crates.io | `abstractgateway-console` | 0.11.2 |
348
+ | crates.io | `abstractcore-console` | 0.4.1 |
331
349
  | crates.io | `abstracttui` | 0.6.0 |
332
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.7.1 (`gpu-latest` / `<version>-gpu` experimental) |
333
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.18.0 |
350
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.7.4 (`gpu-latest` / `<version>-gpu` experimental) |
351
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.19.2 |
334
352
 
335
- Optional add-ons that are not part of any profile install separately:
336
- `pip install abstract3d` (0.3.1) and `pip install abstractcamera` (0.2.0). `abstractskill` (pinned above)
353
+ `abstract3d` (pinned above) comes with AbstractCore in every profile. The optional add-on that is
354
+ not part of any profile installs separately: `pip install abstractcamera` (0.2.1). `abstractskill` (pinned above)
337
355
  comes with the gateway, which carries its curated skill shelf; install it on its own with
338
356
  `pip install abstractskill`.
339
357
 
@@ -10,21 +10,22 @@ Most implementation functionality still lives in component projects.
10
10
 
11
11
  from __future__ import annotations
12
12
 
13
- __version__ = "0.6.1"
13
+ __version__ = "0.6.3"
14
14
  __author__ = "Laurent-Philippe Albou"
15
15
  __license__ = "MIT"
16
16
 
17
17
  RELEASE_VERSIONS: dict[str, str] = {
18
- "abstractcore": "2.18.0",
19
- "abstractruntime": "0.7.1",
18
+ "abstractcore": "2.19.2",
19
+ "abstractruntime": "0.7.3",
20
20
  "abstractagent": "0.3.17",
21
- "abstractgateway": "0.7.1",
21
+ "abstractgateway": "0.7.4",
22
22
  "abstractskill": "0.3.0",
23
23
  "abstractmemory": "0.3.0",
24
24
  "abstractsemantics": "0.0.5",
25
- "abstractvoice": "0.13.0",
26
- "abstractvision": "0.3.30",
25
+ "abstractvoice": "0.13.2",
26
+ "abstractvision": "0.3.33",
27
27
  "abstractmusic": "0.1.15",
28
+ "abstract3d": "0.3.2",
28
29
  "abstractassistant": "0.9.1",
29
30
  }
30
31
 
@@ -39,12 +40,13 @@ PACKAGE_DISTRIBUTIONS: dict[str, str] = {
39
40
  "abstractvoice": "abstractvoice",
40
41
  "abstractvision": "abstractvision",
41
42
  "abstractmusic": "abstractmusic",
43
+ "abstract3d": "abstract3d",
42
44
  "abstractassistant": "abstractassistant",
43
45
  }
44
46
 
45
47
  NPM_RELEASE_VERSIONS: dict[str, str] = {
46
48
  "@abstractframework/flow": "0.4.0",
47
- "@abstractframework/code": "0.6.1",
49
+ "@abstractframework/code": "0.6.2",
48
50
  "@abstractframework/observer": "0.2.1",
49
51
  "@abstractframework/continuum": "0.4.0",
50
52
  "@abstractframework/entity": "0.3.0",
@@ -53,21 +55,16 @@ NPM_RELEASE_VERSIONS: dict[str, str] = {
53
55
  # Terminal tools published on crates.io alongside this release (installed with `cargo install`,
54
56
  # or by the bootstrap scripts: the gateway console and abstractcode by default).
55
57
  CRATE_RELEASE_VERSIONS: dict[str, str] = {
56
- "abstractgateway-console": "0.11.0",
57
- "abstractcore-console": "0.4.0",
58
+ "abstractgateway-console": "0.11.2",
59
+ "abstractcore-console": "0.4.1",
58
60
  "abstractcode": "0.7.1",
59
61
  "abstracttui": "0.6.0",
60
62
  }
61
63
 
62
- CORE_DEFAULT_EXTRAS = [
63
- "remote",
64
- "tools",
65
- "media",
66
- "vision",
67
- "voice",
68
- "audio",
69
- "music",
70
- ]
64
+ # The light profile installs plain `abstractcore` (no extra): AbstractCore's light setting already
65
+ # carries every remote provider, the tools, media and the capability plugins. The apple and gpu
66
+ # profiles get AbstractCore's local engines through the gateway's profile.
67
+ CORE_DEFAULT_EXTRAS: list[str] = []
71
68
 
72
69
  # Convenience re-exports (AbstractCore is a base dependency of this meta-package).
73
70
  # Keep this import lightweight: do not import optional tool/media deps here.