abstractframework 0.4.2__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.4.2 → abstractframework-0.6.0}/CHANGELOG.md +192 -0
  2. {abstractframework-0.4.2/abstractframework.egg-info → abstractframework-0.6.0}/PKG-INFO +58 -49
  3. {abstractframework-0.4.2 → abstractframework-0.6.0}/README.md +46 -37
  4. {abstractframework-0.4.2 → abstractframework-0.6.0}/abstractframework/__init__.py +17 -17
  5. {abstractframework-0.4.2 → abstractframework-0.6.0}/abstractframework/install_manifest.py +6 -3
  6. {abstractframework-0.4.2 → abstractframework-0.6.0/abstractframework.egg-info}/PKG-INFO +58 -49
  7. {abstractframework-0.4.2 → abstractframework-0.6.0}/abstractframework.egg-info/SOURCES.txt +1 -0
  8. abstractframework-0.6.0/abstractframework.egg-info/requires.txt +21 -0
  9. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/README.md +4 -3
  10. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/api.md +34 -12
  11. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/architecture.md +56 -10
  12. abstractframework-0.6.0/docs/automations.md +500 -0
  13. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/configuration.md +12 -13
  14. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/faq.md +31 -8
  15. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/getting-started.md +45 -23
  16. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/glossary.md +30 -3
  17. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/install.md +142 -57
  18. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/installers/components.md +1 -1
  19. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/installers/implementation-plan.md +1 -1
  20. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/installers/user-journeys.md +8 -5
  21. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/troubleshooting.md +13 -3
  22. {abstractframework-0.4.2 → abstractframework-0.6.0}/llms-full.txt +970 -215
  23. {abstractframework-0.4.2 → abstractframework-0.6.0}/llms.txt +10 -7
  24. {abstractframework-0.4.2 → abstractframework-0.6.0}/pyproject.toml +12 -12
  25. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/check_identity_sync.py +42 -0
  26. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/install.sh +408 -64
  27. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/tests/test_install_user_path.sh +237 -11
  28. {abstractframework-0.4.2 → abstractframework-0.6.0}/tests/test_install_profiles.py +141 -6
  29. abstractframework-0.4.2/abstractframework.egg-info/requires.txt +0 -21
  30. {abstractframework-0.4.2 → abstractframework-0.6.0}/LICENSE +0 -0
  31. {abstractframework-0.4.2 → abstractframework-0.6.0}/MANIFEST.in +0 -0
  32. {abstractframework-0.4.2 → abstractframework-0.6.0}/abstractframework/__main__.py +0 -0
  33. {abstractframework-0.4.2 → abstractframework-0.6.0}/abstractframework/cli.py +0 -0
  34. {abstractframework-0.4.2 → abstractframework-0.6.0}/abstractframework/py.typed +0 -0
  35. {abstractframework-0.4.2 → abstractframework-0.6.0}/abstractframework.egg-info/dependency_links.txt +0 -0
  36. {abstractframework-0.4.2 → abstractframework-0.6.0}/abstractframework.egg-info/entry_points.txt +0 -0
  37. {abstractframework-0.4.2 → abstractframework-0.6.0}/abstractframework.egg-info/top_level.txt +0 -0
  38. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0001-layered-architecture.md +0 -0
  39. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0002-effect-system-design.md +0 -0
  40. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0003-tool-system-architecture.md +0 -0
  41. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0004-observability-strategy.md +0 -0
  42. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0005-memory-architecture.md +0 -0
  43. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0006-durable-tool-execution.md +0 -0
  44. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0007-active-context-and-memory-provenance.md +0 -0
  45. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0008-token-terminology.md +0 -0
  46. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0009-connected-memory-recall-and-provenance.md +0 -0
  47. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0010-runtime-owned-node-traces.md +0 -0
  48. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0011-ledger-subscriptions-and-event-bridge.md +0 -0
  49. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0012-portable-workflowartifact.md +0 -0
  50. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0013-durable-run-controls-pause-resume-cancel.md +0 -0
  51. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0014-runtime-authority-timeouts.md +0 -0
  52. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0015-execution-targets-and-remote-tool-workers.md +0 -0
  53. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0016-tool-calling-pipeline-and-responsibility-boundaries.md +0 -0
  54. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0017-host-ui-events-and-durable-prompts.md +0 -0
  55. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0018-durable-run-gateway-and-remote-host-control-plane.md +0 -0
  56. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0019-testing-strategy-and-levels.md +0 -0
  57. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0020-agent-host-pool-and-orchestrator-placement.md +0 -0
  58. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0021-deployment-topologies-and-supported-scenarios.md +0 -0
  59. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0022-orchestrator-host-and-runtime-daemonization.md +0 -0
  60. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0023-file-attachment-path-resolution-and-authorization.md +0 -0
  61. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0024-attachment-placeholders-and-compaction-invariants.md +0 -0
  62. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0025-kg-entity-normalization-and-dedup.md +0 -0
  63. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0026-truncation-policy-and-contract.md +0 -0
  64. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0027-timeout-policy-and-contract.md +0 -0
  65. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0028-capabilities-plugins-and-library-framework-modes.md +0 -0
  66. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0029-permissive-dependency-and-licensing-policy.md +0 -0
  67. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0030-security-test-fixtures-and-isolation.md +0 -0
  68. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0031-workflow-llm-routing-overrides-provider-model-and-base-url.md +0 -0
  69. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0032-package-dependency-boundaries-and-gateway-first-apps.md +0 -0
  70. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0033-install-profiles-config-entrypoints-and-server-boundaries.md +0 -0
  71. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0034-framework-release-sequence-and-gates.md +0 -0
  72. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0035-capability-routing-defaults.md +0 -0
  73. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0036-artifact-descriptor-contract.md +0 -0
  74. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0037-hosted-file-source-contract-and-workspacepath-authority.md +0 -0
  75. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/0038-script-bootstrap-and-gateway-console-install.md +0 -0
  76. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/README.md +0 -0
  77. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/memory-recall-levels.md +0 -0
  78. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/reorg/001_music_as_capability_plugin_via_acestep_api.md +0 -0
  79. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/reorg/002_abstractmusic_inprocess_local_generation.md +0 -0
  80. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/reorg/003_abstractmusic_acestep_v15_backend_source_strategy.md +0 -0
  81. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/reorg/004_smartnote_thin_client_architecture.md +0 -0
  82. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/reorg/005_smartnote_artifact_first_cards.md +0 -0
  83. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/reorg/2026-02-21_gateway-first-assistant.md +0 -0
  84. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/reorg/2026-02-21_installer_manager_strategy.md +0 -0
  85. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/adr/reorg/2026-02-21_macos_installer_manager.md +0 -0
  86. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/agent-sessions.md +0 -0
  87. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/claude/README.md +0 -0
  88. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/claude/abstractframework-fit.md +0 -0
  89. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/claude/claude-skills-overview.md +0 -0
  90. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/claude/claude-skills-sources.md +0 -0
  91. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/claude/claude-skills-top-20.md +0 -0
  92. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/comparisons/README.md +0 -0
  93. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/guide/LANDING.md +0 -0
  94. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/guide/README.md +0 -0
  95. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/guide/agent-skills.md +0 -0
  96. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/guide/agent-vs-llm.md +0 -0
  97. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/guide/agora-workflow-agent.md +0 -0
  98. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/guide/apple-local-gateway-flow.md +0 -0
  99. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/guide/capability-plugins.md +0 -0
  100. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/guide/capability-routing-defaults.md +0 -0
  101. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/guide/deployment-iphone.md +0 -0
  102. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/guide/deployment-topologies.md +0 -0
  103. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/guide/deployment-web.md +0 -0
  104. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/guide/email-integration.md +0 -0
  105. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/guide/event-inbox-agent.md +0 -0
  106. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/guide/flow-and-kg-memory.md +0 -0
  107. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/guide/gateway-security.md +0 -0
  108. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/guide/headless-swarm.md +0 -0
  109. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/guide/process-manager-env-vars.md +0 -0
  110. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/guide/prompt-caching.md +0 -0
  111. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/guide/runtime-artifacts.md +0 -0
  112. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/guide/runtime-scope.md +0 -0
  113. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/guide/scheduled-workflows.md +0 -0
  114. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/guide/summoned-entities.md +0 -0
  115. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/guide/telegram-integration.md +0 -0
  116. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/guide/workflow-bundles.md +0 -0
  117. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/installers/README.md +0 -0
  118. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/installers/operations-and-support.md +0 -0
  119. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/installers/release-and-manifest.md +0 -0
  120. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/installers/security-and-os-blocks.md +0 -0
  121. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/installers/strategy.md +0 -0
  122. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/prompts/agora-collaboration.md +0 -0
  123. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/scenarios/README.md +0 -0
  124. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/scenarios/email-inbox-agent.md +0 -0
  125. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/scenarios/gateway-first-local-dev.md +0 -0
  126. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/scenarios/offline-coding-assistant.md +0 -0
  127. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/scenarios/phone-thin-client.md +0 -0
  128. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/scenarios/specialized-agent-flow.md +0 -0
  129. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/scenarios/telegram-permanent-contact.md +0 -0
  130. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/scenarios/workflow-bundle-lifecycle.md +0 -0
  131. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/skills/README.md +0 -0
  132. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/skills/abstractframework-agent-skills-fit.md +0 -0
  133. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/skills/abstractframework-architecture-deep-dive.md +0 -0
  134. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/skills/agent-skills-ecosystem-scan.md +0 -0
  135. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/skills/agent-skills-ecosystem-sources.md +0 -0
  136. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/skills/claude-agent-skills-overview.md +0 -0
  137. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/skills/claude-agent-skills-sources.md +0 -0
  138. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/skills/claude-agent-skills-top-20.md +0 -0
  139. {abstractframework-0.4.2 → abstractframework-0.6.0}/docs/workspace-scripts.md +0 -0
  140. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/af-local.sh +0 -0
  141. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/af.sh +0 -0
  142. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/agora_react_flow_smoke.py +0 -0
  143. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/assistant-local.sh +0 -0
  144. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/assistant.sh +0 -0
  145. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/build.sh +0 -0
  146. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/cache_probe_local_backends.py +0 -0
  147. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/cache_steer_repl.py +0 -0
  148. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/clone.sh +0 -0
  149. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/code-local.sh +0 -0
  150. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/code.sh +0 -0
  151. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/commit.sh +0 -0
  152. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/console-local.sh +0 -0
  153. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/console.sh +0 -0
  154. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/core_operator_drive.py +0 -0
  155. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/deps.sh +0 -0
  156. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/entity-local.sh +0 -0
  157. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/entity.sh +0 -0
  158. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/event_inbox_flow_smoke.py +0 -0
  159. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/flow-local.sh +0 -0
  160. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/flow.sh +0 -0
  161. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/gateway-flow-local.sh +0 -0
  162. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/gateway-flow.sh +0 -0
  163. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/gateway-local.sh +0 -0
  164. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/gateway.sh +0 -0
  165. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/gen_llms_full.py +0 -0
  166. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/headless_fleet_bridge.py +0 -0
  167. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/headless_fleet_demo.py +0 -0
  168. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/headless_steer_repl.py +0 -0
  169. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/lib/af_inventory.py +0 -0
  170. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/lib/af_stack.sh +0 -0
  171. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/lib/af_supervisor.sh +0 -0
  172. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/lib/apps_common.sh +0 -0
  173. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/lib/build_macos_installer.sh +0 -0
  174. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/lib/gateway_user_tokens.py +0 -0
  175. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/lib/repo_groups.sh +0 -0
  176. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/meet_castor.sh +0 -0
  177. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/observer-local.sh +0 -0
  178. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/observer.sh +0 -0
  179. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/plan_walkthrough.py +0 -0
  180. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/pull.sh +0 -0
  181. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/push.sh +0 -0
  182. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/spawn_demo_agent.sh +0 -0
  183. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/start-local.sh +0 -0
  184. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/start.sh +0 -0
  185. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/status.sh +0 -0
  186. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/steer_repl.py +0 -0
  187. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/tests/test_af_supervisor.sh +0 -0
  188. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/tests/test_inventory.sh +0 -0
  189. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/tests/test_repo_scripts.sh +0 -0
  190. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/uninstall.sh +0 -0
  191. {abstractframework-0.4.2 → abstractframework-0.6.0}/scripts/visit_resume_cache_probe.py +0 -0
  192. {abstractframework-0.4.2 → abstractframework-0.6.0}/setup.cfg +0 -0
  193. {abstractframework-0.4.2 → abstractframework-0.6.0}/tests/test_llms_full.py +0 -0
