fabricatio-webui
Web UI service for the Fabricatio LLM application framework. Serves a Vue-based single-page application built with Vite over an axum HTTP server (Rust, bound via PyO3).
Installation
pip install fabricatio[webui]
# or
pip install fabricatio-webui
The CLI entry point requires the cli extra:
pip install fabricatio-webui[cli]
Quick Start
Start the service with the bundled frontend:
fc-webui
This serves the SPA at http://127.0.0.1:9846. Use --frontend-dir / -d to point at a custom build, and --addr / -a to change the bind address:
fc-webui --addr 0.0.0.0:3000 --frontend-dir ./dist
Run something in under a minute (no LLM required)
The Hello Fabricatio blueprint is a pure-Python two-step pipeline that needs no LLM, no API keys, and no configuration:
- On the board canvas, drag webui → Hello Fabricatio from the blueprint rail onto a role (create one first via right-click → Add role).
- Double-click the role card to open the workflow: a
TextStatsnode wired into aSummarizeStatsnode. - Click ▶ Run on the workflow chip (or press
Ctrl+Enterinside the workflow) — the dialog opens pre-filled with the namespace (hello-fabricatio); put your text in Extra init context:{"text": "hello fabricatio"}. - Run — the console streams
node_start/doneevents and the task result is the summary line, e.g.[demo] chars: 16, words: 2, lines: 1.
Every other shipped blueprint (novel/typst pipelines) drives real LLM calls and requires configured credentials before it can run.
API
All functionality is exposed through the Rust-backed Python module fabricatio_webui.rust.
start_service(...)
Starts an async HTTP server (axum + tokio) that serves static files from frontend_dir with SPA fallback (all unmatched routes serve index.html). CORS is permissive when allowed_origins is empty, otherwise restricted to the given origins.
| Parameter | Type | Description |
|---|---|---|
frontend_dir |
str | PathLike |
Directory containing the built frontend |
data_dir |
str | PathLike |
Workflow persistence directory |
addr |
str |
Bind address, e.g. "127.0.0.1:9846" |
node_registry_json |
str |
JSON array of node type definitions |
blueprints_json |
str |
JSON array of package-defined blueprints |
allowed_origins |
Sequence[str] |
CORS allowed origins (empty = permissive) |
submit_fn |
Callable |
Worker: submit(execution_id, task_json) |
cancel_fn |
Callable |
Worker: cancel_current() -> bool |
queue_snapshot_fn |
Callable |
Worker: queue_snapshot() -> str (JSON) |
history_snapshot_fn |
Callable |
Worker: history_snapshot() -> str (JSON) |
rebuild_roles_fn |
Callable |
Worker: re-dispatch roles after save/delete |
persist_workflows |
bool |
When false, save/delete keep in-memory state only and skip writing workflows.json |
The exact Python-visible signature lives in the generated stub
(python/fabricatio_webui/rust/__init__.pyi, regenerated by
cargo run -p fabricatio-stubgen --features webui).
Execution pipeline
Submissions (POST /api/execute or a WS submit message) are forwarded to an in-process asyncio worker (fabricatio_webui.worker.WorkflowWorker). The worker instantiates Action nodes from the workflow graph, executes them in topological order, and streams lifecycle events back over WebSocket. POST /api/interrupt cancels the running execution (execution_done with cancelled: true). Queue and history are owned by the worker and exposed via GET /api/queue and GET /api/history.
The CLI wires everything together:
# fc-webui — worker + server run on one event loop
import asyncio, json
from fabricatio_webui.blueprints import build_blueprints
from fabricatio_webui.config import webui_config
from fabricatio_webui.registry import build_node_registry
from fabricatio_webui.rust import rust_broadcast, start_service
from fabricatio_webui.worker import WorkflowWorker
async def main() -> None:
worker = WorkflowWorker(
rust_broadcast, "./workflows",
queue_max=webui_config.queue_max, history_max=webui_config.history_max,
)
await asyncio.gather(
start_service("./www", "./workflows", "127.0.0.1:9846",
json.dumps(build_node_registry()["node_types"]),
json.dumps(build_blueprints()["blueprints"]),
list(webui_config.allowed_origins),
worker.submit, worker.cancel_current,
worker.queue_snapshot, worker.history_snapshot,
worker.rebuild_roles,
bool(webui_config.persist_workflows)),
worker.run(),
)
asyncio.run(main())
Board editor
The frontend is a node-based board editor for authoring role-driven workflows.
A board is the top-level saved document (format_version: 2) holding:
- roles — each with a name, description, and a list of workflows; every
workflow is a node graph plus the namespace pattern it subscribes to
(e.g.
"write::book"→"write::book::*::Pending"). - actions — optional board-level custom Action definitions (emitted as Python subclasses by the code generator).
Blueprints are collected at startup from the workflows subpackage of every
installed fabricatio-* package (the node catalog's actions likewise, from
each package's actions tree), so installing another ecosystem package is
enough for its content to appear — no configuration. They are served via
GET /api/blueprints and offered in the sidebar for one-click board
seeding. The introspected node catalog — every registered Action subclass with
its typed ports, config fields, widget hints, MRO groups, source code, and an
8-hex schema fingerprint — comes from GET /api/nodes. Boards are CRUD-managed
through GET|POST /api/workflows and GET|DELETE /api/workflows/{id}; every
save/delete re-dispatches roles onto the worker's event bus.
Using the editor
- Add nodes: right-click or double-click the canvas → fuzzy-searchable node
menu grouped by category.
Ctrl+Fopens the command palette for node/command search from anywhere. - Wire dataflow: drag between port dots; connections are type-checked
(
isValidConnection), optional inputs render hollow handles. - Configure inline: every config field renders an in-node widget derived
from the Action's pydantic annotations — toggles, number steppers with
min/max/step, combos fed by
Literaloptions, text/textarea, JSON fields; fields are grouped by their owning class in the Action's MRO. - Run: click ▶ on a workflow chip (role card) to debug-run exactly
that workflow — the dialog opens pre-filled with its name, namespace, and
stored init context. Inside the workflow editor
Ctrl+Enteropens the same dialog; the toolbar Publish publishes a free-form task to any namespace. Per-node status badges + the live console stream (node_start/done/errorevents);POST /api/interruptcancels mid-run. The node currently executing gets a purple breathing halo on the canvas. - Save:
Ctrl+Spersists the board server-side; autosave drafts go to browser localStorage.
Export as CLI / Python package
Every role card carries a code action that opens the generated-module
dialog — a full export panel. Pick a scope and a format, preview
every generated file in tabs, then copy, download a single file, or export
the whole artifact as .zip:
- Scope — whole role (all of its workflows) or a single workflow.
- Format:
- Script — the runnable package:
main.pywith PEP 723 metadata (uv-run-anywhere),pyproject.toml,workflow.json,README.md. - CLI tool — everything above plus an installable src-layout
package wired to a
[project.scripts]console command. - Python package — a typed library:
pip install .thenfrom <pkg> import build_role, run(py.typedincluded). - PyPI-ready — the package plus a console command,
LICENSE, test skeleton, ruff config, and a trusted-publishing release workflow.
- Script — the runnable package:
The CLI flavor, zero setup:
unzip hello-fabricatio-cli.zip -d hello-fabricatio && cd hello-fabricatio
uv run main.py --text "hello fabricatio" # script mode, no install
uv tool install . # installs the hello-fabricatio command
hello-fabricatio --text "hello fabricatio"
The package flavors, as a library:
unzip hello-fabricatio-package.zip -d hello-fabricatio && cd hello-fabricatio
pip install .
python -c "import asyncio, hello_fabricatio; print(asyncio.run(hello_fabricatio.run({'text': 'hello'})))"
uv reads the PEP 723 block and installs the dependencies automatically.
Task input: --text "…" (shorthand), --input '{"text": "…"}' (JSON
literal), or --input-file ctx.json. LLM-backed workflows additionally
need configured credentials (a fabricatio.toml or FABRICATIO_* env
vars); pure-Python pipelines run without any.
Themes
The UI ships dark (default) and light themes. Switch via Settings sidebar → Appearance → Theme. The choice persists per-browser (localStorage) and is applied before first paint (no flash on reload).
Language
The UI ships English and 中文 catalogs (vue-i18n). Switch via Settings sidebar → Appearance → Language; the choice persists per-browser (localStorage) alongside the theme and is applied at startup.
Import / export boards
In the Boards sidebar:
- Export all (header ⤓): downloads
fabricatio-boards.json, a JSON array of every saved board. - Per-board export (row ⤓): downloads
<name>.jsonfor that one board. - Import (header ⤓↑): pick one or more JSON files — each may hold a single
board object or an array. Every entry must be
format_version: 2; entries are upserted by name (the server derives the storage id from it), so re-importing an edited file updates the existing board. Invalid payloads raise an error toast and leave the stored boards untouched.
Boards exported this way are plain JSON — diff them, commit them, share them, or hand-edit roles/workflows offline and import back.
WebSocket protocol
One endpoint: /ws. Messages are JSON objects tagged by a type field.
Client → server:
| type | payload |
|---|---|
submit |
{ workflow: WorkflowJSON, task_input?: any } |
Server → client:
| type | payload | notes |
|---|---|---|
execution_start |
{ execution_id, timestamp? } |
run begins |
node_start |
{ execution_id, node_id, node_type, timestamp? } |
node begins |
node_done |
{ execution_id, node_id, output?, timestamp? } |
node succeeds |
node_error |
{ execution_id, node_id, error, traceback?, timestamp? } |
node fails |
node_output |
{ execution_id, node_id, output_key, data, timestamp? } |
per-output-key stream |
execution_done |
{ execution_id, result?, error?, cancelled?, timestamp? } |
terminal event |
status |
{ queue_length, running_count } |
emitted on enqueue/dequeue |
llm_token |
{ execution_id, node_id, token, timestamp? } |
receive path implemented end-to-end but nothing emits it yet (future work) |
Configuration
All options below are read through the fabricatio configuration chain (see the
Configuration Guide). Set them under the
[ext.webui] table in fabricatio.toml, equivalently under
[tool.fabricatio.ext.webui] in pyproject.toml, or via
FABRICATIO_EXT__WEBUI__<FIELD_UPPER> environment variables.
[ext.webui]
addr = "127.0.0.1:9846"
queue_max = 64
| Option | Type | Default | Description |
|---|---|---|---|
addr |
str |
"127.0.0.1:9846" |
— |
frontend_dir |
str |
"" |
empty = use bundled www |
allowed_origins |
tuple[str, ...] |
("http://localhost:*", "http://127.0.0.1:*") |
— |
queue_max |
int |
64 |
— |
history_max |
int |
256 |
— |
persist_workflows |
bool |
True |
— |
Access at runtime: from fabricatio_webui.config import webui_config.
Dependencies
fabricatio-core— core interfaces and configurationaxum+tokio+tower-http(Rust) — HTTP server and middlewaretyper(optional, for CLI) —fc-webuicommand
Todos / Known Gaps
Re-verified 2026-08-21 against source. Grouped by category; checkboxes track completion.
Functional gaps
-
ComfyNode.vueopen-sourceemit is not wired — the title-bar dblclick emitsopen-source, but VueFlow does not propagate custom events from custom node types, soNodeCanvas.vueuses theonNodeClickdblclick path instead. Remove the dead emit or document why it is kept. -
llm_tokenis never emitted — the full receive path exists (Rust variant, TS interface, execution-store token buffer) but no Python code emits token events from LLM calls. Future work: wire streaming tokens into the instrumented actions.
Test gaps
-
migrate_boardhas no test coverage —test_registry.pycoversmigrate_workflowonly; the format 0/1 → 2 board migration is untested. - Frontend unit coverage is thin —
argGroups,autoLayout,boardstore,NodeWidget,NodeInspector,codegen, andexportPkghave specs. Missing:workflow/ui/execution/loading/notificationsstores, most canvas/chrome/board components, and all composables (useWebSocket,useHotkeys,useAppActions,useOutputPreview). - No Rust tests beyond
types.rs—api.rs,state.rs,ws.rs,webui.rshave no unit/integration tests for the HTTP and WS endpoints.
Code hygiene
- Pre-existing ruff violations in
registry/_schema.py—C901(_type_to_port_type13 > 10) andPLR0912(_widget_hint15 > 12); carried over verbatim from the oldregistry.py. Refactor or extend the# noqacomments. - Vite
INEFFECTIVE_DYNAMIC_IMPORTwarning —src/api/client.tsis dynamically imported bystores/board.tsbut statically by other stores; the dynamic import never splits a chunk.
Infra / DX
- No E2E browser tests — the workspace lacks a browser-test harness for the webui package (Puppeteer unavailable in the Bun JS VM); only live API checks are possible.
- Python tests lack a package-local runner config —
python/has nopyproject.toml; tests must be invoked with an explicit path (python -m pytest packages/fabricatio-webui/python/tests/) anduv runattempts rebuilds and times out.
License
This project is licensed under the MIT License.
Metadata
Release files for fabricatio-webui 0.10.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 39.8 MB
Release files / fabricatio_webui-0.10.0-cp314-cp314-win_amd64.whl
| Download URL | fabricatio_webui-0.10.0-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 3.2 MB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
451480212b03d497620f4ad316dc4d78fb24538fc5448ab8be4f0c1d401780c1
|
|
BLAKE2b-256 checksum How to use checksums |
d1945d8e3084086cdf4aeb11293d33f603bc4b503e82ef017d43fbe71f5f3131
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fabricatio_webui-0.10.0-cp314-cp314-manylinux_2_34_x86_64.whl
| Download URL | fabricatio_webui-0.10.0-cp314-cp314-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 3.6 MB |
| Tags | CPython 3.14 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
000b06224d2c1a019c1be7314b0b856ff3069555c1fc711a5daccd902d968e0a
|
|
BLAKE2b-256 checksum How to use checksums |
ad8db2f27922e80303daa7d33d788e3e3866493671014e42408dad47f909ff19
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fabricatio_webui-0.10.0-cp314-cp314-manylinux_2_34_aarch64.whl
| Download URL | fabricatio_webui-0.10.0-cp314-cp314-manylinux_2_34_aarch64.whl |
|---|---|
| Size | 3.2 MB |
| Tags | CPython 3.14 Linux glibc 2.34+ ARM64 |
|
SHA-256 checksum How to use checksums |
720a2b881943bd7e85ad7b5ae6c771265defbfcb4db6fbdb74432e8f5d83d670
|
|
BLAKE2b-256 checksum How to use checksums |
220993c63bff4cf1d62b67e5bad61fb63cd5a05434d9bfc25f7695b23ea92fb8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fabricatio_webui-0.10.0-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | fabricatio_webui-0.10.0-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.2 MB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
d12ea2acab8094a3056a79bf73499ef147193daf24ef18b23d53353863597a6f
|
|
BLAKE2b-256 checksum How to use checksums |
e9cb6e8d053762cb7d75cc697a75a87a3464aed36077f611119c71246c05a29b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fabricatio_webui-0.10.0-cp313-cp313-win_amd64.whl
| Download URL | fabricatio_webui-0.10.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 3.2 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
870c7dcd62099fc044d622e5da27e80ac4628e20eabaae10c40abf9a8f28131a
|
|
BLAKE2b-256 checksum How to use checksums |
ff65fd9b285c13cf4edc2af00788a388415354270b0682045f980e24cc470b0b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fabricatio_webui-0.10.0-cp313-cp313-manylinux_2_34_x86_64.whl
| Download URL | fabricatio_webui-0.10.0-cp313-cp313-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 3.6 MB |
| Tags | CPython 3.13 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
1824b9c78baa22f09e29a9d3e3f286b50fea80e59ec5699ece23588235e1b60a
|
|
BLAKE2b-256 checksum How to use checksums |
d2b82e6e0b2dcffc6ba61b89735529d3932b73b6199bef12b71b855aea9ffa8a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fabricatio_webui-0.10.0-cp313-cp313-manylinux_2_34_aarch64.whl
| Download URL | fabricatio_webui-0.10.0-cp313-cp313-manylinux_2_34_aarch64.whl |
|---|---|
| Size | 3.2 MB |
| Tags | CPython 3.13 Linux glibc 2.34+ ARM64 |
|
SHA-256 checksum How to use checksums |
285eb6d4c0d101e8c140906e5ccebf5a0e647972dc7efc8c80c09dacc011159b
|
|
BLAKE2b-256 checksum How to use checksums |
34190ba805dcd7296015ea30e71e02734f3af8280ccb8578538e64af83c27796
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fabricatio_webui-0.10.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | fabricatio_webui-0.10.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.2 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
02a712e5012785f743481c647997baf8218aced7d4ced351829bb2901026c0fc
|
|
BLAKE2b-256 checksum How to use checksums |
aa3d27fe9670495821856588b262e2ce16ed0594aec3b6e0ceae4efd964dfa61
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fabricatio_webui-0.10.0-cp312-cp312-win_amd64.whl
| Download URL | fabricatio_webui-0.10.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 3.2 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
f7b6552479fee77309f971ba5804f84b10b5efda28a07b3ed272269d5393917c
|
|
BLAKE2b-256 checksum How to use checksums |
6aacf7ec02e77e85d67c46318668c754b37fc9c6e8559d50eba650f3e3cf0d69
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fabricatio_webui-0.10.0-cp312-cp312-manylinux_2_34_x86_64.whl
| Download URL | fabricatio_webui-0.10.0-cp312-cp312-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 3.6 MB |
| Tags | CPython 3.12 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
d7324dbe94c37e03f1c6c22df515dbbfd83db341ef633010ed78675389c114bf
|
|
BLAKE2b-256 checksum How to use checksums |
a823b5ade5af00b2ef8231f813be19c53d03d6b21e3028362b21a76f0b70c8f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fabricatio_webui-0.10.0-cp312-cp312-manylinux_2_34_aarch64.whl
| Download URL | fabricatio_webui-0.10.0-cp312-cp312-manylinux_2_34_aarch64.whl |
|---|---|
| Size | 3.2 MB |
| Tags | CPython 3.12 Linux glibc 2.34+ ARM64 |
|
SHA-256 checksum How to use checksums |
fbc0d0582181ffa4b1ba3d18fb17bc25b40e00b8743cfc2a5f913c5e2907f991
|
|
BLAKE2b-256 checksum How to use checksums |
afd10976164294779b79e6b6e9d3880198fd47106a5ff06eee1930a0e92f1eda
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fabricatio_webui-0.10.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | fabricatio_webui-0.10.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.2 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
4e3fdfb657df297472976be06b6e3a2cbce9794e741fae5b24f7ffde38bfc9db
|
|
BLAKE2b-256 checksum How to use checksums |
ad6da488d27b479d47453ae0c7baa5c677c6a69d3bd572b1521954d9c4c8893c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|