Skip to content

abstractframework 0.3.0

Choose a tag to compare

@lpalbou lpalbou released this 24 Sep 19:01
· 345 commits to main since this release

[0.3.0] - 2026-09-24

A Mac install that needs no Terminal knowledge (a .pkg or a double-click .command, and an
uninstaller), install failures explained in plain words, and the meta-package pins abstractcore
2.15.0 and abstractgateway 0.4.1.

Changed (pins)

  • abstractcore 2.15.0 (was 2.14.0) and abstractgateway 0.4.1 (was 0.3.0; 0.4.0 was never
    published), in the base install and in the apple / gpu extras
    (abstractgateway[apple|gpu]==0.4.1). The bootstrap scripts install
    abstractgateway[<profile>,tray]==0.4.1 and, with --with-console, abstractgateway-console
    0.8.0 (was 0.7.0). The other pins are unchanged: AbstractRuntime 0.4.33, abstractagent 0.3.13,
    AbstractMemory 0.3.0, abstractsemantics 0.0.5, abstractvoice 0.11.4, abstractvision 0.3.29,
    abstractmusic 0.1.15, abstractassistant 0.5.0.
  • Browser apps released with it (--with-apps, npx): @abstractframework/continuum 0.3.0 (was
    0.2.0) and @abstractframework/entity 0.2.0 (was 0.1.0); flow 0.3.20, code 0.4.2 and observer
    0.1.12 are unchanged.
  • The docs name the container images released with it: ghcr.io/lpalbou/abstractgateway:0.4.1
    and ghcr.io/lpalbou/abstractcore-server:2.15.0.
  • docs/backlog/planned/0859 states the real stack port map (observer 3001, continuum 3002,
    code 3003, entity 3004, flow 3005), as scripts/start-local.sh and the gateway's
    STACK_PORTS use.
  • scripts/lib/packages.txt: abstractgateway 0.4.1 depends on abstractcore directly
    (abstractcore>=2.15.0), so its edge is abstractcore:dep (was extra).

Added

  • A Mac install that needs no Terminal knowledge. scripts/lib/build_macos_installer.sh
    builds AbstractFramework-Installer.pkg (payload-free, "install for me only", no password) and
    AbstractFramework-Installer-macOS.zip (Install AbstractFramework.command and
    Uninstall AbstractFramework.command). Both open the same install.sh in Terminal with a
    banner, so every step stays visible and logged; the browser opens AbstractFramework, signed in,
    at the end. The script signs and notarizes the .pkg when given a Developer ID
    (AF_PKG_SIGN_IDENTITY, AF_NOTARY_PROFILE); without one it says the build is unsigned.
  • scripts/uninstall.sh: asks before removing anything, removes the login item, the running
    gateway and the gateway tool, and asks separately whether to delete your data (--purge) and,
    when the installer added uv, uv with its Python and download cache (--remove-uv, about
    2.5 GB after an Apple Silicon install). --yes runs without questions.
  • install.sh --interactive asks whether to start AbstractFramework at login (default yes; a
    previous "no" is remembered) and, on --uninstall, the data and uv questions. Questions go to
    the terminal, so it works through curl | sh. Answering "no" after an earlier "yes" removes the
    login item and starts the gateway in the background.

Changed

  • Every install failure says what to do next, in plain words. install.sh checks internet
    access to PyPI before changing anything (naming the proxy when one is set), recognises a
    connection that drops mid-install, stops on folders it cannot write (with the exact
    sudo chown fix), restarts itself natively when Terminal runs under Rosetta on Apple Silicon
    (and explains the Terminal setting when piped), warns on macOS older than 13, and says why an
    Apple Silicon Mac on macOS 13 gets the light profile. install.ps1 has the same network check
    and messages.
  • Re-runs repair and stay quiet. A gateway command that no longer starts (an interrupted or
    damaged install) is reinstalled in place; a registered, running, unchanged login item is left
    alone instead of restarted; an already-configured shell profile no longer produces a
    uv tool update-shell warning. The health wait is 180 s (the first start loads the engines) with
    a progress line every 15 s.
  • The gateway's Network setting decides where it listens, not the installer. install.sh and
    install.ps1 no longer pass --host 127.0.0.1 to abstractgateway service install (it reset a
    "Local network" choice to localhost on every re-run); they pass --port only. Without a login
    item (background mode) they store the setting first (abstractgateway network set localhost --port N when nothing is stored; a stored mode is kept and only the port aligned) and start plain
    abstractgateway serve. Gateways without the network command keep the old
    serve --host 127.0.0.1 --port N. The login item itself runs plain serve from
    abstractgateway 0.4.1.
  • The installer ends with a short plain-language summary (where AbstractFramework is, that it
    starts at login, the menu-bar icon, how to remove it) before the technical details.
  • docs/install.md is rewritten from a non-technical user's point of view (download, what you
    will see, a table of every failure message and what to do, how to remove it); the one-line,
    options and profile material follows under "Advanced". README and getting-started match.
  • llama.cpp GGUF is back in the one-line install, without a compiler. install.sh and
    install.ps1 take llama-cpp-python from upstream's prebuilt wheels for every profile, light
    included: Metal 0.3.28 on Apple Silicon, CPU 0.3.35 on glibc Linux x86_64/aarch64 and Windows
    x64 (--find-links on the package page of abetlen's wheel index, --constraints uv-constraints.txt, --no-build-package llama-cpp-python so the PyPI sdist is never built).
    Where no wheel exists (Intel Mac, musl Linux, Windows on ARM) or the wheel install fails, the
    script installs without it and prints GGUF (llama.cpp) skipped: no prebuilt wheel for this machine; re-run with --full after installing a C compiler. The summary's GGUF: line says what
    was installed. --full builds llama.cpp from source, now in the light profile too. CI's
    bootstrap smoke imports llama_cpp from the installed gateway on macOS, Linux and Windows and
    checks GPU offload on macOS.

Known limitations

These are unchanged from 0.2.1 (the same packages, checked with uv pip install --dry-run --no-build against both releases). The one-line installer is not affected by the first two: it
installs the gateway, not abstractassistant, and builds pure-Python source packages.

  • A plain pip install abstractframework on Linux builds evdev from source (a C compiler and
    kernel headers), through abstractassistant 0.5.0 → pynput.
  • langdetect, antlr4-python3-runtime, encodec and transformers-stream-generator are
    published as source only; they are pure Python and build without a compiler.
  • abstractframework[gpu] on Linux needs glibc 2.35 or later (Ubuntu 22.04+): mlx[cuda13],
    pulled by abstractvision[all-gpu] through mlx-gen, has only manylinux_2_35 wheels.
  • The macOS .pkg built by scripts/lib/build_macos_installer.sh is not signed yet, so
    Gatekeeper asks the user to allow it ("Open Anyway").