Skip to main content

Toolframe Streamlit Dashboard

This provider runs one native Streamlit process for the shared UI environment. Business plugins contribute synchronous render(context) pages; navigation and plugin management are provided here. Pages use the SDK's synchronous context.services.require(name, version=1).call(method, params) proxy. The Streamlit toolbar uses viewer mode, hiding its Deploy and developer controls. Its native running indicator shows a circular spinner instead of cycling sports icons. The Running label, Stop button and connection indicators remain available; reduced-motion preferences disable the rotation. The narrowly scoped styling targets Streamlit 1.61's busy-widget test ID and should be checked on upgrades. Plugin lifecycle operations remain available on the Toolframe management page.

Install

Install the provider into a running Toolframe application:

toolframe --home APP plugin add pypi:toolframe-streamlit-dashboard==0.4.2 --enable

Core resolves dependencies and manages the provider's isolated Python environment. The Entry Register template already includes this provider.

Core resolves the provider and all contributing plugin wheels (with their ui extras) together before replacing the worker. Changing any page package replaces the whole Dashboard. Browser sessions reconnect and session state may reset; business services and their persisted data remain independently owned.

The provider binds an ephemeral private loopback port and reports it to core. Core owns the stable / gateway, management credentials and HTTP/WebSocket admission. Streamlit owns its server lifespan and script threads. A stuck script thread is a cleanup failure, never a successful in-process code reload.

SDK 0.2 page contexts carry a host-issued reference for each browser connection. Pages use context.can(scope) to adapt controls; core checks every service call. Navigation filters page scopes and the plugin-management page requires system.plugins.read. Its mutation controls require the relevant management scopes. A password without system grants cannot reach these operations through the bridge. Incoming browser identity headers are not trusted.

The shared header displays local control, protected access or public access with its reason. It remains present when the separate Dashboard Auth plugin is unavailable. Its one-second refresh is presentation polling and does not count as password activity. Use activity=False for other background service polling.

prepare imports and validates page entry points without rendering them. A catalog epoch becomes visible only on commit; abort preserves live navigation. The management page submits operations to core and reads their journal; it does not install packages or access SQLite itself.

For enable, reload, disable, stop and remove, choose Preview operation, review the affected plugins, then choose Apply enable/reload/disable/stop/remove. A preview does not change plugin state. Only stop offers the separate force-stop option; temporary runtime validation is offered only for validate.

Pending operations update automatically. Completion or errors appear beside the controls, and the operation ID stays in the page URL so a browser refresh or Dashboard replacement can resume reading its result. Operation history can reopen a preview or result. Disabled plugins remain in the management list for re-enabling; their pages and tools disappear after the disable operation completes. Disabled plugins default to enable and do not offer reload/disable/stop. Enable restores the installed version; update stages a freshly resolved package.

With core 0.5.0+, Operations queries the complete core journal with plugin, action and result filters. It defaults to 10 rows, with 25/50 options and Newer/Older navigation. Each row has a permanent operation number, browser-local creation time, action, target and result. Preview rows include the intended action (for example, plan enable). Viewing a result uses its durable UUID. The refresh button aligns with the bottom of the page-size selector, at the right edge. Newer and Older sit at opposite edges of one pagination row.

Page navigation retains a sequence boundary so new arrivals do not shift older pages. Refresh history, changing filters or submitting an operation starts at the latest first page. The count indicates newer arrivals; statuses remain current. Read-only operators can filter, page and inspect results, while apply and cancel retain their existing scope checks.

The Plugin dependencies & impact accordion sits directly below the status table and starts collapsed. It reads core's dependency_graph diagnostics (core 0.4.0+) under the existing system.plugins.read permission. Nodes show Cordis lifecycle state and current health; arrows run from consumer to supplier. Solid lines are required services, dashed lines optional services, and dotted lines presentation providers. Missing suppliers and inactive plugins stay visible.

Select a plugin and reload or disable to highlight the lifecycle cohort, optional consumers, and page/tool/document entries that may reconnect or refresh. The cohort comes from core's actual planner. Presentation refreshes do not imply that the provider or every page's business process restarts. Use the full-screen control to enlarge the graph; the relationship table includes exact service names and versions.

This view never installs, validates, submits an operation, or changes composition. It describes selected versions; inactive declarations are labeled last_candidate. New candidates or pending configuration changes can produce a different plan, so the existing Preview operation / Apply workflow remains authoritative. Refreshing status refreshes the graph too. An older core shows an upgrade hint.

The graph is generated from core state, including newly installed plugins and their declared dependencies. plugin new only creates source and does not add a node; use plugin add to install it. Refresh status after changes made elsewhere. This is a refreshed snapshot, not a continuously pushed graph animation.

Development: uv sync --group dev, uv run pytest -q, uv build --no-sources. Each lifecycle integration test uses a fresh subprocess because Streamlit's runtime singleton belongs to the process, not a reloadable plugin object.

For fresh-environment CI checks, run uv run --isolated --no-project --python 3.14.7 python -I scripts/validate.py. See CI and package publishing for GitHub Actions, validation artifacts, pinned SDK prerequisites and manual TestPyPI/PyPI Trusted Publishing setup.

For release validation and Trusted Publisher setup, see releasing.

License

Licensed under the Apache License, Version 2.0. See LICENSE and NOTICE.

Metadata

Release files for toolframe-streamlit-dashboard 0.4.2

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

Source distribution (sdist)

Source distribution for toolframe-streamlit-dashboard 0.4.2
File Size Uploaded
toolframe_streamlit_dashboard-0.4.2.tar.gz 86.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for toolframe-streamlit-dashboard 0.4.2
File Interpreter ABI Platform
toolframe_streamlit_dashboard-0.4.2-py3-none-any.whl Python 3 none any Details

Total release size: 107.6 kB

Release files / toolframe_streamlit_dashboard-0.4.2.tar.gz

Download URL toolframe_streamlit_dashboard-0.4.2.tar.gz
Size 86.0 kB
Tags Source
SHA-256 checksum
How to use checksums
81df99860d3c85f42fddfcdd3ab4bb8a9eaa0e8b2fabd71ed5d2ba007e7d3729
BLAKE2b-256 checksum
How to use checksums
ba6652965b7ad9e2a9e935fd51fe8ea2104d39b3804cded3696f71e960ad643f
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 Oct 14, 2026.

Transparency log

Release files / toolframe_streamlit_dashboard-0.4.2-py3-none-any.whl

Download URL toolframe_streamlit_dashboard-0.4.2-py3-none-any.whl
Size 21.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9c291b61125a134a13a448bf65843d6eaebd2ea311b7e9308f746c2283c03ddc
BLAKE2b-256 checksum
How to use checksums
f1ca1b39260cfe70791f25d43e51efef47728ec349f7245d22387add47ea271e
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 Oct 14, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.4.2 This release

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