@@ -4,6 +4,198 @@ 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
+
127
+ ## [0.5.0] - 2026-09-27
128
+
129
+ Automations, a terminal console installed by default, and a headless setup path: installing and
130
+ configuring AbstractFramework on a remote Linux server without a browser works like it does on a Mac.
131
+
132
+ ### Added
133
+
134
+ - **Automations v1.** Run a workflow or the gateway's default agent again and again on a fixed UTC
135
+ interval or on request, read every run as a chat turn, and be notified only when a run asks for
136
+ you or fails. Create and manage them in the Assistant (session switcher, **Automations** tab), the
137
+ Observer (**Launch → Automate**, **Automations** page) or from a workflow's automation defaults in
138
+ the Flow editor. See [Automations](docs/automations.md).
139
+ - **The terminal console is installed by default.** The installer builds `abstractgateway-console`
140
+ with cargo next to the `abstractgateway` command. On macOS and Linux, when cargo is missing or
141
+ older than Rust 1.87, it adds Rust with rustup, user-scoped (`~/.rustup`, `~/.cargo`, about
142
+ 600 MB, shell profile untouched); Windows builds it when Rust is already installed. The build
143
+ needs a C compiler; without one, or if it fails, the installer says why and continues.
144
+ `--no-console` (`-NoConsole`) skips it; `--with-console` is accepted and has no effect. The
145
+ uninstaller removes the console it built and keeps Rust.
146
+ - **Both consoles in the installer summary.** The summary shows the web console link and the
147
+ terminal console command, `abstractgateway-console --url <gateway> --token-file <data dir>/auth/bootstrap-admin-token`:
148
+ the token is read from the gateway's data dir and never appears on the command line or in the
149
+ environment.
150
+ - **Headless or remote machine** ([Install](docs/install.md#headless-or-remote-machine)): configure
151
+ the gateway from the terminal console on the server, or tunnel the web console over SSH.
152
+ - **The terminal console matches the web console** (`abstractgateway-console` 0.10.0): the setup
153
+ guide for a headless first run (Connection, Setup, Engines, Providers, Routes, Models, Apps,
154
+ Review), twelve screens including **Setup** and **A Apps**, the **F2** docs assistant, the **F3**
155
+ host panel, every sandbox mode, entity summon and workflow import, with the same admin rules.
156
+ `abstractcore-console` 0.3.0 adds Hugging Face search, parallel downloads, engine start/stop and
157
+ a video filter to the shared Models and Engines screens.
158
+ - **Recommended defaults fit the machine** (AbstractCore 2.17.0): every recommended route is written
159
+ only where its engine runs, and a route this computer cannot run says why. Video joins the model
160
+ catalog and the recommendations (MLX-Gen Wan2.2 TI2V-5B on Apple silicon with enough memory), and
161
+ the web console has a **Video** filter and card.
162
+
163
+ ### Changed
164
+
165
+ - **App hints use launch flags.** With `--with-apps`, the installer prints
166
+ `npx -y @abstractframework/flow@<version> --gateway-url <gateway>` (Continuum likewise); Code,
167
+ Observer and Entity take a gateway other than `http://127.0.0.1:8080` on their sign-in screen.
168
+ `--with-code-cli` prints `abstractcode --gateway <gateway>`.
169
+
170
+ ### Changed (pins)
171
+
172
+ - **abstractgateway 0.6.0** (was 0.5.1): the Automations API, run lists attributed to automations,
173
+ web console video and host-aware routes, and the terminal console 0.10.0.
174
+ - **abstractcore 2.17.0** (was 2.16.1): host-aware recommended defaults, video models and routes,
175
+ `route_unavailable` on routes this computer cannot run, a voice-clone fix for local engines.
176
+ - **AbstractRuntime 0.6.0** (was 0.5.1): the durable automation controller and its occurrences.
177
+ - **abstractassistant 0.8.0** (was 0.7.0): automations in the session switcher (schedule a
178
+ conversation, read runs as a chat, answer waiting runs, discuss a run); it finds a gateway the
179
+ installer moved off a busy port 8080.
180
+ - **abstractvoice 0.12.0** (was 0.11.4): Qwen3-TTS checkpoint selection, directed speech and a
181
+ steadier codebook predictor.
182
+ - **abstractvision 0.3.30** (was 0.3.29): unloading an MLX-Gen model returns its memory to the
183
+ operating system.
184
+ - npm: **@abstractframework/flow 0.3.22** (automation defaults on workflows) and
185
+ **@abstractframework/observer 0.1.14** (Automate mode and the Automations page).
186
+ - crates.io: **abstractgateway-console 0.10.0** and **abstractcore-console 0.3.0**.
187
+ - The pins apply to the base install and to the `apple` / `gpu` extras. Unchanged:
188
+ abstractagent 0.3.16, abstractskill 0.3.0, AbstractMemory 0.3.0, abstractsemantics 0.0.5,
189
+ abstractmusic 0.1.15, @abstractframework/code 0.5.0, continuum 0.3.2, entity 0.2.2,
190
+ `abstractcode` 0.6.0 and `abstracttui` 0.6.0.
191
+
192
+ ### Documentation
193
+
194
+ - **Automations guide** ([docs/automations.md](docs/automations.md)): how automations work, creating
195
+ them from each client, two worked examples, managing them, notifications and typed waits, restart
196
+ safety, limits and troubleshooting. A discussion about a run works in its own folder with the
197
+ automation's folder mounted read-only.
198
+
7
199
  ## [0.4.2] - 2026-09-27
8
200
 
9
201
  A patch release for the uninstaller and two package updates.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstractframework
3
- Version: 0.4.2
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.5.1
27
- Requires-Dist: abstractassistant==0.7.0
28
- Requires-Dist: abstractcore==2.16.1
29
- Requires-Dist: AbstractRuntime==0.5.1
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.11.4
35
- Requires-Dist: abstractvision==0.3.29
34
+ Requires-Dist: abstractvoice==0.13.0
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.5.1; extra == "apple"
39
- Requires-Dist: abstractassistant[apple]==0.7.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.5.1; extra == "gpu"
42
- Requires-Dist: abstractassistant[gpu]==0.7.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,9 +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.
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)).
70
75
 
