abstractframework 0.5.0__tar.gz → 0.6.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. {abstractframework-0.5.0 → abstractframework-0.6.0}/CHANGELOG.md +120 -0
  2. {abstractframework-0.5.0/abstractframework.egg-info → abstractframework-0.6.0}/PKG-INFO +52 -46
  3. {abstractframework-0.5.0 → abstractframework-0.6.0}/README.md +41 -35
  4. {abstractframework-0.5.0 → abstractframework-0.6.0}/abstractframework/__init__.py +15 -15
  5. {abstractframework-0.5.0 → abstractframework-0.6.0}/abstractframework/install_manifest.py +2 -1
  6. {abstractframework-0.5.0 → abstractframework-0.6.0/abstractframework.egg-info}/PKG-INFO +52 -46
  7. abstractframework-0.6.0/abstractframework.egg-info/requires.txt +21 -0
  8. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/README.md +1 -1
  9. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/api.md +9 -9
  10. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/architecture.md +52 -7
  11. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/automations.md +34 -15
  12. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/configuration.md +12 -13
  13. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/faq.md +10 -7
  14. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/getting-started.md +30 -21
  15. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/install.md +126 -61
  16. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/installers/implementation-plan.md +1 -1
  17. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/installers/user-journeys.md +6 -5
  18. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/troubleshooting.md +6 -3
  19. {abstractframework-0.5.0 → abstractframework-0.6.0}/llms-full.txt +366 -213
  20. {abstractframework-0.5.0 → abstractframework-0.6.0}/llms.txt +10 -8
  21. {abstractframework-0.5.0 → abstractframework-0.6.0}/pyproject.toml +11 -11
  22. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/check_identity_sync.py +40 -3
  23. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/install.sh +269 -54
  24. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/tests/test_install_user_path.sh +186 -12
  25. {abstractframework-0.5.0 → abstractframework-0.6.0}/tests/test_install_profiles.py +92 -18
  26. abstractframework-0.5.0/abstractframework.egg-info/requires.txt +0 -21
  27. {abstractframework-0.5.0 → abstractframework-0.6.0}/LICENSE +0 -0
  28. {abstractframework-0.5.0 → abstractframework-0.6.0}/MANIFEST.in +0 -0
  29. {abstractframework-0.5.0 → abstractframework-0.6.0}/abstractframework/__main__.py +0 -0
  30. {abstractframework-0.5.0 → abstractframework-0.6.0}/abstractframework/cli.py +0 -0
  31. {abstractframework-0.5.0 → abstractframework-0.6.0}/abstractframework/py.typed +0 -0
  32. {abstractframework-0.5.0 → abstractframework-0.6.0}/abstractframework.egg-info/SOURCES.txt +0 -0
  33. {abstractframework-0.5.0 → abstractframework-0.6.0}/abstractframework.egg-info/dependency_links.txt +0 -0
  34. {abstractframework-0.5.0 → abstractframework-0.6.0}/abstractframework.egg-info/entry_points.txt +0 -0
  35. {abstractframework-0.5.0 → abstractframework-0.6.0}/abstractframework.egg-info/top_level.txt +0 -0
  36. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0001-layered-architecture.md +0 -0
  37. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0002-effect-system-design.md +0 -0
  38. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0003-tool-system-architecture.md +0 -0
  39. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0004-observability-strategy.md +0 -0
  40. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0005-memory-architecture.md +0 -0
  41. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0006-durable-tool-execution.md +0 -0
  42. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0007-active-context-and-memory-provenance.md +0 -0
  43. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0008-token-terminology.md +0 -0
  44. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0009-connected-memory-recall-and-provenance.md +0 -0
  45. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0010-runtime-owned-node-traces.md +0 -0
  46. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0011-ledger-subscriptions-and-event-bridge.md +0 -0
  47. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0012-portable-workflowartifact.md +0 -0
  48. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0013-durable-run-controls-pause-resume-cancel.md +0 -0
  49. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0014-runtime-authority-timeouts.md +0 -0
  50. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0015-execution-targets-and-remote-tool-workers.md +0 -0
  51. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0016-tool-calling-pipeline-and-responsibility-boundaries.md +0 -0
  52. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0017-host-ui-events-and-durable-prompts.md +0 -0
  53. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0018-durable-run-gateway-and-remote-host-control-plane.md +0 -0
  54. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0019-testing-strategy-and-levels.md +0 -0
  55. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0020-agent-host-pool-and-orchestrator-placement.md +0 -0
  56. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0021-deployment-topologies-and-supported-scenarios.md +0 -0
  57. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0022-orchestrator-host-and-runtime-daemonization.md +0 -0
  58. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0023-file-attachment-path-resolution-and-authorization.md +0 -0
  59. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0024-attachment-placeholders-and-compaction-invariants.md +0 -0
  60. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0025-kg-entity-normalization-and-dedup.md +0 -0
  61. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0026-truncation-policy-and-contract.md +0 -0
  62. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0027-timeout-policy-and-contract.md +0 -0
  63. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0028-capabilities-plugins-and-library-framework-modes.md +0 -0
  64. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0029-permissive-dependency-and-licensing-policy.md +0 -0
  65. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0030-security-test-fixtures-and-isolation.md +0 -0
  66. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0031-workflow-llm-routing-overrides-provider-model-and-base-url.md +0 -0
  67. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0032-package-dependency-boundaries-and-gateway-first-apps.md +0 -0
  68. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0033-install-profiles-config-entrypoints-and-server-boundaries.md +0 -0
  69. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0034-framework-release-sequence-and-gates.md +0 -0
  70. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0035-capability-routing-defaults.md +0 -0
  71. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0036-artifact-descriptor-contract.md +0 -0
  72. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0037-hosted-file-source-contract-and-workspacepath-authority.md +0 -0
  73. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/0038-script-bootstrap-and-gateway-console-install.md +0 -0
  74. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/README.md +0 -0
  75. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/memory-recall-levels.md +0 -0
  76. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/reorg/001_music_as_capability_plugin_via_acestep_api.md +0 -0
  77. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/reorg/002_abstractmusic_inprocess_local_generation.md +0 -0
  78. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/reorg/003_abstractmusic_acestep_v15_backend_source_strategy.md +0 -0
  79. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/reorg/004_smartnote_thin_client_architecture.md +0 -0
  80. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/reorg/005_smartnote_artifact_first_cards.md +0 -0
  81. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/reorg/2026-02-21_gateway-first-assistant.md +0 -0
  82. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/reorg/2026-02-21_installer_manager_strategy.md +0 -0
  83. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/adr/reorg/2026-02-21_macos_installer_manager.md +0 -0
  84. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/agent-sessions.md +0 -0
  85. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/claude/README.md +0 -0
  86. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/claude/abstractframework-fit.md +0 -0
  87. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/claude/claude-skills-overview.md +0 -0
  88. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/claude/claude-skills-sources.md +0 -0
  89. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/claude/claude-skills-top-20.md +0 -0
  90. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/comparisons/README.md +0 -0
  91. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/glossary.md +0 -0
  92. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/guide/LANDING.md +0 -0
  93. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/guide/README.md +0 -0
  94. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/guide/agent-skills.md +0 -0
  95. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/guide/agent-vs-llm.md +0 -0
  96. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/guide/agora-workflow-agent.md +0 -0
  97. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/guide/apple-local-gateway-flow.md +0 -0
  98. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/guide/capability-plugins.md +0 -0
  99. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/guide/capability-routing-defaults.md +0 -0
  100. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/guide/deployment-iphone.md +0 -0
  101. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/guide/deployment-topologies.md +0 -0
  102. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/guide/deployment-web.md +0 -0
  103. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/guide/email-integration.md +0 -0
  104. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/guide/event-inbox-agent.md +0 -0
  105. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/guide/flow-and-kg-memory.md +0 -0
  106. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/guide/gateway-security.md +0 -0
  107. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/guide/headless-swarm.md +0 -0
  108. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/guide/process-manager-env-vars.md +0 -0
  109. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/guide/prompt-caching.md +0 -0
  110. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/guide/runtime-artifacts.md +0 -0
  111. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/guide/runtime-scope.md +0 -0
  112. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/guide/scheduled-workflows.md +0 -0
  113. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/guide/summoned-entities.md +0 -0
  114. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/guide/telegram-integration.md +0 -0
  115. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/guide/workflow-bundles.md +0 -0
  116. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/installers/README.md +0 -0
  117. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/installers/components.md +0 -0
  118. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/installers/operations-and-support.md +0 -0
  119. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/installers/release-and-manifest.md +0 -0
  120. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/installers/security-and-os-blocks.md +0 -0
  121. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/installers/strategy.md +0 -0
  122. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/prompts/agora-collaboration.md +0 -0
  123. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/scenarios/README.md +0 -0
  124. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/scenarios/email-inbox-agent.md +0 -0
  125. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/scenarios/gateway-first-local-dev.md +0 -0
  126. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/scenarios/offline-coding-assistant.md +0 -0
  127. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/scenarios/phone-thin-client.md +0 -0
  128. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/scenarios/specialized-agent-flow.md +0 -0
  129. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/scenarios/telegram-permanent-contact.md +0 -0
  130. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/scenarios/workflow-bundle-lifecycle.md +0 -0
  131. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/skills/README.md +0 -0
  132. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/skills/abstractframework-agent-skills-fit.md +0 -0
  133. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/skills/abstractframework-architecture-deep-dive.md +0 -0
  134. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/skills/agent-skills-ecosystem-scan.md +0 -0
  135. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/skills/agent-skills-ecosystem-sources.md +0 -0
  136. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/skills/claude-agent-skills-overview.md +0 -0
  137. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/skills/claude-agent-skills-sources.md +0 -0
  138. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/skills/claude-agent-skills-top-20.md +0 -0
  139. {abstractframework-0.5.0 → abstractframework-0.6.0}/docs/workspace-scripts.md +0 -0
  140. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/af-local.sh +0 -0
  141. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/af.sh +0 -0
  142. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/agora_react_flow_smoke.py +0 -0
  143. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/assistant-local.sh +0 -0
  144. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/assistant.sh +0 -0
  145. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/build.sh +0 -0
  146. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/cache_probe_local_backends.py +0 -0
  147. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/cache_steer_repl.py +0 -0
  148. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/clone.sh +0 -0
  149. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/code-local.sh +0 -0
  150. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/code.sh +0 -0
  151. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/commit.sh +0 -0
  152. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/console-local.sh +0 -0
  153. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/console.sh +0 -0
  154. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/core_operator_drive.py +0 -0
  155. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/deps.sh +0 -0
  156. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/entity-local.sh +0 -0
  157. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/entity.sh +0 -0
  158. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/event_inbox_flow_smoke.py +0 -0
  159. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/flow-local.sh +0 -0
  160. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/flow.sh +0 -0
  161. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/gateway-flow-local.sh +0 -0
  162. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/gateway-flow.sh +0 -0
  163. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/gateway-local.sh +0 -0
  164. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/gateway.sh +0 -0
  165. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/gen_llms_full.py +0 -0
  166. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/headless_fleet_bridge.py +0 -0
  167. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/headless_fleet_demo.py +0 -0
  168. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/headless_steer_repl.py +0 -0
  169. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/lib/af_inventory.py +0 -0
  170. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/lib/af_stack.sh +0 -0
  171. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/lib/af_supervisor.sh +0 -0
  172. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/lib/apps_common.sh +0 -0
  173. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/lib/build_macos_installer.sh +0 -0
  174. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/lib/gateway_user_tokens.py +0 -0
  175. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/lib/repo_groups.sh +0 -0
  176. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/meet_castor.sh +0 -0
  177. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/observer-local.sh +0 -0
  178. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/observer.sh +0 -0
  179. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/plan_walkthrough.py +0 -0
  180. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/pull.sh +0 -0
  181. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/push.sh +0 -0
  182. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/spawn_demo_agent.sh +0 -0
  183. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/start-local.sh +0 -0
  184. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/start.sh +0 -0
  185. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/status.sh +0 -0
  186. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/steer_repl.py +0 -0
  187. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/tests/test_af_supervisor.sh +0 -0
  188. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/tests/test_inventory.sh +0 -0
  189. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/tests/test_repo_scripts.sh +0 -0
  190. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/uninstall.sh +0 -0
  191. {abstractframework-0.5.0 → abstractframework-0.6.0}/scripts/visit_resume_cache_probe.py +0 -0
  192. {abstractframework-0.5.0 → abstractframework-0.6.0}/setup.cfg +0 -0
  193. {abstractframework-0.5.0 → abstractframework-0.6.0}/tests/test_llms_full.py +0 -0
