Skip to main content

fabricatio-webui

MIT Python Versions PyPI Version PyPI Downloads PyPI Downloads Bindings: PyO3 Build Tool: uv + maturin

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

API

All functionality is exposed through the Rust-backed Python module fabricatio_webui.rust.

start_service(frontend_dir, data_dir, addr, node_registry_json, allowed_origins, submit_fn, cancel_fn, queue_snapshot_fn, history_snapshot_fn)

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.

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
allowed_origins Sequence[str] CORS allowed origins
submit_fn Callable Worker: submit(execution_id, workflow_json, task_input_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)

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 node_start / node_done / node_error / node_output / execution_done 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.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)
    await asyncio.gather(
        start_service("./www", "./workflows", "127.0.0.1:9846",
                      json.dumps(build_node_registry()["node_types"]), [],
                      worker.submit, worker.cancel_current,
                      worker.queue_snapshot, worker.history_snapshot),
        worker.run(),
    )

asyncio.run(main())

Configuration

WebuiConfig is a frozen dataclass loaded from Fabricatio's configuration system:

from fabricatio_webui.config import webui_config

Dependencies

  • fabricatio-core — core interfaces and configuration
  • axum + tokio + tower-http (Rust) — HTTP server and middleware
  • typer (optional, for CLI) — fc-webui command

Todos / Known Gaps

Scanned 2026-08-09. Grouped by category; checkboxes track completion.

Functional gaps

  • WS status events are dropped at the Rust boundaryWorkflowWorker._emit_status broadcasts {"type": "status", ...} (queue_length / running_count), and the frontend execution store handles case 'status', but src/webui.rs rust_broadcast deserializes into the WsMessage enum which has no Status variant — parse fails and the message is silently discarded. The queue indicator can never update live over WS. Fix: add Status { queue_length, running_count } to WsMessage in src/types.rs (+ serde round-trip test).
  • llm_token protocol surface is deadfrontend/src/types/api.ts declares WSLLMToken (type: 'llm_token'), but nothing in Python ever emits it and Rust has no matching variant. Either implement streaming token events or delete the type.
  • ComfyNode.vue open-source emit is not wired — the title-bar dblclick emits open-source, but VueFlow does not propagate custom events from custom node types, so NodeCanvas.vue uses the onNodeClick dblclick path instead. Remove the dead emit or document why it is kept.

Configuration gaps

  • WebuiConfig.persist_workflows is never read — declared in python/fabricatio_webui/config.py but no code consults it.
  • WebuiConfig.queue_max / history_max never reach the workercli.py constructs WorkflowWorker(rust_broadcast, data_dir) without forwarding them; the worker's own defaults (64 / 256) can silently diverge from config.

Test gaps

  • test_blueprints.py has 5 failing tests — stale expectations referencing GenerateNovelDraft and novel workflows that no longer exist in fabricatio-novel after its redesign. Update or remove the tests.
  • test_webui.py is a stubWebuiRole(LLMTestRole) tests nothing and does not import Webui despite its docstring. Fill in or delete.
  • migrate_board has no test coveragetest_registry.py covers migrate_workflow only; the format 0/1 → 2 board migration is untested.
  • Frontend unit coverage is thin — only argGroups, autoLayout, board store, and NodeWidget have specs. Missing: workflow/ui/execution/loading/notifications stores, all canvas/chrome/board components, and all composables (useWebSocket, useHotkeys, useAppActions, useOutputPreview).
  • No Rust tests beyond types.rsapi.rs, state.rs, ws.rs, webui.rs have no unit/integration tests for the HTTP and WS endpoints.

Docs gaps

  • README start_service signature is stale — documented with 9 parameters, but the actual PyO3 signature (see rust/__init__.pyi) has 12: blueprints_json and rebuild_roles_fn are missing from the table and the code example.
  • README WorkflowWorker example is wrongWorkflowWorker(rust_broadcast) omits the required data_dir argument.
  • README does not document the board editor — no mention of roles, blueprints, format_version 2 boards, or the /api/nodes, /api/blueprints, /api/workflows (CRUD) endpoints.
  • README does not document the WS protocol — message types (execution_start, node_start, node_done, node_error, node_output, execution_done, status, submit) are only discoverable from code.

