Skip to main content

sharpit

CI Release Quality Gate Coverage

Reliability Security Maintainability Duplication

Python 3.12 | 3.13 | 3.14 Licence: Apache-2.0 Status: alpha Code style: ruff Type checked: pyright

An embedded, local-only developer console for FastAPI apps. One call mounts a web console at /sharpit and a JSON API at /sharpit/api inside your own app, so a running service becomes understandable in minutes: its configuration and where each value came from, every route, the dependency providers, loggers you can retune live, and a vulnerability scan of the installed packages.

sharpit is a Python/FastAPI port of BootUI by Julien Dubois (Apache-2.0), the Spring Boot developer console. It ports BootUI's design goals, JSON contract and test cases; the UI is new.

sharpit overview

Status: alpha (0.3.0, FastAPI only). Django and Flask are not supported. See CHANGELOG.md.

Install

sharpit is not on PyPI yet. Install it from git:

pip install "sharpit @ git+https://github.com/ffroliva/sharpit.git"
# or
uv add "sharpit @ git+https://github.com/ffroliva/sharpit.git"

Python 3.12+. Runtime dependencies are only starlette>=0.44 and packaging>=23. Optional extras:

Extra Adds Why
sharpit[fastapi] fastapi>=0.115 the supported host
sharpit[settings] pydantic-settings>=2.4 the Config panel shows which source each value came from

Quickstart

from fastapi import FastAPI
import sharpit

app = FastAPI()

# Register your application's middleware first:
# app.add_middleware(...)

# Install sharpit after your app's middleware:
sharpit.install(app)  # mounts /sharpit and /sharpit/api

Call sharpit.install(app) after adding your own middleware. Starlette builds middleware from the outside in, so calling install() last ensures sharpit's capture middleware sits outside your application middleware. This lets sharpit measure total request durations and record unhandled errors correctly.

Run it with a dev signal and open http://127.0.0.1:8000/sharpit/:

fastapi dev app.py          # or: uvicorn app:app --reload

Keyword arguments for sharpit.install():

  • engines: optional sequence of SQLAlchemy Engine or AsyncEngine instances to monitor in connection pools and health checks (e.g. engines=[engine]). If omitted, engines are discovered automatically on first connection.
  • health_checks: optional mapping of check names to zero-argument callables (e.g. health_checks={"cache": ping_cache}).
  • alembic_config: optional path to alembic.ini (default "alembic.ini").
  • settings: optional pydantic-settings instance or sequence of instances to show configuration provenance.

Other options are keyword arguments or environment variables, see Settings.

If /sharpit answers 404, read Activation: sharpit stays off unless a dev signal turns it on.

Gate CI on findings

sharpit turns runtime capture into automated test gates with pytest --sharpit. It tracks SQL statements and observable exceptions per test, detects N+1 queries, checks query budgets, and runs static analysis advisors. If a test exceeds its query budget, triggers an N+1 query, or swallows an unhandled exception, the build fails. When capture cannot see enough to judge, the run status is unknown and fails closed.

pytest --sharpit --sharpit-report=sharpit-report.json --sharpit-junit=sharpit-junit.xml

Read Pytest plugin and Test report for options, gates, and CI examples.

Documentation

The full documentation is at https://ffroliva.github.io/sharpit/:

License

Apache License 2.0. See LICENSE and NOTICE. sharpit is derived from BootUI, Copyright Julien Dubois.

Metadata

Release files for sharpit 0.3.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 sharpit 0.3.0
File Size Uploaded Provenance Actions
sharpit-0.3.0.tar.gz 687.4 kB With provenance Details for sharpit-0.3.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for sharpit 0.3.0
File Interpreter ABI Platform Actions
sharpit-0.3.0-py3-none-any.whl Python 3 none any Details for sharpit-0.3.0-py3-none-any.whl

Total release size: 963.3 kB

Release files / sharpit-0.3.0.tar.gz

Download URL sharpit-0.3.0.tar.gz
Size 687.4 kB
Tags Source
SHA-256 checksum
How to use checksums
d9bec6c070759f8c423ea123f21f01c9481cd6ea2ac4c64971cf87b70931cafd
BLAKE2b-256 checksum
How to use checksums
dd2f290e270192b6c0f0f2c581ef32dfaf998294d7f6241864b64bbb7787eb6d
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 Nov 1, 2026.

Transparency log

Release files / sharpit-0.3.0-py3-none-any.whl

Download URL sharpit-0.3.0-py3-none-any.whl
Size 275.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3219a3c76b650325b58c50375a2f68a3ee6ba23a753af20ff0e1af87b8ca45ff
BLAKE2b-256 checksum
How to use checksums
90e2e86adb7691c365554db7c0b7e68d400166973d95fe744653456bd46ae7d8
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 Nov 1, 2026.

Transparency log

Security for sharpit 0.3.0

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for sharpit-0.3.0.tar.gz

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 Nov 1, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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