71
76
  - **Mac, no Terminal:** download and double-click
72
77
  [AbstractFramework-Installer.pkg](https://github.com/lpalbou/AbstractFramework/releases/latest/download/AbstractFramework-Installer.pkg).
@@ -76,7 +81,7 @@ MLX, llama.cpp), downloads a model that fits your machine, and lists the apps.
76
81
  - **macOS / Linux, one line:**
77
82
 
78
83
  ```bash
79
- 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
80
85
  ```
81
86
 
82
87
  - **Windows 10 22H2+ / 11** (PowerShell):
@@ -145,7 +150,7 @@ Start here if you're building persistent AI applications — agents that run for
145
150
 
146
151
  - Durable execution that survives crashes and restarts
147
152
  - Append-only ledger (replay-first) for auditability
148
- - Scheduled workflows (cron-style, recurring)
153
+ - Automations: a workflow that runs on a fixed interval or on demand, kept as a readable conversation ([Automations](docs/automations.md))
149
154
  - Multi-client: terminal, browser, tray, Telegram, email
150
155
  - Start on one device, continue on another
151
156
 
@@ -158,7 +163,8 @@ With no auth configured, `abstractgateway serve` binds `127.0.0.1:8080`, enables
158
163
  creates `default/admin` in the per-user data folder, and prints a one-time sign-in link