Code hygiene

  • Pre-existing ruff violations in registry/_schema.pyC901 (_type_to_port_type 13 > 10) and PLR0912 (_widget_hint 15 > 12); carried over verbatim from the old registry.py. Refactor or extend the # noqa comments.
  • Vite INEFFECTIVE_DYNAMIC_IMPORT warningsrc/api/client.ts is dynamically imported by stores/board.ts but 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 configpython/ has no pyproject.toml; tests must be invoked with an explicit path (python -m pytest packages/fabricatio-webui/python/tests/) and uv run attempts rebuilds and times out.

License

This project is licensed under the MIT License.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

fabricatio_webui-0.5.20-cp314-cp314-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.14Windows x86-64

fabricatio_webui-0.5.20-cp314-cp314-manylinux_2_34_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

fabricatio_webui-0.5.20-cp314-cp314-manylinux_2_34_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ ARM64

fabricatio_webui-0.5.20-cp314-cp314-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

fabricatio_webui-0.5.20-cp313-cp313-win_amd64.whl (3.4 MB view details)

Uploaded CPython 3.13Windows x86-64

fabricatio_webui-0.5.20-cp313-cp313-manylinux_2_34_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

fabricatio_webui-0.5.20-cp313-cp313-manylinux_2_34_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ ARM64

fabricatio_webui-0.5.20-cp313-cp313-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fabricatio_webui-0.5.20-cp312-cp312-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.12Windows x86-64

fabricatio_webui-0.5.20-cp312-cp312-manylinux_2_34_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

fabricatio_webui-0.5.20-cp312-cp312-manylinux_2_34_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ ARM64

fabricatio_webui-0.5.20-cp312-cp312-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

File details

Details for the file fabricatio_webui-0.5.20-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: fabricatio_webui-0.5.20-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}

File hashes

Hashes for fabricatio_webui-0.5.20-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 61168f3cfb80d7cc53e23ee5024f149a3fbb8557b40022a159b8bc454ee99654
MD5 9be25c5c6ef707c784bb9758ea53b7d7
BLAKE2b-256 bd669d327b79d6e15761a7efe3825cb28e228cafaecb741713081f152ca0b31e

See more details on using hashes here.

File details

Details for the file fabricatio_webui-0.5.20-cp314-cp314-manylinux_2_34_x86_64.whl.

File metadata

  • Download URL: fabricatio_webui-0.5.20-cp314-cp314-manylinux_2_34_x86_64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: CPython 3.14, manylinux: glibc 2.34+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}

File hashes

Hashes for fabricatio_webui-0.5.20-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 2e5da7cf60dd334a65cdd8cf7c3d02caf0fa4bc0f6e9073a80cd2fd12cf93d44
MD5 f973b6fa4680a80730af95bbd9b32e4c
BLAKE2b-256 e6b13f88f753f028e7f4f00d9ef46a25b9aecaf3a58ebf93dfb31cd9cb160705

See more details on using hashes here.

File details

Details for the file fabricatio_webui-0.5.20-cp314-cp314-manylinux_2_34_aarch64.whl.

File metadata

  • Download URL: fabricatio_webui-0.5.20-cp314-cp314-manylinux_2_34_aarch64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.14, manylinux: glibc 2.34+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}

File hashes

Hashes for fabricatio_webui-0.5.20-cp314-cp314-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 1dc8a0bb4354e01565f18f245d8059e467d5d599f6b536b6172b7b4a0f482e23
MD5 23da50ab6f765635bc83be09fdb122d2
BLAKE2b-256 4816a0fd7058b431ef6461934586e62dfd38afec0caba77b2fa543d3261109ea

See more details on using hashes here.

File details

Details for the file fabricatio_webui-0.5.20-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fabricatio_webui-0.5.20-cp314-cp314-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.14, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}

File hashes

Hashes for fabricatio_webui-0.5.20-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bcdd0e031380483b9f3ee62ccc8ec2d7885e50438c61b60fa7e51352c76bbd4f
MD5 98c942c1bc720cc74410ab0b3697788d
BLAKE2b-256 ac1a3e68e3f8f181b0b0971ecbbc4e240ea759c818be614ce53138fe2eade493

See more details on using hashes here.

File details

Details for the file fabricatio_webui-0.5.20-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: fabricatio_webui-0.5.20-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 3.4 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}

File hashes

Hashes for fabricatio_webui-0.5.20-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 10b51427d4efe0c9a4509ae3a01eb1b0125697b59c9ae533179005d7a9e5ac5b
MD5 2cf826b40eb9247177356b9e96aa0677
BLAKE2b-256 b9f9ac08c958cd8aed5c48f9937e8681d54fb0566f8f61f587a648862a678e37

See more details on using hashes here.