@@ -4,6 +4,126 @@ All notable changes to AbstractFramework will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.6.0] - 2026-09-28
8
+
9
+ Remote and headless machines work like a Mac: one address and one SSH tunnel reach the console, the
10
+ API and every browser app; every client finds the local gateway on its own; AbstractCode creates and
11
+ runs automations; history replay keeps whole messages up to 50,000 tokens and never cuts one.
12
+
13
+ ### Added
14
+
15
+ - **Browser apps open through the gateway at `/apps/<app>/`** (AbstractGateway 0.7.0). Flow, Code,
16
+ Observer, Continuum and Entity are served on the gateway's own address (HTTP, server-sent events
17
+ and WebSocket), signed in with the app's gateway session, so a LAN address, a reverse proxy or one
18
+ SSH tunnel reaches them all. The apps listen on `127.0.0.1` by default. The installer summary's
19
+ `Apps:` line and the docs point to `<gateway>/apps/<app>/`; the console's **Apps** page installs
20
+ and opens them. Running an app on its own with `npx … --gateway-url <url>` is the advanced
21
+ alternative (`Standalone:` line).
22
+ - **Local gateway pointer.** After the health check the installer writes
23
+ `~/.abstractframework/gateway.json` (Windows: `%USERPROFILE%\.abstractframework\gateway.json`),
24
+ mode 0600: the gateway's loopback URL, port and data directory, never a token. The Assistant (the
25
+ macOS app included), both terminal consoles, AbstractCode's terminal client and the browser apps'
26
+ servers read it to find a gateway on a port other than 8080, and follow it when the gateway moves.
27
+ The installer writes it for the install it just made, a custom `--data-dir` included (replacing a
28
+ pointer that names another data directory); `abstractgateway serve` then keeps it current under
29
+ its ownership rule. The uninstaller deletes it when it names the uninstalled data directory.
30
+ - **Automations in AbstractCode** (`abstractcode` 0.7.0, `@abstractframework/code` 0.6.0). In the
31
+ terminal client, `/automations` lists and opens automations (runs as chat pairs, waits that need
32
+ you, the folder, pause/resume, run now, stop, revise, archive, Discuss) and `/schedule` creates
33
+ one; the browser client has the same in its **Automations** sidebar section. See
34
+ [Automations](docs/automations.md).
35
+ - **Start at login from the consoles.** Both the web console (Gateway card, last setup step) and the
36
+ terminal console (F3, the Finish step) have a **Start at login** switch that changes the login item
37
+ without restarting the gateway.
38
+ - **The terminal console on a headless machine** (`abstractgateway-console` 0.11.0): a Network
39
+ screen that shows the saved and the running setting and offers the restart, Apps that give the link
40
+ and the tunnel command instead of opening a browser, voice and engine states, and the local
41
+ gateway pointer. Neither terminal console tries to open a browser on a machine without a display.
42
+ - `--ask-wait SECONDS` (Windows: `-AskWait`) sets how long a timed question waits (default 25, at
43
+ most 25). `--console-wait` remains as an alias.
44
+
45
+ ### Changed
46
+
47
+ - **One flag for the gateway address: `--gateway-url`** in every app and terminal client
48
+ (`--url` for the gateway terminal console and `--gateway` for AbstractCode remain as aliases). The
49
+ installer summary and the docs use it; with `--with-apps` the installer prints
50
+ `npx -y @abstractframework/<app>@<version> --gateway-url <gateway>` for all five apps.
51
+ - **Start at login is asked whenever a person is at a terminal**, not only with `--interactive`:
52
+ `curl … | sh` asks it on your terminal (`/dev/tty`), Enter = yes. Nobody answering within
53
+ `--ask-wait`, an install without a terminal (a script, CI, a provisioning tool) and `--yes` keep
54
+ the previous choice on a re-run and leave start at login **off** on a first install (it was on);
55
+ the summary then says how to turn it on: the **Start at login** switch in either console, or
56
+ `abstractgateway service enable`. A re-run reads the login item's own state, so a change made
57
+ with a console's switch is kept. `install.ps1` asks the same question on an interactive console
58
+ (it registered the login entry without asking). `--interactive` waits for answers without a time
59
+ limit; `--no-service` still asks nothing.
60
+ - **On a remote or headless session** (SSH, or Linux without a display) with a terminal, the
61
+ installer offers the terminal console at the end ("Press Enter within 25 s"), signed in; nobody answering skips it, so automation never blocks.
62
+ Over SSH it no longer opens a browser on the remote machine. `--no-open` skips both.
63
+ - **History replay keeps whole messages up to 50,000 tokens** (AbstractRuntime 0.7.0): growing
64
+ automations, session chats, run chat, the docs assistants and entity visits replay the newest whole
65
+ turns up to 50,000 tokens. No message is cut; the former 40-message, 24,000-character and
66
+ per-message caps are gone. Each run records how many earlier messages were not replayed, and the
67
+ clients say so.
68
+ - **Voice says what it can do** (AbstractVoice 0.13.0, AbstractCore 2.18.0). Voice listings name
69
+ the providers that cannot run here and why, instead of an empty list; cloud voice providers are
70
+ listed as needing a key until one is configured; a capability route whose engine is not installed
71
+ reports `engine_missing` with the install command; an OpenAI key saved in the Providers screen
72
+ reaches voice. The installer adds local voice to every install profile: Supertonic text-to-speech
73
+ and Whisper speech-to-text (`abstractvoice[supertonic,stt]`), both CPU, from prebuilt wheels
74
+ (skipped where no wheels exist: musl Linux / Alpine, macOS before 13; Whisper on Windows ARM64).
75
+ Voice never fails an install: where its packages do not install the gateway is installed without
76
+ it. The summary's `Voice:` line says what was installed, and a re-run that adds voice restarts the
77
+ gateway to load it.
78
+ - **Observer: Edit opens the form, and a calmer Automations page** (`@abstractframework/observer`
79
+ 0.2.0). A row's **Edit** opens the automation's edit form at once, prefilled (title, task,
80
+ interval, context, tools); action buttons carry icons; a workspace folder can be browsed from the
81
+ browser; **Discuss** opens a chat with a fork of the automation; a run's **Ask** chat sends the
82
+ whole conversation.
83
+ - **Apple silicon model fits account for the GPU memory limit** (AbstractCore 2.18.0): a model that
84
+ fits once macOS raises its limit reads `needs_gpu_limit` with the exact command.
85
+
86
+ ### Security
87
+
88
+ - **DNS-rebinding protection in the browser apps**: an app treats a browser as on this machine only
89
+ when both its address and the page's host are loopback, so a rebinding page can neither reveal a
90
+ folder nor change the gateway address. Continuum's local-only pages answer on `localhost` or
91
+ `127.0.0.1` only. The gateway's app proxy refuses requests with another origin or an invalid host.
92
+ - **Server-held keys are spent only for authenticated requests** (AbstractCore 2.18.0): with a
93
+ saved or environment OpenAI key, unauthenticated requests to the AbstractVoice audio routes, the
94
+ audio and vision discovery routes, OpenAI-backed vision generation and the capability discovery
95
+ routes get `401`, also with `ABSTRACTCORE_SERVER_ALLOW_UNAUTHENTICATED=1`; an explicit
96
+ `X-AbstractCore-Provider-API-Key` is spent instead. The music route follows the same rule while
97
+ the server holds a music backend key.
98
+ - The local gateway pointer is written without following links, with mode 0600, and readers reject
99
+ a pointer that other users can write.
100
+
101
+ ### Changed (pins)
102
+
103
+ - **abstractgateway 0.7.0** (was 0.6.0): apps through `/apps/<app>/`, the local gateway pointer,
104
+ start at login from the consoles, cloud voice providers listed, the history window on every chat
105
+ route, and the terminal console 0.11.0.
106
+ - **abstractcore 2.18.0** (was 2.17.0): `engine_missing`, `needs_gpu_limit`, the saved OpenAI key
107
+ for voice, the key guards above, and `abstractcore-console` 0.4.0.
108
+ - **AbstractRuntime 0.7.1** (was 0.6.0): the 50,000-token history window, recorded in each run;
109
+ images in replayed history stay images, and an image counts as a flat 512 tokens in the window.
110
+ Library callers of `session_chat_messages` and `automation_timeline_messages` should read its
111
+ changelog's Breaking note.
112
+ - **abstractagent 0.3.17** (was 0.3.16): ReAct sends the runtime's history window when the host
113
+ asks for it.
114
+ - **abstractvoice 0.13.0** (was 0.12.0): engine status and unavailable-provider reasons, Qwen3-ASR
115
+ on Transformers 5.x, Qwen3-TTS predictor and sampler flags.
116
+ - **abstractassistant 0.9.0** (was 0.8.0): the macOS app finds a gateway through the local gateway
117
+ pointer; automation cards say their state in words.
118
+ - npm: **@abstractframework/flow 0.4.0**, **code 0.6.0**, **observer 0.2.0**, **continuum 0.4.0**
119
+ and **entity 0.3.0**, all served through the gateway at `/apps/<app>/` and taking
120
+ `--gateway-url`.
121
+ - crates.io: **abstractgateway-console 0.11.0**, **abstractcore-console 0.4.0** and
122
+ **abstractcode 0.7.0**.
123
+ - The pins apply to the base install and to the `apple` / `gpu` extras. Unchanged:
124
+ abstractskill 0.3.0, AbstractMemory 0.3.0, abstractsemantics 0.0.5, abstractvision 0.3.30,
125
+ abstractmusic 0.1.15 and `abstracttui` 0.6.0.
126
+
7
127
  ## [0.5.0] - 2026-09-27
