abstractframework 0.6.2__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.2 → abstractframework-0.6.3}/CHANGELOG.md +143 -0
  2. {abstractframework-0.6.2/abstractframework.egg-info → abstractframework-0.6.3}/PKG-INFO +30 -23
  3. {abstractframework-0.6.2 → abstractframework-0.6.3}/README.md +21 -14
  4. {abstractframework-0.6.2 → abstractframework-0.6.3}/abstractframework/__init__.py +9 -9
  5. {abstractframework-0.6.2 → abstractframework-0.6.3/abstractframework.egg-info}/PKG-INFO +30 -23
  6. {abstractframework-0.6.2 → abstractframework-0.6.3}/abstractframework.egg-info/SOURCES.txt +2 -0
  7. {abstractframework-0.6.2 → abstractframework-0.6.3}/abstractframework.egg-info/requires.txt +8 -8
  8. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/api.md +6 -6
  9. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/faq.md +21 -2
  10. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/install.md +142 -26
  11. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/installers/implementation-plan.md +1 -1
  12. {abstractframework-0.6.2 → abstractframework-0.6.3}/llms-full.txt +212 -70
  13. {abstractframework-0.6.2 → abstractframework-0.6.3}/llms.txt +3 -3
  14. {abstractframework-0.6.2 → abstractframework-0.6.3}/pyproject.toml +9 -9
  15. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/install.sh +263 -6
  16. {abstractframework-0.6.2 → abstractframework-0.6.3}/tests/test_install_profiles.py +18 -7
  17. abstractframework-0.6.3/tests/test_install_ps1_gpu_stack.py +432 -0
  18. abstractframework-0.6.3/tests/test_install_sh_gpu_stack.py +306 -0
  19. {abstractframework-0.6.2 → abstractframework-0.6.3}/LICENSE +0 -0
  20. {abstractframework-0.6.2 → abstractframework-0.6.3}/MANIFEST.in +0 -0
  21. {abstractframework-0.6.2 → abstractframework-0.6.3}/abstractframework/__main__.py +0 -0
  22. {abstractframework-0.6.2 → abstractframework-0.6.3}/abstractframework/cli.py +0 -0
  23. {abstractframework-0.6.2 → abstractframework-0.6.3}/abstractframework/install_manifest.py +0 -0
  24. {abstractframework-0.6.2 → abstractframework-0.6.3}/abstractframework/py.typed +0 -0
  25. {abstractframework-0.6.2 → abstractframework-0.6.3}/abstractframework.egg-info/dependency_links.txt +0 -0
  26. {abstractframework-0.6.2 → abstractframework-0.6.3}/abstractframework.egg-info/entry_points.txt +0 -0
  27. {abstractframework-0.6.2 → abstractframework-0.6.3}/abstractframework.egg-info/top_level.txt +0 -0
  28. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/README.md +0 -0
  29. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0001-layered-architecture.md +0 -0
  30. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0002-effect-system-design.md +0 -0
  31. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0003-tool-system-architecture.md +0 -0
  32. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0004-observability-strategy.md +0 -0
  33. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0005-memory-architecture.md +0 -0
  34. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0006-durable-tool-execution.md +0 -0
  35. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0007-active-context-and-memory-provenance.md +0 -0
  36. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0008-token-terminology.md +0 -0
  37. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0009-connected-memory-recall-and-provenance.md +0 -0
  38. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0010-runtime-owned-node-traces.md +0 -0
  39. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0011-ledger-subscriptions-and-event-bridge.md +0 -0
  40. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0012-portable-workflowartifact.md +0 -0
  41. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0013-durable-run-controls-pause-resume-cancel.md +0 -0
  42. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0014-runtime-authority-timeouts.md +0 -0
  43. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0015-execution-targets-and-remote-tool-workers.md +0 -0
  44. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0016-tool-calling-pipeline-and-responsibility-boundaries.md +0 -0
  45. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0017-host-ui-events-and-durable-prompts.md +0 -0
  46. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0018-durable-run-gateway-and-remote-host-control-plane.md +0 -0
  47. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0019-testing-strategy-and-levels.md +0 -0
  48. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0020-agent-host-pool-and-orchestrator-placement.md +0 -0
  49. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0021-deployment-topologies-and-supported-scenarios.md +0 -0
  50. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0022-orchestrator-host-and-runtime-daemonization.md +0 -0
  51. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0023-file-attachment-path-resolution-and-authorization.md +0 -0
  52. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0024-attachment-placeholders-and-compaction-invariants.md +0 -0
  53. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0025-kg-entity-normalization-and-dedup.md +0 -0
  54. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0026-truncation-policy-and-contract.md +0 -0
  55. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0027-timeout-policy-and-contract.md +0 -0
  56. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0028-capabilities-plugins-and-library-framework-modes.md +0 -0
  57. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0029-permissive-dependency-and-licensing-policy.md +0 -0
  58. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0030-security-test-fixtures-and-isolation.md +0 -0
  59. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0031-workflow-llm-routing-overrides-provider-model-and-base-url.md +0 -0
  60. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0032-package-dependency-boundaries-and-gateway-first-apps.md +0 -0
  61. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0033-install-profiles-config-entrypoints-and-server-boundaries.md +0 -0
  62. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0034-framework-release-sequence-and-gates.md +0 -0
  63. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0035-capability-routing-defaults.md +0 -0
  64. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0036-artifact-descriptor-contract.md +0 -0
  65. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0037-hosted-file-source-contract-and-workspacepath-authority.md +0 -0
  66. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/0038-script-bootstrap-and-gateway-console-install.md +0 -0
  67. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/README.md +0 -0
  68. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/memory-recall-levels.md +0 -0
  69. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/reorg/001_music_as_capability_plugin_via_acestep_api.md +0 -0
  70. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/reorg/002_abstractmusic_inprocess_local_generation.md +0 -0
  71. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/reorg/003_abstractmusic_acestep_v15_backend_source_strategy.md +0 -0
  72. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/reorg/004_smartnote_thin_client_architecture.md +0 -0
  73. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/reorg/005_smartnote_artifact_first_cards.md +0 -0
  74. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/reorg/2026-02-21_gateway-first-assistant.md +0 -0
  75. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/reorg/2026-02-21_installer_manager_strategy.md +0 -0
  76. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/adr/reorg/2026-02-21_macos_installer_manager.md +0 -0
  77. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/agent-sessions.md +0 -0
  78. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/architecture.md +0 -0
  79. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/automations.md +0 -0
  80. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/claude/README.md +0 -0
  81. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/claude/abstractframework-fit.md +0 -0
  82. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/claude/claude-skills-overview.md +0 -0
  83. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/claude/claude-skills-sources.md +0 -0
  84. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/claude/claude-skills-top-20.md +0 -0
  85. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/comparisons/README.md +0 -0
  86. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/configuration.md +0 -0
  87. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/getting-started.md +0 -0
  88. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/glossary.md +0 -0
  89. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/guide/LANDING.md +0 -0
  90. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/guide/README.md +0 -0
  91. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/guide/agent-skills.md +0 -0
  92. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/guide/agent-vs-llm.md +0 -0
  93. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/guide/agora-workflow-agent.md +0 -0
  94. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/guide/apple-local-gateway-flow.md +0 -0
  95. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/guide/capability-plugins.md +0 -0
  96. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/guide/capability-routing-defaults.md +0 -0
  97. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/guide/deployment-iphone.md +0 -0
  98. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/guide/deployment-topologies.md +0 -0
  99. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/guide/deployment-web.md +0 -0
  100. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/guide/email-integration.md +0 -0
  101. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/guide/event-inbox-agent.md +0 -0
  102. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/guide/flow-and-kg-memory.md +0 -0
  103. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/guide/gateway-security.md +0 -0
  104. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/guide/headless-swarm.md +0 -0
  105. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/guide/process-manager-env-vars.md +0 -0
  106. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/guide/prompt-caching.md +0 -0
  107. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/guide/runtime-artifacts.md +0 -0
  108. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/guide/runtime-scope.md +0 -0
  109. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/guide/scheduled-workflows.md +0 -0
  110. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/guide/summoned-entities.md +0 -0
  111. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/guide/telegram-integration.md +0 -0
  112. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/guide/workflow-bundles.md +0 -0
  113. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/installers/README.md +0 -0
  114. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/installers/components.md +0 -0
  115. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/installers/operations-and-support.md +0 -0
  116. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/installers/release-and-manifest.md +0 -0
  117. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/installers/security-and-os-blocks.md +0 -0
  118. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/installers/strategy.md +0 -0
  119. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/installers/user-journeys.md +0 -0
  120. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/prompts/agora-collaboration.md +0 -0
  121. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/scenarios/README.md +0 -0
  122. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/scenarios/email-inbox-agent.md +0 -0
  123. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/scenarios/gateway-first-local-dev.md +0 -0
  124. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/scenarios/offline-coding-assistant.md +0 -0
  125. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/scenarios/phone-thin-client.md +0 -0
  126. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/scenarios/specialized-agent-flow.md +0 -0
  127. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/scenarios/telegram-permanent-contact.md +0 -0
  128. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/scenarios/workflow-bundle-lifecycle.md +0 -0
  129. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/skills/README.md +0 -0
  130. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/skills/abstractframework-agent-skills-fit.md +0 -0
  131. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/skills/abstractframework-architecture-deep-dive.md +0 -0
  132. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/skills/agent-skills-ecosystem-scan.md +0 -0
  133. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/skills/agent-skills-ecosystem-sources.md +0 -0
  134. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/skills/claude-agent-skills-overview.md +0 -0
  135. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/skills/claude-agent-skills-sources.md +0 -0
  136. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/skills/claude-agent-skills-top-20.md +0 -0
  137. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/troubleshooting.md +0 -0
  138. {abstractframework-0.6.2 → abstractframework-0.6.3}/docs/workspace-scripts.md +0 -0
  139. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/af-local.sh +0 -0
  140. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/af.sh +0 -0
  141. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/agora_react_flow_smoke.py +0 -0
  142. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/assistant-local.sh +0 -0
  143. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/assistant.sh +0 -0
  144. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/build.sh +0 -0
  145. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/cache_probe_local_backends.py +0 -0
  146. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/cache_steer_repl.py +0 -0
  147. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/check_identity_sync.py +0 -0
  148. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/clone.sh +0 -0
  149. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/code-local.sh +0 -0
  150. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/code.sh +0 -0
  151. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/commit.sh +0 -0
  152. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/console-local.sh +0 -0
  153. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/console.sh +0 -0
  154. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/core_operator_drive.py +0 -0
  155. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/deps.sh +0 -0
  156. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/entity-local.sh +0 -0
  157. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/entity.sh +0 -0
  158. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/event_inbox_flow_smoke.py +0 -0
  159. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/flow-local.sh +0 -0
  160. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/flow.sh +0 -0
  161. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/gateway-flow-local.sh +0 -0
  162. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/gateway-flow.sh +0 -0
  163. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/gateway-local.sh +0 -0
  164. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/gateway.sh +0 -0
  165. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/gen_llms_full.py +0 -0
  166. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/headless_fleet_bridge.py +0 -0
  167. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/headless_fleet_demo.py +0 -0
  168. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/headless_steer_repl.py +0 -0
  169. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/lib/af_inventory.py +0 -0
  170. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/lib/af_stack.sh +0 -0
  171. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/lib/af_supervisor.sh +0 -0
  172. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/lib/apps_common.sh +0 -0
  173. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/lib/build_macos_installer.sh +0 -0
  174. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/lib/gateway_user_tokens.py +0 -0
  175. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/lib/repo_groups.sh +0 -0
  176. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/meet_castor.sh +0 -0
  177. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/observer-local.sh +0 -0
  178. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/observer.sh +0 -0
  179. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/plan_walkthrough.py +0 -0
  180. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/pull.sh +0 -0
  181. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/push.sh +0 -0
  182. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/spawn_demo_agent.sh +0 -0
  183. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/start-local.sh +0 -0
  184. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/start.sh +0 -0
  185. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/status.sh +0 -0
  186. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/steer_repl.py +0 -0
  187. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/tests/test_af_supervisor.sh +0 -0
  188. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/tests/test_install_user_path.sh +0 -0
  189. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/tests/test_inventory.sh +0 -0
  190. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/tests/test_repo_scripts.sh +0 -0
  191. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/uninstall.sh +0 -0
  192. {abstractframework-0.6.2 → abstractframework-0.6.3}/scripts/visit_resume_cache_probe.py +0 -0
  193. {abstractframework-0.6.2 → abstractframework-0.6.3}/setup.cfg +0 -0
  194. {abstractframework-0.6.2 → abstractframework-0.6.3}/tests/test_llms_full.py +0 -0
