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