159
164
  (`http://127.0.0.1:8080/console#claim=…`, valid 10 minutes, this machine only). Open it to reach the
160
165
  web console and its first-run guide. `abstractgateway claim` mints a new link;
161
- `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.
162
168
 
163
169
  Browser apps on `http://localhost:*` and `http://127.0.0.1:*` may always call it. To choose
164
170
  another data folder or allow another browser origin:
@@ -180,17 +186,19 @@ AbstractFlow, AbstractCode Web or AbstractObserver, or to the console without a
180
186
  `ABSTRACTGATEWAY_AUTH_TOKEN` remains a legacy server/operator bearer token; it is not a browser
181
187
  sign-in token.
182
188
 
183
- 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:
184
192
 
185
193
  ```bash
186
- 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
187
195
 
188
- cargo install abstractgateway-console # Rust 1.87+
189
- ABSTRACTGATEWAY_AUTH_TOKEN=<token> abstractgateway-console --url http://127.0.0.1:8080
196
+ cargo install abstractgateway-console # Rust 1.87+; the installer builds it for you
197
+ abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token> # <data dir>/auth/bootstrap-admin-token
190
198
  ```
191
199
 
192
200
  Container images are published for the gateway and the AbstractCore server:
193
- `ghcr.io/lpalbou/abstractgateway:0.5.1` and `ghcr.io/lpalbou/abstractcore-server:2.16.1`.
201
+ `ghcr.io/lpalbou/abstractgateway:0.7.0` and `ghcr.io/lpalbou/abstractcore-server:2.18.0`.
194
202
 