@@ -4,6 +4,149 @@ 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
+
7
150
  ## [0.6.2] - 2026-09-29
8
151
 
9
152
  One line installs, upgrades and repairs AbstractFramework, and **Update** in the consoles and the
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstractframework
3
- Version: 0.6.2
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,23 +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.2
26
+ Requires-Dist: abstractgateway==0.7.4
27
27
  Requires-Dist: abstractassistant==0.9.1
28
- Requires-Dist: abstractcore==2.19.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.31
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.1
37
+ Requires-Dist: abstract3d==0.3.2
38
38
  Provides-Extra: apple
39
- Requires-Dist: abstractgateway[apple]==0.7.2; extra == "apple"
39
+ Requires-Dist: abstractgateway[apple]==0.7.4; extra == "apple"
40
40
  Requires-Dist: abstractassistant[apple]==0.9.1; platform_system == "Darwin" and extra == "apple"
41
41
  Provides-Extra: gpu
42
- Requires-Dist: abstractgateway[gpu]==0.7.2; extra == "gpu"
42
+ Requires-Dist: abstractgateway[gpu]==0.7.4; extra == "gpu"
43
43
  Requires-Dist: abstractassistant[gpu]==0.9.1; extra == "gpu"
44
44
  Dynamic: license-file
45
45
 
