Skip to main content

Labtasker WebUI

Labtasker WebUI connects to an existing Labtasker v2 Server or local project. It brings Queue progress, Task details, and structured results into one compact workspace, with reusable views for different experiments.

Labtasker WebUI showing Queue progress, filters, and custom Task columns

The key features are:

  • Queue progress at a glance: Track pending, running, succeeded, failed, and cancelled Tasks. Status counts follow the applied Task name and advanced filter, across all statuses; the Status selector narrows only the Task list and its total.
  • Routes and Workers: Collapse route navigation when you need more table space. Inspect Idle/Busy Worker counts and last-seen reports; include inactive routes when reviewing historical work. These features require Server 2.2 or later; Worker reports require Workers that support observations.
  • Flexible result exploration: Filter Task fields and nested values, or add custom columns such as args.test_num and result.succ_rate. Resize, reorder, and double-click columns to fit their contents.
  • Reusable data views: Save filters, sorting, and column layouts for each connection and Queue. Switch views without rebuilding the table each time.
  • Complete Task inspection: Open a Task to inspect its arguments, metadata, execution timeline, errors, and results. Cancel, requeue, or delete selected Tasks through explicit controls.
  • Easy local use: Launch from Python without Node.js. Remember connections and UI preferences in the WebUI working directory's .labtasker/ folder.

Installation

Labtasker WebUI requires Python 3.11 or newer. Run it with uv:

uvx labtasker-webui

Or install and run it with pip:

python -m pip install labtasker-webui
labtasker-webui

Open http://127.0.0.1:8080 to connect. The Python package includes the built frontend; Node.js is only needed for development and building the package.

Example

Choose a connection type on the connection page:

  • HTTP Server: Enter a Server URL starting with http:// or https://, plus a Bearer token if the Server requires one.
  • Local project: Enter the directory of an already-running Labtasker project. . refers to the WebUI process's working directory. Local attachment uses the project's Unix socket and requires POSIX and a loopback bind.

If a business response reports a Server older than the installed Labtasker Client, WebUI displays a dismissible upgrade warning. It adds no version-check request and does not block browsing or actions. Servers that omit their version do not trigger the warning. Reloading or reconnecting resets dismissal.

Open a Queue, then filter its Tasks:

status in ["pending", "running"]

Add a custom column through Columns, using a JSON path:

args.test_num
result.succ_rate

Missing values stay blank. Dropdowns and filter presets apply immediately; text filters apply on Enter or when leaving the input group. Apply remains available as a fallback.

Use + Create view beside the breadcrumbs to save the current filters, sorting, and columns. A dot marks changes to the selected view; Save updates it. The actions menu provides Save as…, Rename, Reset changes, and Delete. Deleting a view leaves Tasks and the current layout intact.

The list loads more Tasks as you scroll and preserves existing selections. While reading older rows, background refresh does not reorder the list. Returning to the top resumes live refresh; Refresh updates it explicitly. Click a Task to open its details. Dates use local time, with full timestamps available on hover.

Project profiles

On loopback binds, the WebUI remembers settings in its working directory:

File Contents
.labtasker/webui-profile.json Connection, columns, views, filters, and UI preferences
.labtasker/webui-token Bearer token, stored separately with owner-only permissions

Both files use 0600 permissions. The token is plaintext in its protected local file; it is never returned by the profile API or stored in browser storage. The browser uses an opaque HttpOnly, SameSite=Strict session cookie.

Profiles are separate from Labtasker's .labtasker/config.toml. Named views and column layouts are scoped to the connection and Queue. Disconnecting removes the remembered connection while retaining UI preferences.

Use --no-profile to disable disk persistence. Browser-local settings remain available; interactive connections then expire after 12 hours of inactivity or a WebUI restart. Profiles are disabled for non-loopback binds.

Configuration

Connection addresses, project directories, and tokens are configured in the UI. The CLI only controls how the WebUI itself runs:

CLI Environment Default
--host LABTASKER_WEBUI_HOST 127.0.0.1
--port LABTASKER_WEBUI_PORT 8080
--no-profile — Persistence enabled on loopback

Non-loopback deployments require an explicit allowlist of upstream origins:

LABTASKER_WEBUI_ALLOWED_SERVER_ORIGINS=https://tasks.example labtasker-webui --host 0.0.0.0

Separate multiple origins with commas. The WebUI has no user or role system; restrict network access and use authentication/TLS at a trusted reverse proxy for shared deployments. The backend validates upstream origins and redirects, uses HTTPX's environment proxy settings, and keeps credentials out of browser responses.

Scope

Labtasker WebUI inspects existing workloads and supports cancellation, requeue, and permanent deletion of explicitly selected Task IDs. Batch deletion reports each result; it is not an atomic operation.

Use the Labtasker Client, CLI, or Workers to submit and execute Tasks. The WebUI does not submit or edit Tasks, schedule work, allocate resources, or manage the Labtasker process. Local mode only attaches to an existing instance and never opens its database.

Documentation

Development

npm ci --prefix frontend
npm --prefix frontend run build
uv sync --group dev --frozen
uv run labtasker-webui

See Contributing for the validation gate and development, QA, and release SOPs. CI covers Python checks, frontend tests, three browser engines, and installation of the built package without Node.js.

License

Apache-2.0, matching Labtasker.

Search Task names

The Task name input supports case-insensitive subsequence search: tr ev or ev tr finds train_model_eval. Every whitespace-separated word must match. Press Enter or leave the input to apply; clearing it removes the name restriction. For a strict name match, use name == "train_model_eval" in Advanced filter. The Server applies the same search to the Task list and counts across the Queue, with the existing sorting preserved. This requires a Server supporting name_fuzzy; saved Task name inputs also use fuzzy matching.

Metadata

Release files for labtasker-webui 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for labtasker-webui 0.2.0
File Size Uploaded
labtasker_webui-0.2.0.tar.gz 597.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for labtasker-webui 0.2.0
File Interpreter ABI Platform
labtasker_webui-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 754.0 kB

Release files / labtasker_webui-0.2.0.tar.gz

Download URL labtasker_webui-0.2.0.tar.gz
Size 597.4 kB
Tags Source
SHA-256 checksum
How to use checksums
bccc8a8eef847764188343c01c8ff6575e7253481087c06b4de98f356f514d4f
BLAKE2b-256 checksum
How to use checksums
a673e781a43a1965deee04c270fbcd1f2f5cd317391274e0a20ea4974354a7b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / labtasker_webui-0.2.0-py3-none-any.whl

Download URL labtasker_webui-0.2.0-py3-none-any.whl
Size 156.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4d4e5db635b9e2b1456bdfe249f44435288cdeefbe7cc99f9091423ece088241
BLAKE2b-256 checksum
How to use checksums
18cc5b6a05ef68bbc627828abd99a796619a7168252fbb12f0a2576a390e2924
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release history Release notifications | RSS feed

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.2.1

2 release files

This release

0.2.0 This release

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page