195
203
  For artifact and runtime-resource investigation, see
196
204
  [Runtime artifacts and retrieval](docs/guide/runtime-artifacts.md).
@@ -228,7 +236,7 @@ See [Agent sessions](docs/agent-sessions.md).
228
236
 
229
237
  AbstractFlow lets you author complex agentic orchestration as portable `.flow` bundles:
230
238
 
231
- 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>`)
232
240
  2. Build a workflow: LLM steps, tool steps, branching, loops, subflows
233
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)
234
242
  4. Run it from any gateway-backed client (Observer, AbstractAssistant, Code Web UI, your app)
@@ -241,7 +249,7 @@ AbstractFlow lets you author complex agentic orchestration as portable `.flow` b
241
249
 
242
250
  - **Observe**: replay the full ledger of any run, or watch one live over SSE
243
251
  - **Control**: cancel, resume, or inspect runs from the browser
244
- - **Schedule**: durable schedules (cron-style) owned by the gateway — they survive restarts
252
+ - **Automate**: create and manage automations (Launch → Automate, the Automations page); they run on the gateway and survive restarts. See [Automations](docs/automations.md)
245
253
 
246
254
  ---
247
255
 
@@ -288,13 +296,13 @@ The ecosystem, grouped by layer. Each name links to the package's repository.
288
296
  |---|---|---|
289
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) |
290
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) |
291
- | [AbstractObserver](https://github.com/lpalbou/AbstractObserver) | Browser UI — monitor, control, and schedule gateway runs | `npx @abstractframework/observer` |
292
- | [AbstractEntity](https://github.com/lpalbou/AbstractEntity) | Summoned-entity manager — roster, blueprint (cognition map + editing), chat drawer, live replay | `npx @abstractframework/entity` |
293
- | [AbstractContinuum](https://github.com/lpalbou/AbstractContinuum) | Continuous iterative development and deployment console | `npx @abstractframework/continuum` |
294
- | **Gateway consoles** | Operator consoles for a running gateway: web at `/console` (first-run guide, Models, Engines, providers, users), terminal via `abstractgateway-console` | built into `abstractgateway`; `cargo install abstractgateway-console` |
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` |
295
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` |
296
- | **Code Web UI** | Browser client of AbstractCode (gateway-backed): workflow selector, Files tab, live replies | `npx @abstractframework/code` |
297
- | **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>` |
298
306
 