8
128
 
9
129
  Automations, a terminal console installed by default, and a headless setup path: installing and
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstractframework
3
- Version: 0.5.0
3
+ Version: 0.6.0
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.6.0
27
- Requires-Dist: abstractassistant==0.8.0
28
- Requires-Dist: abstractcore==2.17.0
29
- Requires-Dist: AbstractRuntime==0.6.0
30
- Requires-Dist: abstractagent==0.3.16
26
+ Requires-Dist: abstractgateway==0.7.0
27
+ Requires-Dist: abstractassistant==0.9.0
28
+ Requires-Dist: abstractcore==2.18.0
29
+ Requires-Dist: AbstractRuntime==0.7.1
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.12.0
34
+ Requires-Dist: abstractvoice==0.13.0
35
35
  Requires-Dist: abstractvision==0.3.30
36
36
  Requires-Dist: abstractmusic==0.1.15
37
37
  Provides-Extra: apple
38
- Requires-Dist: abstractgateway[apple]==0.6.0; extra == "apple"
39
- Requires-Dist: abstractassistant[apple]==0.8.0; platform_system == "Darwin" and extra == "apple"
38
+ Requires-Dist: abstractgateway[apple]==0.7.0; extra == "apple"
39
+ Requires-Dist: abstractassistant[apple]==0.9.0; platform_system == "Darwin" and extra == "apple"
40
40
  Provides-Extra: gpu
