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 |
{ task: TaskJSON } — identical payload to POST /api/execute, so both transports hit the same worker entry point |
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.11.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.11.0-cp314-cp314-win_amd64.whl
| Download URL | fabricatio_webui-0.11.0-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 3.2 MB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
d9f22021886f8bd73d9b9d5e4238b7649d8bef48bb3d7460cbefa4d25a75e510
|
|
BLAKE2b-256 checksum How to use checksums |
98011d89c46c8363165977d88541af2d9334b7e4b91a2a44ebabc8aa4b9add5e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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.11.0-cp314-cp314-manylinux_2_34_x86_64.whl
| Download URL | fabricatio_webui-0.11.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 |
d04c821f0b9caf4bb79f4ed41337a0a91edb077ea565bd73d68345ec666a01b2
|
|
BLAKE2b-256 checksum How to use checksums |
d058606e6428434313e98fc1b152a8ea8f13c0af2c58848f2613afac8ebb5e8f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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.11.0-cp314-cp314-manylinux_2_34_aarch64.whl
| Download URL | fabricatio_webui-0.11.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 |
ab3259e44d34aeffe75f582c4007450577eb4756d1284369420f1f951c5ece72
|
|
BLAKE2b-256 checksum How to use checksums |
e7f4f5fafa607b3655d70d545a850c9d50eb1ab1527bf36b05b75ab1e1d813ea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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.11.0-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | fabricatio_webui-0.11.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 |
e507c0b9757908412edfd24b418abcd98924bd03402b60a21f5dd29a8463a7e7
|
|
BLAKE2b-256 checksum How to use checksums |
ea6f2cb84f041a4d24fce3df097fcab0655bc56b6ee45e6181f748aad4dcb03b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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.11.0-cp313-cp313-win_amd64.whl
| Download URL | fabricatio_webui-0.11.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 3.2 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
10aba05017f762baad03e1104c62d866c3f14ae9922c2ad2e73e28a6fb636342
|
|
BLAKE2b-256 checksum How to use checksums |
b342de474a70a436f8350d5baa717bbe63d5a5e6aae45f650d1779f4398da13b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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.11.0-cp313-cp313-manylinux_2_34_x86_64.whl
| Download URL | fabricatio_webui-0.11.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 |
04b0f4566e054017113b7d668df9263ed94478bae8cf8148dd06256bd3074776
|
|
BLAKE2b-256 checksum How to use checksums |
e63bd0d6185cd711358a0808fb3a51f996b6254dbfcee6b31570eb0b9b894f57
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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.11.0-cp313-cp313-manylinux_2_34_aarch64.whl
| Download URL | fabricatio_webui-0.11.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 |
de723f320c9bc92d26ef8d24ad10911c1819e399021c8fc5736228796ef63d3b
|
|
BLAKE2b-256 checksum How to use checksums |
9ba4af79b7f785304cfa9dabe572154353138d050f68c7eeb832ec96c7ff67c1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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.11.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | fabricatio_webui-0.11.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 |
6e0d25ac5ce7bfce215756377c3693943171e20e5b5f6c491c619d919f2a9919
|
|
BLAKE2b-256 checksum How to use checksums |
40d91d8bfa350ec87c9e06d65be2e14f0f83e01607e96ff5ea1dd56dac426b99
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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.11.0-cp312-cp312-win_amd64.whl
| Download URL | fabricatio_webui-0.11.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 3.2 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
dfc470458bf3453c30179a4370efd4078c58f35edc497ab41d1b8adaf2c0eae5
|
|
BLAKE2b-256 checksum How to use checksums |
273c2d67b994ec27d128a135c41acf1466486dd8fbe8371d821e228657a813f3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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.11.0-cp312-cp312-manylinux_2_34_x86_64.whl
| Download URL | fabricatio_webui-0.11.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 |
f8cb90ebb500b09dbfd7f44128d091ce4c4b9ea114afc42cb6faf0042df26f53
|
|
BLAKE2b-256 checksum How to use checksums |
044841f08dfdd851a8bf7a7caf7fd66431f39450745cdf936bc6a986781e0fb4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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.11.0-cp312-cp312-manylinux_2_34_aarch64.whl
| Download URL | fabricatio_webui-0.11.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 |
7c96ace4a991807b102a6b09b5bd6aaaf51f9c8365c3e1c02f464eec753c28d3
|
|
BLAKE2b-256 checksum How to use checksums |
8c00beda6416c17def82f3f199dbc77ba9064f3d6805550613fe8eb80a2acb0d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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.11.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | fabricatio_webui-0.11.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 |
126a5502a3efcd2ed355d2209d5da99d65f575fd6abc36350c53960f3259f77b
|
|
BLAKE2b-256 checksum How to use checksums |
195d9aaa6edf9887f0d7054bdd99199da1b37536ead96782377c83c2d2904b79
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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}
|