@@ -89,6 +89,13 @@ once: it reads your earlier options from what is installed (or repeat them once)
89
89
  button of gateway 0.7.1 cannot upgrade. Gateway only, apps, and version checks:
90
90
  [Upgrade](docs/install.md#upgrade).
91
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
+
92
99
  The installer sets up the gateway in your user account (no admin password, no system Python),
93
100
  with local voice (Supertonic text-to-speech and Whisper speech-to-text), asks whether to start it
94
101
  at login (Enter = yes; an unattended install leaves it off and says how to turn it on), starts it
@@ -209,7 +216,7 @@ abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token
209
216
  ```
210
217
 
211
218
  Container images are published for the gateway and the AbstractCore server:
212
- `ghcr.io/lpalbou/abstractgateway:0.7.2` and `ghcr.io/lpalbou/abstractcore-server:2.19.0`.
219
+ `ghcr.io/lpalbou/abstractgateway:0.7.4` and `ghcr.io/lpalbou/abstractcore-server:2.19.2`.
213
220
 
214
221
  For artifact and runtime-resource investigation, see
215
222
  [Runtime artifacts and retrieval](docs/guide/runtime-artifacts.md).
@@ -353,9 +360,9 @@ pip install "abstractframework[gpu]"
353
360
  |---|---|---|---|
354
361
  | Light | `pip install abstractframework` | macOS, Linux, Windows | 3.10–3.13 |
355
362
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
356
- | 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+) |
357
364
 
358
- ### Release matrix (abstractframework 0.6.2)
365
+ ### Release matrix (abstractframework 0.6.3)
359
366
 
360
367
  `abstractframework` pins every Python package with `==`, so one version of the
361
368
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -364,32 +371,32 @@ and tested together.
364
371
 
365
372
  | Registry | Package | Version |
366
373
  |---|---|---|
367
- | PyPI | `abstractgateway` | 0.7.2 |
374
+ | PyPI | `abstractgateway` | 0.7.4 |
368
375
  | PyPI | `abstractassistant` | 0.9.1 |
369
- | PyPI | `abstractcore` | 2.19.0 |
370
- | PyPI | `AbstractRuntime` | 0.7.1 |
376
+ | PyPI | `abstractcore` | 2.19.2 |
377
+ | PyPI | `AbstractRuntime` | 0.7.3 |
371
378
  | PyPI | `abstractagent` | 0.3.17 |
372
379
  | PyPI | `abstractskill` | 0.3.0 |
373
380
  | PyPI | `AbstractMemory` | 0.3.0 |
374
381
  | PyPI | `abstractsemantics` | 0.0.5 |
375
- | PyPI | `abstractvoice` | 0.13.0 |
376
- | PyPI | `abstractvision` | 0.3.31 |
382
+ | PyPI | `abstractvoice` | 0.13.2 |
383
+ | PyPI | `abstractvision` | 0.3.33 |
377
384
  | PyPI | `abstractmusic` | 0.1.15 |
378
- | PyPI | `abstract3d` | 0.3.1 |
385
+ | PyPI | `abstract3d` | 0.3.2 |
379
386
  | npm | `@abstractframework/flow` | 0.4.0 |
380
- | npm | `@abstractframework/code` | 0.6.1 |
387
+ | npm | `@abstractframework/code` | 0.6.2 |
381
388
  | npm | `@abstractframework/observer` | 0.2.1 |
382
389
  | npm | `@abstractframework/continuum` | 0.4.0 |
383
390
  | npm | `@abstractframework/entity` | 0.3.0 |
384
391
  | crates.io | `abstractcode` | 0.7.1 |
385
- | crates.io | `abstractgateway-console` | 0.11.1 |
392
+ | crates.io | `abstractgateway-console` | 0.11.2 |
386
393
  | crates.io | `abstractcore-console` | 0.4.1 |
387
394
  | crates.io | `abstracttui` | 0.6.0 |
388
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.7.2 (`gpu-latest` / `<version>-gpu` experimental) |
389
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.19.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 |
390
397
 
391
398
  `abstract3d` (pinned above) comes with AbstractCore in every profile. The optional add-on that is
392
- not part of any profile installs separately: `pip install abstractcamera` (0.2.0). `abstractskill` (pinned above)
399
+ not part of any profile installs separately: `pip install abstractcamera` (0.2.1). `abstractskill` (pinned above)
393
400
  comes with the gateway, which carries its curated skill shelf; install it on its own with
394
401
  `pip install abstractskill`.
395
402
 
@@ -44,6 +44,13 @@ once: it reads your earlier options from what is installed (or repeat them once)
44
44
  button of gateway 0.7.1 cannot upgrade. Gateway only, apps, and version checks:
45
45
  [Upgrade](docs/install.md#upgrade).
46
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
+
47
54
  The installer sets up the gateway in your user account (no admin password, no system Python),
48
55
  with local voice (Supertonic text-to-speech and Whisper speech-to-text), asks whether to start it
49
56
  at login (Enter = yes; an unattended install leaves it off and says how to turn it on), starts it
@@ -164,7 +171,7 @@ abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token
164
171
  ```
165
172
 
166
173
  Container images are published for the gateway and the AbstractCore server:
167
- `ghcr.io/lpalbou/abstractgateway:0.7.2` and `ghcr.io/lpalbou/abstractcore-server:2.19.0`.
174
+ `ghcr.io/lpalbou/abstractgateway:0.7.4` and `ghcr.io/lpalbou/abstractcore-server:2.19.2`.
168
175
 
169
176
  For artifact and runtime-resource investigation, see
170
177
  [Runtime artifacts and retrieval](docs/guide/runtime-artifacts.md).
@@ -308,9 +315,9 @@ pip install "abstractframework[gpu]"
308
315
  |---|---|---|---|
309
316
  | Light | `pip install abstractframework` | macOS, Linux, Windows | 3.10–3.13 |
310
317
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
311
- | 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+) |
312
319
 