41
- Requires-Dist: abstractgateway[gpu]==0.6.0; extra == "gpu"
42
- Requires-Dist: abstractassistant[gpu]==0.8.0; extra == "gpu"
41
+ Requires-Dist: abstractgateway[gpu]==0.7.0; extra == "gpu"
42
+ Requires-Dist: abstractassistant[gpu]==0.9.0; extra == "gpu"
43
43
  Dynamic: license-file
44
44
 
45
45
  # AbstractFramework
@@ -64,11 +64,14 @@ Think of it as an **agentic OS**: durable runs + replay-first observability + mu
64
64
  ## Quick start
65
65
 
66
66
  The installer sets up the gateway in your user account (no admin password, no system Python),
67
- asks whether to start it at login, starts it on `127.0.0.1:8080`, and opens its web console in
68
- your browser already signed in. A first-run guide then sets up a local engine (Ollama, LM Studio,
69
- MLX, llama.cpp), downloads a model that fits your machine, and lists the apps. The installer also
70
- builds the terminal console, `abstractgateway-console`, which runs the same guide on a server without
71
- a browser ([Headless or remote machine](docs/install.md#headless-or-remote-machine)).
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)).
72
75
 
73
76
  - **Mac, no Terminal:** download and double-click
74
77
  [AbstractFramework-Installer.pkg](https://github.com/lpalbou/AbstractFramework/releases/latest/download/AbstractFramework-Installer.pkg).
@@ -78,7 +81,7 @@ a browser ([Headless or remote machine](docs/install.md#headless-or-remote-machi
78
81
  - **macOS / Linux, one line:**
79
82
 
80
83
  ```bash
81
- curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.sh | sh -s -- --interactive
84
+ curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.sh | sh
82
85
  ```
83
86
 
84
87
  - **Windows 10 22H2+ / 11** (PowerShell):
@@ -160,7 +163,8 @@ With no auth configured, `abstractgateway serve` binds `127.0.0.1:8080`, enables
160
163
  creates `default/admin` in the per-user data folder, and prints a one-time sign-in link
161
164
  (`http://127.0.0.1:8080/console#claim=…`, valid 10 minutes, this machine only). Open it to reach the
162
165
  web console and its first-run guide. `abstractgateway claim` mints a new link;
163
- `abstractgateway service install` starts the gateway at login.
166
+ `abstractgateway service enable` (or the console's **Start at login** switch) starts the gateway at
167
+ login.
164
168
 
165
169
  Browser apps on `http://localhost:*` and `http://127.0.0.1:*` may always call it. To choose
166
170
  another data folder or allow another browser origin:
@@ -182,17 +186,19 @@ AbstractFlow, AbstractCode Web or AbstractObserver, or to the console without a
182
186
  `ABSTRACTGATEWAY_AUTH_TOKEN` remains a legacy server/operator bearer token; it is not a browser
183
187
  sign-in token.
184
188
 
185
- Monitor runs from a browser, or from a terminal with the gateway console:
189
+ Monitor runs from a browser, or from a terminal with the gateway console. The console's **Apps**
190
+ page installs and opens the browser apps, served by the gateway at `/apps/<app>/`
191
+ (`http://127.0.0.1:8080/apps/observer/`), so one address (and one SSH tunnel) reaches them all:
186
192
 
187
193
  ```bash
188
- npx @abstractframework/observer # open http://localhost:3001
194
+ npx @abstractframework/observer --gateway-url http://127.0.0.1:8080 # or run one on its own
189
195
 
190
196
  cargo install abstractgateway-console # Rust 1.87+; the installer builds it for you
191
- abstractgateway-console --url http://127.0.0.1:8080 --token <admin token> # <data dir>/auth/bootstrap-admin-token
197
+ abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token> # <data dir>/auth/bootstrap-admin-token
192
198
  ```
193
199
 
194
200
  Container images are published for the gateway and the AbstractCore server:
195
- `ghcr.io/lpalbou/abstractgateway:0.6.0` and `ghcr.io/lpalbou/abstractcore-server:2.17.0`.
201
+ `ghcr.io/lpalbou/abstractgateway:0.7.0` and `ghcr.io/lpalbou/abstractcore-server:2.18.0`.
196
202
 
197
203
  For artifact and runtime-resource investigation, see
198
204
  [Runtime artifacts and retrieval](docs/guide/runtime-artifacts.md).
@@ -230,7 +236,7 @@ See [Agent sessions](docs/agent-sessions.md).
230
236
 
231
237
  AbstractFlow lets you author complex agentic orchestration as portable `.flow` bundles:
232
238
 
233
- 1. Open the Flow Editor (`npx @abstractframework/flow`)
239
+ 1. Open the Flow Editor (the console's **Apps** page, or `npx @abstractframework/flow --gateway-url <url>`)
234
240
  2. Build a workflow: LLM steps, tool steps, branching, loops, subflows
235
241
  3. Export a `.flow` bundle into your own bundle directory and point `ABSTRACTGATEWAY_FLOWS_DIR` at it (or publish it through the Gateway API)
236
242
  4. Run it from any gateway-backed client (Observer, AbstractAssistant, Code Web UI, your app)
@@ -290,13 +296,13 @@ The ecosystem, grouped by layer. Each name links to the package's repository.
290
296
  |---|---|---|
291
297
  | [AbstractCode](https://github.com/lpalbou/AbstractCode) | Terminal agentic dev client (Rust, on the AbstractTUI engine) — durable sessions, tool approvals, the gateway's default workflow, workspace files, live replies | `cargo install abstractcode`, or a prebuilt binary from the [GitHub release](https://github.com/lpalbou/AbstractCode/releases) |
292
298
  | [AbstractAssistant](https://github.com/lpalbou/AbstractAssistant) | macOS tray client — gateway-native, follows the gateway's default workflow or your pick, live replies, voice support | `pip install abstractassistant`, or **Open** in the gateway console (starts it signed in) |
293
- | [AbstractObserver](https://github.com/lpalbou/AbstractObserver) | Browser UI — monitor, control, and schedule gateway runs | `npx @abstractframework/observer` |
294
- | [AbstractEntity](https://github.com/lpalbou/AbstractEntity) | Summoned-entity manager — roster, blueprint (cognition map + editing), chat drawer, live replay | `npx @abstractframework/entity` |
295
- | [AbstractContinuum](https://github.com/lpalbou/AbstractContinuum) | Continuous iterative development and deployment console | `npx @abstractframework/continuum` |
296
- | **Gateway consoles** | Operator consoles for a running gateway: web at `/console` (first-run guide, Models, Engines, providers, users), terminal via `abstractgateway-console` (the same setup guide and twelve screens, for headless hosts) | built into `abstractgateway`; built by the installer, or `cargo install abstractgateway-console` |
299
+ | [AbstractObserver](https://github.com/lpalbou/AbstractObserver) | Browser UI — monitor, control, and schedule gateway runs | the gateway console's **Apps** page (served at `/apps/observer/`), or `npx @abstractframework/observer --gateway-url <url>` |
300
+ | [AbstractEntity](https://github.com/lpalbou/AbstractEntity) | Summoned-entity manager — roster, blueprint (cognition map + editing), chat drawer, live replay | the gateway console's **Apps** page (served at `/apps/entity/`), or `npx @abstractframework/entity --gateway-url <url>` |
301
+ | [AbstractContinuum](https://github.com/lpalbou/AbstractContinuum) | Continuous iterative development and deployment console | the gateway console's **Apps** page (served at `/apps/continuum/`), or `npx @abstractframework/continuum --gateway-url <url>` |
302
+ | **Gateway consoles** | Operator consoles for a running gateway: web at `/console` (first-run guide, Models, Engines, providers, users), terminal via `abstractgateway-console` (the same setup guide and screens, Network and Apps included, for headless hosts) | built into `abstractgateway`; built by the installer, or `cargo install abstractgateway-console` |
297
303
  | **Core consoles** | Consoles for AbstractCore: web at `/console` of `abstractcore serve`, terminal via `abstractcore-console` (config, Models, Engines) | built into `abstractcore`; `cargo install abstractcore-console` |
298
- | **Code Web UI** | Browser client of AbstractCode (gateway-backed): workflow selector, Files tab, live replies | `npx @abstractframework/code` |
299
- | **Flow Editor** | Visual workflow authoring in the browser | `npx @abstractframework/flow` |
304
+ | **Code Web UI** | Browser client of AbstractCode (gateway-backed): workflow selector, Files tab, live replies | the gateway console's **Apps** page (served at `/apps/code/`), or `npx @abstractframework/code --gateway-url <url>` |
305
+ | **Flow Editor** | Visual workflow authoring in the browser | the gateway console's **Apps** page (served at `/apps/flow/`), or `npx @abstractframework/flow --gateway-url <url>` |
300
306
 
301
307
  ### Shared libraries
302
308
 
@@ -338,7 +344,7 @@ pip install "abstractframework[gpu]"
338
344
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
339
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+) |
340
346
 
341
- ### Release matrix (abstractframework 0.5.0)
347
+ ### Release matrix (abstractframework 0.6.0)
342
348
 
343
349
  `abstractframework` pins every Python package with `==`, so one version of the
344
350
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -347,28 +353,28 @@ and tested together.
347
353
 
348
354
  | Registry | Package | Version |
349
355
  |---|---|---|
350
- | PyPI | `abstractgateway` | 0.6.0 |
351
- | PyPI | `abstractassistant` | 0.8.0 |
352
- | PyPI | `abstractcore` | 2.17.0 |
353
- | PyPI | `AbstractRuntime` | 0.6.0 |
354
- | PyPI | `abstractagent` | 0.3.16 |
356
+ | PyPI | `abstractgateway` | 0.7.0 |
357
+ | PyPI | `abstractassistant` | 0.9.0 |
358
+ | PyPI | `abstractcore` | 2.18.0 |
359
+ | PyPI | `AbstractRuntime` | 0.7.1 |
360
+ | PyPI | `abstractagent` | 0.3.17 |
355
361
  | PyPI | `abstractskill` | 0.3.0 |
356
362
  | PyPI | `AbstractMemory` | 0.3.0 |
357
363
  | PyPI | `abstractsemantics` | 0.0.5 |
358
- | PyPI | `abstractvoice` | 0.12.0 |
364
+ | PyPI | `abstractvoice` | 0.13.0 |
359
365
  | PyPI | `abstractvision` | 0.3.30 |
360
366
  | PyPI | `abstractmusic` | 0.1.15 |
361
- | npm | `@abstractframework/flow` | 0.3.22 |
362
- | npm | `@abstractframework/code` | 0.5.0 |
363
- | npm | `@abstractframework/observer` | 0.1.14 |
364
- | npm | `@abstractframework/continuum` | 0.3.2 |
365
- | npm | `@abstractframework/entity` | 0.2.2 |
366
- | crates.io | `abstractcode` | 0.6.0 |
367
- | crates.io | `abstractgateway-console` | 0.10.0 |
368
- | crates.io | `abstractcore-console` | 0.3.0 |
367
+ | npm | `@abstractframework/flow` | 0.4.0 |
368
+ | npm | `@abstractframework/code` | 0.6.0 |
369
+ | npm | `@abstractframework/observer` | 0.2.0 |
370
+ | npm | `@abstractframework/continuum` | 0.4.0 |
371
+ | npm | `@abstractframework/entity` | 0.3.0 |
372
+ | crates.io | `abstractcode` | 0.7.0 |
373
+ | crates.io | `abstractgateway-console` | 0.11.0 |
374
+ | crates.io | `abstractcore-console` | 0.4.0 |
369
375
  | crates.io | `abstracttui` | 0.6.0 |
370
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.6.0 (`gpu-latest` / `<version>-gpu` experimental) |
371
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.17.0 |
376
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.7.0 (`gpu-latest` / `<version>-gpu` experimental) |
377
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.18.0 |
372
378
 
373
379
  Optional add-ons that are not part of any profile install separately:
374
380
  `pip install abstract3d` (0.3.1) and `pip install abstractcamera` (0.2.0). `abstractskill` (pinned above)
@@ -20,11 +20,14 @@ Think of it as an **agentic OS**: durable runs + replay-first observability + mu
20
20
  ## Quick start
21
21
 
22
22
  The installer sets up the gateway in your user account (no admin password, no system Python),
23
- asks whether to start it at login, starts it on `127.0.0.1:8080`, and opens its web console in
24
- your browser already signed in. A first-run guide then sets up a local engine (Ollama, LM Studio,
25
- MLX, llama.cpp), downloads a model that fits your machine, and lists the apps. The installer also
26
- builds the terminal console, `abstractgateway-console`, which runs the same guide on a server without
27
- a browser ([Headless or remote machine](docs/install.md#headless-or-remote-machine)).
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)).
28
31
 
29
32
  - **Mac, no Terminal:** download and double-click
30
33
  [AbstractFramework-Installer.pkg](https://github.com/lpalbou/AbstractFramework/releases/latest/download/AbstractFramework-Installer.pkg).
@@ -34,7 +37,7 @@ a browser ([Headless or remote machine](docs/install.md#headless-or-remote-machi
34
37
  - **macOS / Linux, one line:**
35
38
 
36
39
  ```bash
37
- curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.sh | sh -s -- --interactive
40
+ curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.sh | sh
38
41
  ```
39
42
 
40
43
  - **Windows 10 22H2+ / 11** (PowerShell):
@@ -116,7 +119,8 @@ With no auth configured, `abstractgateway serve` binds `127.0.0.1:8080`, enables
116
119
  creates `default/admin` in the per-user data folder, and prints a one-time sign-in link
117
120
  (`http://127.0.0.1:8080/console#claim=…`, valid 10 minutes, this machine only). Open it to reach the
118
121
  web console and its first-run guide. `abstractgateway claim` mints a new link;
119
- `abstractgateway service install` starts the gateway at login.
122
+ `abstractgateway service enable` (or the console's **Start at login** switch) starts the gateway at
123
+ login.
120
124
 
121
125
  Browser apps on `http://localhost:*` and `http://127.0.0.1:*` may always call it. To choose
122
126
  another data folder or allow another browser origin:
@@ -138,17 +142,19 @@ AbstractFlow, AbstractCode Web or AbstractObserver, or to the console without a
138
142
  `ABSTRACTGATEWAY_AUTH_TOKEN` remains a legacy server/operator bearer token; it is not a browser
139
143
  sign-in token.
140
144
 
141
- Monitor runs from a browser, or from a terminal with the gateway console:
145
+ Monitor runs from a browser, or from a terminal with the gateway console. The console's **Apps**
146
+ page installs and opens the browser apps, served by the gateway at `/apps/<app>/`
147
+ (`http://127.0.0.1:8080/apps/observer/`), so one address (and one SSH tunnel) reaches them all:
142
148
 
143
149
  ```bash
144
- npx @abstractframework/observer # open http://localhost:3001
150
+ npx @abstractframework/observer --gateway-url http://127.0.0.1:8080 # or run one on its own
145
151
 
146
152
  cargo install abstractgateway-console # Rust 1.87+; the installer builds it for you
147
- abstractgateway-console --url http://127.0.0.1:8080 --token <admin token> # <data dir>/auth/bootstrap-admin-token
153
+ abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token> # <data dir>/auth/bootstrap-admin-token
148
154
  ```
149
155
 
150
156
  Container images are published for the gateway and the AbstractCore server:
151
- `ghcr.io/lpalbou/abstractgateway:0.6.0` and `ghcr.io/lpalbou/abstractcore-server:2.17.0`.
157
+ `ghcr.io/lpalbou/abstractgateway:0.7.0` and `ghcr.io/lpalbou/abstractcore-server:2.18.0`.
152
158
 
153
159
  For artifact and runtime-resource investigation, see
154
160
  [Runtime artifacts and retrieval](docs/guide/runtime-artifacts.md).
@@ -186,7 +192,7 @@ See [Agent sessions](docs/agent-sessions.md).
186
192
 
187
193
  AbstractFlow lets you author complex agentic orchestration as portable `.flow` bundles:
188
194
 
189
- 1. Open the Flow Editor (`npx @abstractframework/flow`)
195
+ 1. Open the Flow Editor (the console's **Apps** page, or `npx @abstractframework/flow --gateway-url <url>`)
190
196
  2. Build a workflow: LLM steps, tool steps, branching, loops, subflows
191
197
  3. Export a `.flow` bundle into your own bundle directory and point `ABSTRACTGATEWAY_FLOWS_DIR` at it (or publish it through the Gateway API)
192
198
  4. Run it from any gateway-backed client (Observer, AbstractAssistant, Code Web UI, your app)
@@ -246,13 +252,13 @@ The ecosystem, grouped by layer. Each name links to the package's repository.
246
252
  |---|---|---|
247
253
  | [AbstractCode](https://github.com/lpalbou/AbstractCode) | Terminal agentic dev client (Rust, on the AbstractTUI engine) — durable sessions, tool approvals, the gateway's default workflow, workspace files, live replies | `cargo install abstractcode`, or a prebuilt binary from the [GitHub release](https://github.com/lpalbou/AbstractCode/releases) |
248
254
  | [AbstractAssistant](https://github.com/lpalbou/AbstractAssistant) | macOS tray client — gateway-native, follows the gateway's default workflow or your pick, live replies, voice support | `pip install abstractassistant`, or **Open** in the gateway console (starts it signed in) |
249
- | [AbstractObserver](https://github.com/lpalbou/AbstractObserver) | Browser UI — monitor, control, and schedule gateway runs | `npx @abstractframework/observer` |
250
- | [AbstractEntity](https://github.com/lpalbou/AbstractEntity) | Summoned-entity manager — roster, blueprint (cognition map + editing), chat drawer, live replay | `npx @abstractframework/entity` |
251
- | [AbstractContinuum](https://github.com/lpalbou/AbstractContinuum) | Continuous iterative development and deployment console | `npx @abstractframework/continuum` |
252
- | **Gateway consoles** | Operator consoles for a running gateway: web at `/console` (first-run guide, Models, Engines, providers, users), terminal via `abstractgateway-console` (the same setup guide and twelve screens, for headless hosts) | built into `abstractgateway`; built by the installer, or `cargo install abstractgateway-console` |
255
+ | [AbstractObserver](https://github.com/lpalbou/AbstractObserver) | Browser UI — monitor, control, and schedule gateway runs | the gateway console's **Apps** page (served at `/apps/observer/`), or `npx @abstractframework/observer --gateway-url <url>` |
256
+ | [AbstractEntity](https://github.com/lpalbou/AbstractEntity) | Summoned-entity manager — roster, blueprint (cognition map + editing), chat drawer, live replay | the gateway console's **Apps** page (served at `/apps/entity/`), or `npx @abstractframework/entity --gateway-url <url>` |
257
+ | [AbstractContinuum](https://github.com/lpalbou/AbstractContinuum) | Continuous iterative development and deployment console | the gateway console's **Apps** page (served at `/apps/continuum/`), or `npx @abstractframework/continuum --gateway-url <url>` |
258
+ | **Gateway consoles** | Operator consoles for a running gateway: web at `/console` (first-run guide, Models, Engines, providers, users), terminal via `abstractgateway-console` (the same setup guide and screens, Network and Apps included, for headless hosts) | built into `abstractgateway`; built by the installer, or `cargo install abstractgateway-console` |
253
259
  | **Core consoles** | Consoles for AbstractCore: web at `/console` of `abstractcore serve`, terminal via `abstractcore-console` (config, Models, Engines) | built into `abstractcore`; `cargo install abstractcore-console` |
254
- | **Code Web UI** | Browser client of AbstractCode (gateway-backed): workflow selector, Files tab, live replies | `npx @abstractframework/code` |
255
- | **Flow Editor** | Visual workflow authoring in the browser | `npx @abstractframework/flow` |
260
+ | **Code Web UI** | Browser client of AbstractCode (gateway-backed): workflow selector, Files tab, live replies | the gateway console's **Apps** page (served at `/apps/code/`), or `npx @abstractframework/code --gateway-url <url>` |
261
+ | **Flow Editor** | Visual workflow authoring in the browser | the gateway console's **Apps** page (served at `/apps/flow/`), or `npx @abstractframework/flow --gateway-url <url>` |
256
262
 
257
263
  ### Shared libraries
258
264
 
@@ -294,7 +300,7 @@ pip install "abstractframework[gpu]"
294
300
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
295
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+) |
296
302
 
297
- ### Release matrix (abstractframework 0.5.0)
303
+ ### Release matrix (abstractframework 0.6.0)
298
304
 
299
305
  `abstractframework` pins every Python package with `==`, so one version of the
300
306
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -303,28 +309,28 @@ and tested together.
303
309
 
304
310
  | Registry | Package | Version |
305
311
  |---|---|---|
306
- | PyPI | `abstractgateway` | 0.6.0 |
307
- | PyPI | `abstractassistant` | 0.8.0 |
308
- | PyPI | `abstractcore` | 2.17.0 |
309
- | PyPI | `AbstractRuntime` | 0.6.0 |
310
- | PyPI | `abstractagent` | 0.3.16 |
312
+ | PyPI | `abstractgateway` | 0.7.0 |
313
+ | PyPI | `abstractassistant` | 0.9.0 |
314
+ | PyPI | `abstractcore` | 2.18.0 |
315
+ | PyPI | `AbstractRuntime` | 0.7.1 |
316
+ | PyPI | `abstractagent` | 0.3.17 |
311
317
  | PyPI | `abstractskill` | 0.3.0 |
312
318
  | PyPI | `AbstractMemory` | 0.3.0 |
313
319
  | PyPI | `abstractsemantics` | 0.0.5 |
314
- | PyPI | `abstractvoice` | 0.12.0 |
320
+ | PyPI | `abstractvoice` | 0.13.0 |
315
321
  | PyPI | `abstractvision` | 0.3.30 |
316
322
  | PyPI | `abstractmusic` | 0.1.15 |
317
- | npm | `@abstractframework/flow` | 0.3.22 |
318
- | npm | `@abstractframework/code` | 0.5.0 |
319
- | npm | `@abstractframework/observer` | 0.1.14 |
320
- | npm | `@abstractframework/continuum` | 0.3.2 |
321
- | npm | `@abstractframework/entity` | 0.2.2 |
322
- | crates.io | `abstractcode` | 0.6.0 |
323
- | crates.io | `abstractgateway-console` | 0.10.0 |
324
- | crates.io | `abstractcore-console` | 0.3.0 |
323
+ | npm | `@abstractframework/flow` | 0.4.0 |
324
+ | npm | `@abstractframework/code` | 0.6.0 |
325
+ | npm | `@abstractframework/observer` | 0.2.0 |
326
+ | npm | `@abstractframework/continuum` | 0.4.0 |
327
+ | npm | `@abstractframework/entity` | 0.3.0 |
328
+ | crates.io | `abstractcode` | 0.7.0 |
329
+ | crates.io | `abstractgateway-console` | 0.11.0 |
330
+ | crates.io | `abstractcore-console` | 0.4.0 |
325
331
  | crates.io | `abstracttui` | 0.6.0 |
326
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.6.0 (`gpu-latest` / `<version>-gpu` experimental) |
327
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.17.0 |
332
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.7.0 (`gpu-latest` / `<version>-gpu` experimental) |
333
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.18.0 |
328
334
 
329
335
  Optional add-ons that are not part of any profile install separately:
330
336
  `pip install abstract3d` (0.3.1) and `pip install abstractcamera` (0.2.0). `abstractskill` (pinned above)
@@ -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.5.0"
13
+ __version__ = "0.6.0"
14
14
  __author__ = "Laurent-Philippe Albou"
15
15
  __license__ = "MIT"
16
16
 
17
17
  RELEASE_VERSIONS: dict[str, str] = {
18
- "abstractcore": "2.17.0",
19
- "abstractruntime": "0.6.0",
20
- "abstractagent": "0.3.16",
21
- "abstractgateway": "0.6.0",
18
+ "abstractcore": "2.18.0",
19
+ "abstractruntime": "0.7.1",
20
+ "abstractagent": "0.3.17",
21
+ "abstractgateway": "0.7.0",
22
22
  "abstractskill": "0.3.0",
23
23
  "abstractmemory": "0.3.0",
24
24
  "abstractsemantics": "0.0.5",
25
- "abstractvoice": "0.12.0",
25
+ "abstractvoice": "0.13.0",
26
26
  "abstractvision": "0.3.30",
27
27
  "abstractmusic": "0.1.15",
28
- "abstractassistant": "0.8.0",
28
+ "abstractassistant": "0.9.0",
29
29
  }
30
30
 
31
31
  PACKAGE_DISTRIBUTIONS: dict[str, str] = {
@@ -43,19 +43,19 @@ PACKAGE_DISTRIBUTIONS: dict[str, str] = {
43
43
  }
44
44
 
45
45
  NPM_RELEASE_VERSIONS: dict[str, str] = {
46
- "@abstractframework/flow": "0.3.22",
47
- "@abstractframework/code": "0.5.0",
48
- "@abstractframework/observer": "0.1.14",
49
- "@abstractframework/continuum": "0.3.2",
50
- "@abstractframework/entity": "0.2.2",
46
+ "@abstractframework/flow": "0.4.0",
47
+ "@abstractframework/code": "0.6.0",
48
+ "@abstractframework/observer": "0.2.0",
49
+ "@abstractframework/continuum": "0.4.0",
50
+ "@abstractframework/entity": "0.3.0",
51
51
  }
52
52
 
53
53
  # Terminal tools published on crates.io alongside this release (installed with `cargo install`,
54
54
  # or by the bootstrap scripts: the gateway console by default, abstractcode with --with-code-cli).
55
55
  CRATE_RELEASE_VERSIONS: dict[str, str] = {
56
- "abstractgateway-console": "0.10.0",
57
- "abstractcore-console": "0.3.0",
58
- "abstractcode": "0.6.0",
56
+ "abstractgateway-console": "0.11.0",
57
+ "abstractcore-console": "0.4.0",
58
+ "abstractcode": "0.7.0",
59
59
  "abstracttui": "0.6.0",
60
60
  }
61
61
 
@@ -50,7 +50,8 @@ BOOTSTRAP_FLAGS: list[dict[str, str]] = [
50
50
  {"sh": "--no-service", "ps": "-NoService", "env": "",
51
51
  "summary": "Do not register a login service; start the gateway in the background."},
52
52
  {"sh": "--no-start", "ps": "-NoStart", "env": "", "summary": "Install only."},
53
- {"sh": "--no-open", "ps": "-NoOpen", "env": "", "summary": "Do not open the browser."},
53
+ {"sh": "--no-open", "ps": "-NoOpen", "env": "",
54
+ "summary": "Do not open the browser (on a remote or headless session: do not open the terminal console)."},
54
55
  {"sh": "--print", "ps": "-Print", "env": "",
55
56
  "summary": "Dry run: preflight, then print every command; change nothing."},
56
57
  {"sh": "--uninstall [--purge]", "ps": "-Uninstall [-Purge]", "env": "",