Repository navigation
AbstractFramework 0.6.3
The gpu setting on NVIDIA machines, speech-to-text in the fresh setup, and loaded image models
that are reused. Pins: AbstractGateway 0.7.4, AbstractCore 2.19.2, AbstractRuntime 0.7.3,
AbstractVoice 0.13.2, AbstractVision 0.3.33 and Abstract3D 0.3.2; the gateway's terminal console is
abstractgateway-console 0.11.2, and the browser client AbstractCode web is 0.6.2. Every other
version, and the other terminal clients, are unchanged from 0.6.2.
Added
-
The
gpusetting on Linux + NVIDIA, rehearsed on real hardware with this release. On
Ubuntu 26.04 with a Quadro RTX 5000 (16 GB, driver 595.91.07, CUDA 13.2; 4 vCPU, 26 GB RAM),
install.shinstalled this release's candidate versions from PyPI in 3 min 1 s (AbstractGateway
0.7.3, AbstractCore 2.19.1, AbstractRuntime 0.7.2, AbstractVoice 0.13.1 and AbstractVision 0.3.32;
the patch releases listed under Fixed came after this run). The previous
install had been removed withuninstall.sh --yes --purgeand uv's download cache cleared; model
weights, LM Studio and a Rust toolchain were already on the machine. The Python packages took 39 s
(about 5.8 GB of wheels), llama.cpp'scu130build 18 s (726 MB), compiling the two terminal
clients with cargo 110 s, and the start and health check 5 s. The install added 14.2 GB on disk.
Its checks reported PyTorch 2.11.0 on CUDA 13.0, llama.cpp 0.3.35 (cu130) with GPU offload and
Whisper on the GPU. Run again, it reported "already up to date" in 10 s. With Use recommended
defaults and the model weights already downloaded:- text with LM Studio (
qwen/qwen3.5-9b, Q4_K_M, 6.5 GB on the GPU): the first gateway request
took 23 s including loading the model, the next 12 s for a 318-token answer (308 of them
reasoning); from AbstractCore in Python about 41 tokens/s; - text-to-speech with Supertonic, on the processor: 1.1 to 1.4 s per sentence (3.2 s for the
first gateway request); - image generation with FLUX.2 [klein] 4B through Diffusers, with model CPU offload (7.8 GB
peak): 41 s to load the model, then 15 to 16 s per 1024x1024 image. Each gateway image request
loads the model again, so one request takes 54 to 59 s; - speech-to-text did not work as installed; see Known issues below.
vLLM 0.22.1 installs with the gpu setting but was not validated: it needs a C compiler
(build-essential) the first time it starts a model, and on GPUs older than compute capability
8.0 the--attention-backend TRITON_ATTNoption. See
GPU on Linux (NVIDIA). - text with LM Studio (
-
install.shon Linux + NVIDIA installs llama.cpp's CUDA build that matches PyTorch's CUDA
(PyPI's PyTorch for Linux is a CUDA 13 build, which needs NVIDIA driver 580 or newer; with an
older driver PyTorch and llama.cpp run on the processor) and keeps it only when it
loads and offloads to the GPU; otherwise the CPU build goes back and the summary says why. At the
end it checks that PyTorch sees the GPU and which device Whisper uses (PyTorch:,GGUF:and
Voice:summary lines), and warns when no C compiler is found for vLLM. -
install.ps1on Windows + NVIDIA picks the GPU stack fromnvidia-smi(CUDA 13 with driver
580 or newer and compute capability 7.5 or newer, CUDA 12 with driver 525 or newer, otherwise the
CPU), installs PyTorch's CUDA build and llama.cpp's matching prebuilt build (CUDA, then Vulkan,
then CPU), and ends with GPU checks that replace any part that does not work with one that does.
The Windows gpu setting is implemented and tested with simulated drivers and wheel-only
resolves, but it has not yet been validated on real NVIDIA hardware. See
GPU on Windows (NVIDIA). -
Live installer progress. Both installers show uv's output as it comes, with a
still working (… elapsed; last: …)line after 15 seconds of silence, so a multi-GB download no
longer looks frozen.install.ps1announces the big downloads before they start.
Changed
- Only the three install settings in hints. Every install hint across the framework names
light (pip install -U abstractcore),abstractcore[apple]orabstractcore[gpu], or says that
a capability is not available on this machine, never a bare package or a plugin's own extra
(AbstractCore 2.19.1, AbstractGateway 0.7.3, AbstractVoice 0.13.1, AbstractRuntime 0.7.2,
Abstract3D 0.3.2). - Smaller gpu setting. The gpu setting no longer installs MLX-Gen (AbstractVision 0.3.32):
about 2.1 GB less on Linux, and it installs on Linux distributions with an older glibc. abstractcore[gpu]installs on Windows with wheels only (vLLM is Linux only;
stable-diffusion.cpp and llama.cpp are left to the installer's prebuilt builds on Windows).- Recommendations on NVIDIA machines. Use recommended defaults picks FLUX.2 [klein] 4B
through Diffusers for image generation on an NVIDIA GPU (it fits a 16 GB card), and the LM Studio
text download isqwen/qwen3.5-9b@q4_k_m, which LM Studio offers on Linux and Windows. - AbstractRuntime depends on AbstractCore's three settings (
abstractcore,[apple],[gpu]),
andopenai2.x is allowed across the stack, so the gpu setting resolves a current vLLM.
Fixed
- The approval gate shows in every client. When the agent's tool call waits for approval, a
browser or phone that opens the same conversation later now shows the same Allow / Deny card and
"Approval needed" as the client that started the turn, instead of "Running a tool" and a Steer box
(AbstractCode web 0.6.2 with@abstractframework/panel-chat0.1.20; two-browser end-to-end test). - Speech-to-text without an OpenAI key. Transcription runs on the configured
input.voice
route (for example local Whisper) and no longer needs TTS credentials (AbstractCore 2.19.1,
AbstractVoice 0.13.1). - Speech-to-text in the fresh setup. The fresh-install defaults and Use recommended defaults
set speech input (input.voice: faster-whisper, modelbase) with text, voice and images, so a
new install transcribes locally without an OpenAI key (AbstractCore 2.19.2, AbstractGateway
0.7.4). An install that earlier release defaults seeded gains the route once, when it is empty; a
route you set yourself is kept. PyAV is held below 19, which faster-whisper 1.2.1 needs to read
audio files (AbstractVoice 0.13.2). - Use recommended defaults saves every route it reports, including on a fresh install right
after the console read the routes (AbstractCore 2.19.2). - Whisper on NVIDIA GPUs. faster-whisper uses CUDA only when CUDA 12 cuBLAS loads (installed
with the gpu setting on Linux and Windows), and otherwise runs on the CPU with a warning. - llama.cpp on CUDA loads without importing PyTorch first on Linux, and a GGUF model too large
for the GPU at its full context tries smaller contexts on the GPU before falling back to the CPU. - Image generation on smaller GPUs. A Diffusers pipeline that does not fit the GPU's free
memory loads with model CPU offload instead of failing with CUDA out of memory. When even the
largest component does not fit (for example next to a loaded text model), it falls back to
sequential CPU offload, which uses much less GPU memory and is slower per step (AbstractVision
0.3.33). On the Quadro RTX 5000, FLUX.2 [klein] 4B at 768x768 and 4 steps peaked near 1.4 GB and
took 10.9 to 15.6 s, against 13.4 to 18.5 s with model CPU offload; at about 2.3 s per step
against 1.5 s, models that run many steps are slower with it. - A loaded image model is reused. After Load in the console (or
POST /models/load), image
and video requests for that model run on the loaded pipeline instead of loading the model again
for each request (AbstractRuntime 0.7.3, AbstractGateway 0.7.4). On the rehearsal machine,
FLUX.2 [klein] 4B images through the gateway took 17 to 19 s each instead of 54 to 59 s. A model
that was not loaded still runs each request in its own process. - Unloading an image model frees its memory. On CUDA, FLUX.2 [klein] 4B with model CPU offload
left 16.3 GB held after an unload; it now leaves 0.86 GB (AbstractVision 0.3.33).
Security
- Email connections verify TLS. AbstractCore's mail tools (
list_emails,read_email,
send_email) and the gateway's email bridge check the server certificate and host name, and refuse
before login when the check fails; a server signed by a private CA is trusted with the new
ca_filefield of an account (AbstractCore 2.19.2, AbstractGateway 0.7.4). - Automations no longer email anyone the model chooses. With the default automatic tool
approval, message-sending tools are no longer pre-approved: asend_emailto your registered
email runs unattended, any other recipient waits for your approval (AbstractRuntime 0.7.3,
AbstractGateway 0.7.4). - A
password_env_var/imap_password_env_varthat is not an environment variable name is refused
instead of being read as the password (AbstractCore 2.19.2, AbstractGateway 0.7.4).
Found in the rehearsal
Found in the rehearsal on the Quadro RTX 5000 described above, which ran the candidate versions. The
Fixed entries above address each one.
-
Speech-to-text failed on a fresh gpu install, for two reasons:
- Use recommended defaults did not set the speech input route (
input.voice). With no route,
transcription used OpenAI and failed with "OpenAI audio requires OPENAI_API_KEY". - PyAV 19.0.0, released on 2026-09-29, removed an option that faster-whisper 1.2.1 uses to read
audio files. Every transcription through the gateway then failed withopen() got an unexpected keyword argument 'metadata_errors'.
With the route set to faster-whisper
baseby hand and PyAV 18, faster-whisper transcribed on the
GPU with no OpenAI key: 1.0 to 2.3 s per gateway request, and 0.3 GB of GPU memory. - Use recommended defaults did not set the speech input route (
-
An image next to a loaded text model ran out of GPU memory on a 16 GB card. LM Studio's
qwen/qwen3.5-9bkeeps 6.5 GB on the GPU while it is loaded. FLUX.2 [klein] needed 7.8 GB even
with model CPU offload, so the image request failed with CUDA out of memory after three attempts
(about 2.5 minutes). With the text model unloaded (lms unload --all, or the console's model
list), the same request worked. In this case AbstractVision 0.3.33 falls back to sequential CPU
offload (see Fixed above). -
Use recommended defaults could skip the image route on a fresh install. On an NVIDIA machine,
if the button was used within a few seconds of the console reading the routes, it could report the
image route as already set without saving it. Using it again saved it.