313
- ### Release matrix (abstractframework 0.6.2)
320
+ ### Release matrix (abstractframework 0.6.3)
314
321
 
315
322
  `abstractframework` pins every Python package with `==`, so one version of the
316
323
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -319,32 +326,32 @@ and tested together.
319
326
 
320
327
  | Registry | Package | Version |
321
328
  |---|---|---|
322
- | PyPI | `abstractgateway` | 0.7.2 |
329
+ | PyPI | `abstractgateway` | 0.7.4 |
323
330
  | PyPI | `abstractassistant` | 0.9.1 |
324
- | PyPI | `abstractcore` | 2.19.0 |
325
- | PyPI | `AbstractRuntime` | 0.7.1 |
331
+ | PyPI | `abstractcore` | 2.19.2 |
332
+ | PyPI | `AbstractRuntime` | 0.7.3 |
326
333
  | PyPI | `abstractagent` | 0.3.17 |
327
334
  | PyPI | `abstractskill` | 0.3.0 |
328
335
  | PyPI | `AbstractMemory` | 0.3.0 |
329
336
  | PyPI | `abstractsemantics` | 0.0.5 |
330
- | PyPI | `abstractvoice` | 0.13.0 |
331
- | PyPI | `abstractvision` | 0.3.31 |
337
+ | PyPI | `abstractvoice` | 0.13.2 |
338
+ | PyPI | `abstractvision` | 0.3.33 |
332
339
  | PyPI | `abstractmusic` | 0.1.15 |