File details

Details for the file fabricatio_webui-0.5.20-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

  • Download URL: fabricatio_webui-0.5.20-cp313-cp313-manylinux_2_34_x86_64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.13, manylinux: glibc 2.34+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}

File hashes

Hashes for fabricatio_webui-0.5.20-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 bef5c0a74e25a6303a718cafbe9ba272d0b1dd8ebe37c37366eb293d2c3b4a24
MD5 bf26664db1e2d05c65773f5166333485
BLAKE2b-256 53bb2a6acfde77759f62924611f52ef54c74d00e2f6bc3b6a185c7442a7e3455

See more details on using hashes here.

File details

Details for the file fabricatio_webui-0.5.20-cp313-cp313-manylinux_2_34_aarch64.whl.

File metadata

  • Download URL: fabricatio_webui-0.5.20-cp313-cp313-manylinux_2_34_aarch64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.13, manylinux: glibc 2.34+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}

File hashes

Hashes for fabricatio_webui-0.5.20-cp313-cp313-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 3c22dbacd839e62204794e3b2c7c116cb0c4ecf4dff5ad77b59405c4514d5ea6
MD5 3143263f58735ea05913e76ae0e48d97
BLAKE2b-256 027f9f2e5e97e9e9f9c122b9f8821fa06c7c049698743d2a7d553a8dc9be154a

See more details on using hashes here.

File details

Details for the file fabricatio_webui-0.5.20-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fabricatio_webui-0.5.20-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}

File hashes

Hashes for fabricatio_webui-0.5.20-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a968689bf1784f7a31d629cff2fe56fb5d2803710f92846f299518866319a6f0
MD5 4ff76b820a9be639199d64032bf48912
BLAKE2b-256 0a189f64b5f53b25120fd77cbd65edcbaa0bd5a7c02ed2cb814c9670475a851b

See more details on using hashes here.

File details

Details for the file fabricatio_webui-0.5.20-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: fabricatio_webui-0.5.20-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}

File hashes

Hashes for fabricatio_webui-0.5.20-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8dee5e066ddf4ba29170895ee3dbfca68c44af59b8d4a417f30fe83c24d053e7
MD5 095eb1c6e7dcee699784017f23b2c49c
BLAKE2b-256 9b8d55d30eb1bc0510ae531c92c4cf0c7ce070cf8e238a964176e41859ad39d7

See more details on using hashes here.

File details

Details for the file fabricatio_webui-0.5.20-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

  • Download URL: fabricatio_webui-0.5.20-cp312-cp312-manylinux_2_34_x86_64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: CPython 3.12, manylinux: glibc 2.34+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}

File hashes

Hashes for fabricatio_webui-0.5.20-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 75553f25d073baf90def49dd2a29a589b193438055e039f183ddd2d2271b2176
MD5 528682950223092f5615ee6637258a03
BLAKE2b-256 cc00d8010057f5a90b16b6ba320ed436feb2d5f8be7f81893bb18e9599ef15cf

See more details on using hashes here.

File details

Details for the file fabricatio_webui-0.5.20-cp312-cp312-manylinux_2_34_aarch64.whl.

File metadata

  • Download URL: fabricatio_webui-0.5.20-cp312-cp312-manylinux_2_34_aarch64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.12, manylinux: glibc 2.34+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}

File hashes

Hashes for fabricatio_webui-0.5.20-cp312-cp312-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 8d607a06f23295267789d31d84715ea573453404c15e77289d383779ed36ab3f
MD5 8dae209c21f51fd9befb92b1ceafafb9
BLAKE2b-256 bff4816bff818ee10405c68414a72702184abc444e1fe32fb3802154b1f79978

See more details on using hashes here.

File details

Details for the file fabricatio_webui-0.5.20-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fabricatio_webui-0.5.20-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","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}

File hashes

Hashes for fabricatio_webui-0.5.20-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0ffe1d5516cb7f34c27c360af1e24db2f53d44a2c6333414328e15cd60ac26dc
MD5 1b95b4f900f72ff90be0225466a7ce53
BLAKE2b-256 f828b487972b96d2171f2892ba2c3b87797adb40542828eab6407229f386cf54

See more details on using hashes here.

Release history Release notifications | RSS feed

0.6.1

12 files

0.6.0

12 files

This release

0.5.20 This release

12 files

0.4.1

12 files

0.3.2

12 files

0.3.0

12 files

0.2.2

12 files

0.1.3

12 files

0.1.2

12 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page