299
307
  ### Shared libraries
300
308
 
@@ -336,7 +344,7 @@ pip install "abstractframework[gpu]"
336
344
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
337
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+) |
338
346
 
339
- ### Release matrix (abstractframework 0.4.2)
347
+ ### Release matrix (abstractframework 0.6.0)
340
348
 
341
349
  `abstractframework` pins every Python package with `==`, so one version of the
342
350
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -345,28 +353,28 @@ and tested together.
345
353
 
346
354
  | Registry | Package | Version |
347
355
  |---|---|---|
348
- | PyPI | `abstractgateway` | 0.5.1 |
349
- | PyPI | `abstractassistant` | 0.7.0 |
350
- | PyPI | `abstractcore` | 2.16.1 |
351
- | PyPI | `AbstractRuntime` | 0.5.1 |
352
- | 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 |
353
361
  | PyPI | `abstractskill` | 0.3.0 |
354
362
  | PyPI | `AbstractMemory` | 0.3.0 |
355
363
  | PyPI | `abstractsemantics` | 0.0.5 |
356
- | PyPI | `abstractvoice` | 0.11.4 |
357
- | PyPI | `abstractvision` | 0.3.29 |
364
+ | PyPI | `abstractvoice` | 0.13.0 |
365
+ | PyPI | `abstractvision` | 0.3.30 |
358
366
  | PyPI | `abstractmusic` | 0.1.15 |
359
- | npm | `@abstractframework/flow` | 0.3.21 |
360
- | npm | `@abstractframework/code` | 0.5.0 |
361
- | npm | `@abstractframework/observer` | 0.1.13 |
362
- | npm | `@abstractframework/continuum` | 0.3.2 |
363
- | npm | `@abstractframework/entity` | 0.2.2 |
364
- | crates.io | `abstractcode` | 0.6.0 |
365
- | crates.io | `abstractgateway-console` | 0.9.0 |
366
- | crates.io | `abstractcore-console` | 0.2.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 |
367
375
  | crates.io | `abstracttui` | 0.6.0 |
368
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.5.1 (`gpu-latest` / `<version>-gpu` experimental) |
369
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.16.1 |
376
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.7.0 (`gpu-latest` / `<version>-gpu` experimental) |
377
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.18.0 |
370
378
 
371
379
  Optional add-ons that are not part of any profile install separately:
372
380
  `pip install abstract3d` (0.3.1) and `pip install abstractcamera` (0.2.0). `abstractskill` (pinned above)
@@ -386,6 +394,7 @@ See [docs/install.md](docs/install.md) for the full install chooser, `uv`/venv g
386
394
  | [docs/install.md](docs/install.md) | Light / Apple / GPU install chooser and first checks |
387
395
  | [docs/getting-started.md](docs/getting-started.md) | Two entry points + first end-to-end run |
388
396
  | [docs/agent-sessions.md](docs/agent-sessions.md) | Default agent workflow, the conversation workspace and its protection, skills, live replies, the Assistant hand-over |
397
+ | [docs/automations.md](docs/automations.md) | Automations: how they work (controller run, occurrences, independent vs growing context), creating and managing them from the Assistant, the Observer or a workflow, notifications, limits |
389
398
  | [docs/architecture.md](docs/architecture.md) | Component diagram, how a turn flows, the live-reply lane, app proxies, model eject, framework identity, durable execution primitives |