333
- | PyPI | `abstract3d` | 0.3.1 |
340
+ | PyPI | `abstract3d` | 0.3.2 |
334
341
  | npm | `@abstractframework/flow` | 0.4.0 |
335
- | npm | `@abstractframework/code` | 0.6.1 |
342
+ | npm | `@abstractframework/code` | 0.6.2 |
336
343
  | npm | `@abstractframework/observer` | 0.2.1 |
337
344
  | npm | `@abstractframework/continuum` | 0.4.0 |
338
345
  | npm | `@abstractframework/entity` | 0.3.0 |
339
346
  | crates.io | `abstractcode` | 0.7.1 |
340
- | crates.io | `abstractgateway-console` | 0.11.1 |
347
+ | crates.io | `abstractgateway-console` | 0.11.2 |
341
348
  | crates.io | `abstractcore-console` | 0.4.1 |
342
349
  | crates.io | `abstracttui` | 0.6.0 |
343
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.7.2 (`gpu-latest` / `<version>-gpu` experimental) |
344
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.19.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 |
345
352
 
346
353
  `abstract3d` (pinned above) comes with AbstractCore in every profile. The optional add-on that is
347
- not part of any profile installs separately: `pip install abstractcamera` (0.2.0). `abstractskill` (pinned above)
354
+ not part of any profile installs separately: `pip install abstractcamera` (0.2.1). `abstractskill` (pinned above)
348
355
  comes with the gateway, which carries its curated skill shelf; install it on its own with
349
356
  `pip install abstractskill`.
350
357
 
@@ -10,22 +10,22 @@ Most implementation functionality still lives in component projects.
10
10
 
11
11
  from __future__ import annotations
12
12
 
13
- __version__ = "0.6.2"
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.19.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.2",
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.31",
25
+ "abstractvoice": "0.13.2",
26
+ "abstractvision": "0.3.33",
27
27
  "abstractmusic": "0.1.15",
28
- "abstract3d": "0.3.1",
28
+ "abstract3d": "0.3.2",
29
29
  "abstractassistant": "0.9.1",
30
30
  }
31
31
 
