Skip to content

AbstractFramework 0.10.0

Choose a tag to compare

@lpalbou lpalbou released this 05 Oct 01:26
· 139 commits to main since this release

Added

  • The gateway serves its OpenAI-compatible API at http://<host>:<port>/v1 with its own console page,
    Models → OpenAI API: status and base URL, your API key (your gateway token, masked with reveal
    and copy), access settings for admins (Protected or Open, and who can connect: this machine, your
    network, your tailnet or anywhere), a per-account OpenAI API switch, example requests, and a log
    of recent requests that opens to the recorded request and response. Structured outputs
    (response_format json_object and json_schema) work for every provider the gateway routes to.
  • The gateway web and terminal consoles share one layout: Accounts (users and entities in one list,
    archive and unarchive), Workflows, Skills & MCP, Runtimes, Apps, Providers (local engines included),
    OpenAI API, Models (one list with downloads not in the catalog; delete a downloaded model), Multimodal,
    Resources, Sandbox, Network (every detected address, Tailscale included) and About.
  • Code Web: Automations and Conversations drawers with compact cards, archive and unarchive for
    conversations and automations (Archived · N), and a right-hand rail (Activity, Files, Model,
    Workflow, Workspace, Tools, Skills, Voice) whose settings follow the selected conversation or
    automation. The Code terminal client offers the same panels, cards, archive and voice.
  • Voice everywhere through the gateway: the shared Voice settings show the gateway's own default
    engines, let you pick the output device and the microphone, and test both; Code (web and terminal),
    Observer and Entity speak replies and take dictation through the gateway.
  • One About card in every app and console (app, AbstractFramework and gateway versions, links), and a
    shared audio player for audio files.
  • A hung gateway restarts: when its event loop has not run for --watchdog-seconds (default 30, 0
    turns it off), abstractgateway serve exits with code 75 and its supervisor starts it again;
    /api/health reports the watchdog.
  • Workspaces in two dimensions (AbstractGateway 0.13.0, AbstractRuntime 0.9.0, UI Kit 0.8.1): the
    admin chooses a posture, Deny everything, allow listed workspaces (the default) or Allow
    everything, refuse listed workspaces
    (with a Read-only or Read & write default for everything
    else), one Shared workspace (always Read & write) and workspaces that are Read-only, Read &
    write or Refused, in one modal at the top of Accounts. Each account can only narrow them, from
    its Workspace row action or the Workspace settings of AbstractCode, Observer, Flow and the
    Assistant, which share one chooser and one wording with the gateway's one-line summary.
  • The agent is told its workspaces: every tool-using call lists its working directory, the shared
    workspace and each allowed workspace with its mode. A file it writes without a full path lands in
    the conversation's private folder, never in the shared workspace.
  • Shell commands are held to the run's workspaces by the operating system (AbstractCore 2.25.0,
    AbstractRuntime 0.9.0, AbstractAgent 0.3.18, AbstractGateway 0.13.0): execute_command, the
    persistent shell session, local helpers and execute_python run inside an OS sandbox built from the
    same workspaces the file tools get (macOS sandbox-exec; Linux bubblewrap, or Landlock for Deny
    everything, allow listed workspaces
    ), with the gateway's environment stripped of tokens and keys.
    A host with no sandbox refuses commands with one sentence and the run continues;
    abstractgateway serve --unsandboxed-commands allows them again (audited). The run ledger records
    the sandbox and the enforced paths of every command; the Assistant and Code tool settings show the
    state (Sandboxed to this run's workspaces), and the Observer and Code run views show one
    Sandbox: … line per command. The Linux sandbox is verified in CI (bubblewrap on Ubuntu).
  • The console's top bar shows memory used, GPU load and the number of loaded models (refreshed every
    5 seconds, a click opens Resources); every address, with Copy, is on Network.
  • The tray's Workflows submenu lists running runs first, then runs waiting for a person or an event,
    then the runs finished in the last 24 hours, each opening in Observer.
  • Themed tooltips on every icon button of the consoles and apps (UI Kit 0.8.1).
  • Sound effects and music take a length in seconds: AbstractCore's /v1/audio/music seconds, the
    gateway Sandbox's Length (seconds) field and the Assistant's media requests ("a 3 s laser
    sound"); a sound effect runs the Stable Audio 3 SFX checkpoint and lasts 5 seconds by default,
    music 30.
  • AbstractAssistant 0.13.0: New automation opens the same schedule form as AbstractCode and
    Observer; Settings → Workflow is its own page (Gateway default first, Open in
    AbstractFlow
    ); Settings → Tools groups tools in collapsible categories; Settings → Appearance
    shows the Accessibility permission with Configure; the Voice page shows the gateway's engines
    read-only with Change under Models.

Changed

  • A gateway upgraded from 0.12 converts its workspace settings once at its first start: the old access
    modes, per-user allow and deny lists, launch-folder trust and "Any folder (old clients)" become the
    posture and rows above; the old settings keys and routes are refused afterwards. A fresh gateway's
    shared workspace is <data dir>/workspace; an existing install keeps its current one.
  • The gateway terminal console's Workspaces page says workspaces are managed from Accounts in the
    web console for this release.
  • Apps → Assistant reports, opens and watches the same Assistant: the installed package, else the
    app bundle. When the other one is running, the card and the tray say so.
  • Apps shows an available update on every row: the browser apps and the Assistant offer Update
    to x.y.z
    (the Assistant is quit and opened again on the new version when the gateway started it);
    an app started elsewhere or installed from a source checkout shows Latest x.y.z with where to
    update it. An update whose version did not land fails and restarts nothing. The web and terminal
    consoles (u) show the same labels; new releases appear within 10 minutes without a restart.
  • Workspace nesting: the most specific workspace wins. Refusing a folder and allowing a folder inside
    it is valid (the inner folder is reachable, the rest stays refused); a refused folder inside an
    allowed one refuses its subtree; built-in protected folders stay refused whatever is listed inside.
    The gateway, the agent's file tools and the command sandbox apply the same rule.
  • /core/v1 answers with a 308 redirect to /v1 for this release and is deprecated: point clients at
    /v1.
  • Pin AbstractGateway 0.13.0, AbstractCore 2.25.0, AbstractRuntime 0.9.0, AbstractAgent 0.3.18
    (execute_python inside the command sandbox), AbstractVoice 0.14.0, AbstractMusic 0.1.16 (the
    sound-effect checkpoint and length fix) and AbstractAssistant 0.13.0;
    the installers install Code Web 0.11.0, Observer 0.7.0, Flow 0.8.0, Continuum 0.7.0 and Entity
    0.7.0 (built with UI Kit 0.8.1 and Panel Chat 0.4.0 from AbstractUIC), the gateway terminal
    console 0.15.0 and AbstractCode 0.9.0.