390
399
  | [docs/configuration.md](docs/configuration.md) | Minimal config, where defaults live, Core vs Gateway |
391
400
  | [docs/glossary.md](docs/glossary.md) | Shared terminology (run, ledger, effect, wait, bundle, …) |
@@ -20,9 +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.
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)).
26
31
 
27
32
  - **Mac, no Terminal:** download and double-click
28
33
  [AbstractFramework-Installer.pkg](https://github.com/lpalbou/AbstractFramework/releases/latest/download/AbstractFramework-Installer.pkg).
@@ -32,7 +37,7 @@ MLX, llama.cpp), downloads a model that fits your machine, and lists the apps.
32
37
  - **macOS / Linux, one line:**
33
38
 
34
39
  ```bash
35
- 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
36
41
  ```
37
42
 
38
43
  - **Windows 10 22H2+ / 11** (PowerShell):
@@ -101,7 +106,7 @@ Start here if you're building persistent AI applications — agents that run for
101
106
 
102
107
  - Durable execution that survives crashes and restarts
103
108
  - Append-only ledger (replay-first) for auditability
104
- - Scheduled workflows (cron-style, recurring)
109
+ - Automations: a workflow that runs on a fixed interval or on demand, kept as a readable conversation ([Automations](docs/automations.md))
105
110
  - Multi-client: terminal, browser, tray, Telegram, email
106
111
  - Start on one device, continue on another
107
112
 
@@ -114,7 +119,8 @@ With no auth configured, `abstractgateway serve` binds `127.0.0.1:8080`, enables
114
119
  creates `default/admin` in the per-user data folder, and prints a one-time sign-in link
115
120
  (`http://127.0.0.1:8080/console#claim=…`, valid 10 minutes, this machine only). Open it to reach the
116
121
  web console and its first-run guide. `abstractgateway claim` mints a new link;
117
- `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.
118
124
 
119
125
  Browser apps on `http://localhost:*` and `http://127.0.0.1:*` may always call it. To choose
120
126
  another data folder or allow another browser origin:
@@ -136,17 +142,19 @@ AbstractFlow, AbstractCode Web or AbstractObserver, or to the console without a
136
142
  `ABSTRACTGATEWAY_AUTH_TOKEN` remains a legacy server/operator bearer token; it is not a browser
137
143
  sign-in token.
138
144
 
139
- 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:
140
148
 
141
149
  ```bash
142
- 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
143
151
 
144
- cargo install abstractgateway-console # Rust 1.87+
145
- ABSTRACTGATEWAY_AUTH_TOKEN=<token> abstractgateway-console --url http://127.0.0.1:8080
152
+ cargo install abstractgateway-console # Rust 1.87+; the installer builds it for you
153
+ abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token> # <data dir>/auth/bootstrap-admin-token
146
154
  ```
147
155
 
148
156
  Container images are published for the gateway and the AbstractCore server:
149
- `ghcr.io/lpalbou/abstractgateway:0.5.1` and `ghcr.io/lpalbou/abstractcore-server:2.16.1`.
157
+ `ghcr.io/lpalbou/abstractgateway:0.7.0` and `ghcr.io/lpalbou/abstractcore-server:2.18.0`.
150
158
 
151
159
  For artifact and runtime-resource investigation, see
152
160
  [Runtime artifacts and retrieval](docs/guide/runtime-artifacts.md).
@@ -184,7 +192,7 @@ See [Agent sessions](docs/agent-sessions.md).
184
192
 
185
193
  AbstractFlow lets you author complex agentic orchestration as portable `.flow` bundles:
186
194
 