@@ -46,7 +46,7 @@ PACKAGE_DISTRIBUTIONS: dict[str, str] = {
46
46
 
47
47
  NPM_RELEASE_VERSIONS: dict[str, str] = {
48
48
  "@abstractframework/flow": "0.4.0",
49
- "@abstractframework/code": "0.6.1",
49
+ "@abstractframework/code": "0.6.2",
50
50
  "@abstractframework/observer": "0.2.1",
51
51
  "@abstractframework/continuum": "0.4.0",
52
52
  "@abstractframework/entity": "0.3.0",
@@ -55,7 +55,7 @@ NPM_RELEASE_VERSIONS: dict[str, str] = {
55
55
  # Terminal tools published on crates.io alongside this release (installed with `cargo install`,
56
56
  # or by the bootstrap scripts: the gateway console and abstractcode by default).
57
57
  CRATE_RELEASE_VERSIONS: dict[str, str] = {
58
- "abstractgateway-console": "0.11.1",
58
+ "abstractgateway-console": "0.11.2",
59
59
  "abstractcore-console": "0.4.1",
60
60
  "abstractcode": "0.7.1",
61
61
  "abstracttui": "0.6.0",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstractframework
3
- Version: 0.6.2
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,23 +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.2
26
+ Requires-Dist: abstractgateway==0.7.4
27
27
  Requires-Dist: abstractassistant==0.9.1
28
- Requires-Dist: abstractcore==2.19.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.31
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.1
37
+ Requires-Dist: abstract3d==0.3.2
38
38
  Provides-Extra: apple
39
- Requires-Dist: abstractgateway[apple]==0.7.2; extra == "apple"
39
+ Requires-Dist: abstractgateway[apple]==0.7.4; extra == "apple"
40
40
  Requires-Dist: abstractassistant[apple]==0.9.1; platform_system == "Darwin" and extra == "apple"
41
41
  Provides-Extra: gpu
42
- Requires-Dist: abstractgateway[gpu]==0.7.2; extra == "gpu"
42
+ Requires-Dist: abstractgateway[gpu]==0.7.4; extra == "gpu"
43
43
  Requires-Dist: abstractassistant[gpu]==0.9.1; extra == "gpu"
44
44
  Dynamic: license-file
45
45
 
@@ -89,6 +89,13 @@ once: it reads your earlier options from what is installed (or repeat them once)
89
89
  button of gateway 0.7.1 cannot upgrade. Gateway only, apps, and version checks:
90
90
  [Upgrade](docs/install.md#upgrade).
91
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
+
92
99
  The installer sets up the gateway in your user account (no admin password, no system Python),
93
100
  with local voice (Supertonic text-to-speech and Whisper speech-to-text), asks whether to start it
94
101
  at login (Enter = yes; an unattended install leaves it off and says how to turn it on), starts it
@@ -209,7 +216,7 @@ abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token
209
216
  ```
210
217
 
211
218
  Container images are published for the gateway and the AbstractCore server:
212
- `ghcr.io/lpalbou/abstractgateway:0.7.2` and `ghcr.io/lpalbou/abstractcore-server:2.19.0`.
219
+ `ghcr.io/lpalbou/abstractgateway:0.7.4` and `ghcr.io/lpalbou/abstractcore-server:2.19.2`.
213
220
 
214
221
  For artifact and runtime-resource investigation, see
215
222
  [Runtime artifacts and retrieval](docs/guide/runtime-artifacts.md).
@@ -353,9 +360,9 @@ pip install "abstractframework[gpu]"
353
360
  |---|---|---|---|
354
361
  | Light | `pip install abstractframework` | macOS, Linux, Windows | 3.10–3.13 |
355
362
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
356
- | 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+) |
357
364
 
358
- ### Release matrix (abstractframework 0.6.2)
365
+ ### Release matrix (abstractframework 0.6.3)
359
366
 
360
367
  `abstractframework` pins every Python package with `==`, so one version of the
361
368
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -364,32 +371,32 @@ and tested together.
364
371
 
365
372
  | Registry | Package | Version |
366
373
  |---|---|---|
367
- | PyPI | `abstractgateway` | 0.7.2 |
374
+ | PyPI | `abstractgateway` | 0.7.4 |
368
375
  | PyPI | `abstractassistant` | 0.9.1 |
369
- | PyPI | `abstractcore` | 2.19.0 |
370
- | PyPI | `AbstractRuntime` | 0.7.1 |
376
+ | PyPI | `abstractcore` | 2.19.2 |
377
+ | PyPI | `AbstractRuntime` | 0.7.3 |
371
378
  | PyPI | `abstractagent` | 0.3.17 |
372
379
  | PyPI | `abstractskill` | 0.3.0 |
373
380
  | PyPI | `AbstractMemory` | 0.3.0 |
374
381
  | PyPI | `abstractsemantics` | 0.0.5 |
375
- | PyPI | `abstractvoice` | 0.13.0 |
376
- | PyPI | `abstractvision` | 0.3.31 |
382
+ | PyPI | `abstractvoice` | 0.13.2 |
383
+ | PyPI | `abstractvision` | 0.3.33 |
377
384
  | PyPI | `abstractmusic` | 0.1.15 |
378
- | PyPI | `abstract3d` | 0.3.1 |
385
+ | PyPI | `abstract3d` | 0.3.2 |
379
386
  | npm | `@abstractframework/flow` | 0.4.0 |
380
- | npm | `@abstractframework/code` | 0.6.1 |
387
+ | npm | `@abstractframework/code` | 0.6.2 |
381
388
  | npm | `@abstractframework/observer` | 0.2.1 |
382
389
  | npm | `@abstractframework/continuum` | 0.4.0 |
383
390
  | npm | `@abstractframework/entity` | 0.3.0 |
384
391
  | crates.io | `abstractcode` | 0.7.1 |
385
- | crates.io | `abstractgateway-console` | 0.11.1 |
392
+ | crates.io | `abstractgateway-console` | 0.11.2 |
386
393
  | crates.io | `abstractcore-console` | 0.4.1 |
387
394
  | crates.io | `abstracttui` | 0.6.0 |
388
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.7.2 (`gpu-latest` / `<version>-gpu` experimental) |
389
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.19.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 |
390
397
 
391
398
  `abstract3d` (pinned above) comes with AbstractCore in every profile. The optional add-on that is
392
- not part of any profile installs separately: `pip install abstractcamera` (0.2.0). `abstractskill` (pinned above)
399
+ not part of any profile installs separately: `pip install abstractcamera` (0.2.1). `abstractskill` (pinned above)
393
400
  comes with the gateway, which carries its curated skill shelf; install it on its own with
394
401
  `pip install abstractskill`.
395
402
 
@@ -187,4 +187,6 @@ scripts/tests/test_install_user_path.sh
187
187
  scripts/tests/test_inventory.sh
188
188
  scripts/tests/test_repo_scripts.sh
189
189
  tests/test_install_profiles.py
190
+ tests/test_install_ps1_gpu_stack.py
191
+ tests/test_install_sh_gpu_stack.py
190
192
  tests/test_llms_full.py
@@ -1,22 +1,22 @@
1
- abstractgateway==0.7.2
1
+ abstractgateway==0.7.4
2
2
  abstractassistant==0.9.1
3
- abstractcore==2.19.0
4
- AbstractRuntime==0.7.1
3
+ abstractcore==2.19.2
4
+ AbstractRuntime==0.7.3
5
5
  abstractagent==0.3.17
6
6
  abstractskill==0.3.0
7
7
  AbstractMemory==0.3.0
8
8
  abstractsemantics==0.0.5
9
- abstractvoice==0.13.0
10
- abstractvision==0.3.31
9
+ abstractvoice==0.13.2
10
+ abstractvision==0.3.33
11
11
  abstractmusic==0.1.15
12
- abstract3d==0.3.1
12
+ abstract3d==0.3.2
13
13
 
14
14
  [apple]
15
- abstractgateway[apple]==0.7.2
15
+ abstractgateway[apple]==0.7.4
16
16
 
17
17
  [apple:platform_system == "Darwin"]
18
18
  abstractassistant[apple]==0.9.1
19
19
 
20
20
  [gpu]
21
- abstractgateway[gpu]==0.7.2
21
+ abstractgateway[gpu]==0.7.4
22
22
  abstractassistant[gpu]==0.9.1
@@ -55,14 +55,14 @@ The response type returned by `llm.generate(...)`.
55
55
 
56
56
  ### `__version__`
57
57
 
58
- The meta-package version (`0.6.2` for this release).
58
+ The meta-package version (`0.6.3` for this release).
59
59
 
60
60
  ### `RELEASE_VERSIONS`
61
61
 
62
- Dictionary mapping each ecosystem package name to the pinned version for this release. In 0.6.2:
63
- `abstractcore` 2.19.0, `abstractruntime` 0.7.1, `abstractagent` 0.3.17, `abstractgateway` 0.7.2,
64
- `abstractskill` 0.3.0, `abstractmemory` 0.3.0, `abstractsemantics` 0.0.5, `abstractvoice` 0.13.0, `abstractvision` 0.3.31,
65
- `abstractmusic` 0.1.15, `abstract3d` 0.3.1, `abstractassistant` 0.9.1.
62
+ Dictionary mapping each ecosystem package name to the pinned version for this release. In 0.6.3:
63
+ `abstractcore` 2.19.2, `abstractruntime` 0.7.3, `abstractagent` 0.3.17, `abstractgateway` 0.7.4,
64
+ `abstractskill` 0.3.0, `abstractmemory` 0.3.0, `abstractsemantics` 0.0.5, `abstractvoice` 0.13.2, `abstractvision` 0.3.33,
65
+ `abstractmusic` 0.1.15, `abstract3d` 0.3.2, `abstractassistant` 0.9.1.
66
66
 
67
67
  ### `PACKAGE_DISTRIBUTIONS`
68
68
 
@@ -79,7 +79,7 @@ The npm apps released with this version, each runnable with `npx <package>`:
79
79
  ### `CRATE_RELEASE_VERSIONS`
80
80
 
81
81
  The Rust terminal tools released with this version, installed with `cargo install <crate>`:
82
- `abstractgateway-console` 0.11.1, `abstractcore-console` 0.4.1, `abstractcode` 0.7.1 and the
82
+ `abstractgateway-console` 0.11.2, `abstractcore-console` 0.4.1, `abstractcode` 0.7.1 and the
83
83
  `abstracttui` engine 0.6.0. The bootstrap scripts build `abstractgateway-console` at this version by default
84
84
  (`--no-console` skips it) and `abstractcode` next to it (`--no-code-cli` skips it).
85
85
 
@@ -34,7 +34,7 @@ No.
34
34
  | Everything at compatible versions | `pip install abstractframework` |
35
35
  | A browser app | the gateway console's **Apps** page (served at `/apps/<app>/` on the gateway), or on its own: `npx @abstractframework/<flow\|code\|observer\|continuum\|entity> --gateway-url <url>` |
36
36
  | A terminal client | `cargo install abstractcode`, `cargo install abstractgateway-console` or `cargo install abstractcore-console` |
37
- | A container deployment | `ghcr.io/lpalbou/abstractgateway:0.7.2` |
37
+ | A container deployment | `ghcr.io/lpalbou/abstractgateway:0.7.4` |
38
38
 
39
39
  See [Install AbstractFramework](install.md) for the Light / Apple / GPU chooser. Light is
40
40
  remote-first, not reduced-functionality: multimodal and embeddings still work through remote or
@@ -264,8 +264,27 @@ to install `libatomic1`. The script tells you before running them.
264
264
  No. The default install uses prebuilt wheels only. If macOS shows an "install the command line
265
265
  developer tools" prompt, cancel it and re-run the one-liner. llama.cpp GGUF models come from upstream's prebuilt wheel on Apple
266
266
  Silicon, Linux and Windows x64 ([llama.cpp GGUF models](install.md#llamacpp-gguf-models)). You
267
- need a compiler only for `--full`, which adds stable-diffusion.cpp and echo cancellation, and
267
+ need a compiler only for `--full`, which adds stable-diffusion.cpp and (macOS, Linux) echo cancellation, and
268
268
  llama.cpp on machines without a prebuilt wheel ([Compiled extras](install.md#compiled-extras)).
269
+ On Linux with the gpu profile, vLLM also needs a C compiler (`build-essential`) the first time it
270
+ starts a model ([GPU on Linux (NVIDIA)](install.md#gpu-on-linux-nvidia)).
271
+
272
+ ### Does the installer use my NVIDIA GPU?
273
+
274
+ Yes, on Linux and Windows x64: when `nvidia-smi` works, the installer picks the `gpu` profile
275
+ (`--profile gpu` / `-Profile gpu` forces it). On Linux it installs llama.cpp's CUDA build matching
276
+ PyTorch's CUDA and checks that PyTorch, llama.cpp and Whisper use the GPU. PyPI's PyTorch for Linux is
277
+ a CUDA 13 build and needs NVIDIA driver 580 or newer; with an older driver the engines run on the
278
+ processor. The 0.6.3 release candidate was rehearsed on a Quadro RTX 5000 (16 GB, driver 595,
279
+ CUDA 13) on Ubuntu 26.04: text, text-to-speech and image generation worked with **Use recommended
280
+ defaults**; speech-to-text needed two fixes and the image model and a loaded 9B text model did not
281
+ fit on the GPU together, which the final 0.6.3 versions address
282
+ ([measured results and what changed](install.md#gpu-on-linux-nvidia)). On Windows it installs PyTorch's CUDA build and
283
+ llama.cpp's prebuilt CUDA build, chosen from your driver version; this path is implemented but not
284
+ yet validated on real NVIDIA hardware. Each installer prints what runs where (`PyTorch:`, `GGUF:`
285
+ and Whisper lines) and falls back to the CPU for any part that does not work. See
286
+ [GPU on Linux (NVIDIA)](install.md#gpu-on-linux-nvidia) and
287
+ [GPU on Windows (NVIDIA)](install.md#gpu-on-windows-nvidia).
269
288
 
270
289
  ### Windows says scripts are disabled on this system
271
290