187
- 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>`)
188
196
  2. Build a workflow: LLM steps, tool steps, branching, loops, subflows
189
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)
190
198
  4. Run it from any gateway-backed client (Observer, AbstractAssistant, Code Web UI, your app)
@@ -197,7 +205,7 @@ AbstractFlow lets you author complex agentic orchestration as portable `.flow` b
197
205
 
198
206
  - **Observe**: replay the full ledger of any run, or watch one live over SSE
199
207
  - **Control**: cancel, resume, or inspect runs from the browser
200
- - **Schedule**: durable schedules (cron-style) owned by the gateway — they survive restarts
208
+ - **Automate**: create and manage automations (Launch → Automate, the Automations page); they run on the gateway and survive restarts. See [Automations](docs/automations.md)
201
209
 
202
210
  ---
203
211
 
@@ -244,13 +252,13 @@ The ecosystem, grouped by layer. Each name links to the package's repository.
244
252
  |---|---|---|
245
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) |
246
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) |
247
- | [AbstractObserver](https://github.com/lpalbou/AbstractObserver) | Browser UI — monitor, control, and schedule gateway runs | `npx @abstractframework/observer` |
248
- | [AbstractEntity](https://github.com/lpalbou/AbstractEntity) | Summoned-entity manager — roster, blueprint (cognition map + editing), chat drawer, live replay | `npx @abstractframework/entity` |
249
- | [AbstractContinuum](https://github.com/lpalbou/AbstractContinuum) | Continuous iterative development and deployment console | `npx @abstractframework/continuum` |
250
- | **Gateway consoles** | Operator consoles for a running gateway: web at `/console` (first-run guide, Models, Engines, providers, users), terminal via `abstractgateway-console` | built into `abstractgateway`; `cargo install abstractgateway-console` |
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` |
251
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` |
252
- | **Code Web UI** | Browser client of AbstractCode (gateway-backed): workflow selector, Files tab, live replies | `npx @abstractframework/code` |
253
- | **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>` |
254
262
 
255
263
  ### Shared libraries
256
264
 
@@ -292,7 +300,7 @@ pip install "abstractframework[gpu]"
292
300
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
293
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+) |
294
302
 
295
- ### Release matrix (abstractframework 0.4.2)
303
+ ### Release matrix (abstractframework 0.6.0)
296
304
 
297
305
  `abstractframework` pins every Python package with `==`, so one version of the
298
306
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -301,28 +309,28 @@ and tested together.
301
309
 
302
310
  | Registry | Package | Version |
303
311
  |---|---|---|
304
- | PyPI | `abstractgateway` | 0.5.1 |
305
- | PyPI | `abstractassistant` | 0.7.0 |
306
- | PyPI | `abstractcore` | 2.16.1 |
307
- | PyPI | `AbstractRuntime` | 0.5.1 |
308
- | 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 |
309
317
  | PyPI | `abstractskill` | 0.3.0 |
310
318
  | PyPI | `AbstractMemory` | 0.3.0 |
311
319
  | PyPI | `abstractsemantics` | 0.0.5 |
312
- | PyPI | `abstractvoice` | 0.11.4 |
313
- | PyPI | `abstractvision` | 0.3.29 |
320
+ | PyPI | `abstractvoice` | 0.13.0 |
321
+ | PyPI | `abstractvision` | 0.3.30 |
314
322
  | PyPI | `abstractmusic` | 0.1.15 |
315
- | npm | `@abstractframework/flow` | 0.3.21 |
316
- | npm | `@abstractframework/code` | 0.5.0 |
317
- | npm | `@abstractframework/observer` | 0.1.13 |
318
- | npm | `@abstractframework/continuum` | 0.3.2 |
319
- | npm | `@abstractframework/entity` | 0.2.2 |
320
- | crates.io | `abstractcode` | 0.6.0 |
321
- | crates.io | `abstractgateway-console` | 0.9.0 |
322
- | crates.io | `abstractcore-console` | 0.2.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 |
323
331
  | crates.io | `abstracttui` | 0.6.0 |
324
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.5.1 (`gpu-latest` / `<version>-gpu` experimental) |
325
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.16.1 |
332
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.7.0 (`gpu-latest` / `<version>-gpu` experimental) |
333
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.18.0 |
326
334
 
327
335
  Optional add-ons that are not part of any profile install separately:
328
336
  `pip install abstract3d` (0.3.1) and `pip install abstractcamera` (0.2.0). `abstractskill` (pinned above)
@@ -342,6 +350,7 @@ See [docs/install.md](docs/install.md) for the full install chooser, `uv`/venv g
342
350
  | [docs/install.md](docs/install.md) | Light / Apple / GPU install chooser and first checks |
343
351
  | [docs/getting-started.md](docs/getting-started.md) | Two entry points + first end-to-end run |
344
352
  | [docs/agent-sessions.md](docs/agent-sessions.md) | Default agent workflow, the conversation workspace and its protection, skills, live replies, the Assistant hand-over |
353
+ | [docs/automations.md](docs/automations.md) | Automations: how they work (controller run, occurrences, independent vs growing context), creating and managing them from the Assistant, the Observer or a workflow, notifications, limits |
345
354
  | [docs/architecture.md](docs/architecture.md) | Component diagram, how a turn flows, the live-reply lane, app proxies, model eject, framework identity, durable execution primitives |
346
355
  | [docs/configuration.md](docs/configuration.md) | Minimal config, where defaults live, Core vs Gateway |
347
356
  | [docs/glossary.md](docs/glossary.md) | Shared terminology (run, ledger, effect, wait, bundle, …) |