Skip to main content

WebCortex

pip install web-cortex-framework

Installs as web-cortex-framework, imports as webcortex — the same split as djangorestframework → import rest_framework.

Python 3.12, 3.13, and free-threaded 3.14 (3.14t). GIL-enabled 3.14 is not supported and no wheel is published for it — see Known issue below.

📖 Documentation · Tutorial · Use cases · Security

A Python web framework with a Rust core, built on one idea:

If you declared it, Rust can run it — and an agent can call it.

Django and Rails were designed when the only client was a browser. Today the client is just as likely to be a model. WebCortex treats that as the primary case rather than something you bolt on with a second, hand-maintained tool server.

# api.py
from webcortex import WebCortex

app = WebCortex("bookstore", database="sqlite://./app.db")

app.api_key("WEBCORTEX_API_KEY", id="service", scopes=["read", "write"])
app.rate_limit(per_second=50)
app.anonymous_scopes("read")

app.resource(
    "books",
    fields={"id": int, "title": str, "author": str, "year": int},
    tools=True,
    read_scopes=["read"],
    write_scopes=["write"],
)

@app.get("/books/{id}/blurb", tool=True, scopes=["read"])
def blurb(id: int) -> str:
    """One-line pitch for a book."""
    return f"Book {id} — highly recommended."
$ webcortex dev

You now have a REST API, an OpenAPI 3.1 document, a live MCP server exposing all six endpoints as tools, authentication, rate limiting, and security headers. No second file, no schema written twice, no drift.


Start here

# 3.13, or the free-threaded 3.14t — not GIL-enabled 3.14. See Known issue.
uv venv --python 3.13 && uv pip install web-cortex-framework

webcortex new myapp                # --template api | fullstack | agent | behaviour
cd myapp
export WEBCORTEX_API_KEY=$(webcortex keygen)
webcortex dev

Why a Rust core, specifically

Most Rust-accelerated Python servers put Rust at the socket and call Python for every request. You get faster parsing; your handler is still interpreted.

WebCortex puts the boundary somewhere more useful. Python is a declaration language that compiles to a plan the Rust runtime executes. A route whose work is expressible as data — a query, a proxy, a rendered page, a static file, an agent invocation — runs entirely in Rust and never enters the interpreter at request time. In practice that is most of a CRUD API.

$ webcortex check
  12 routes, 9 served without touching Python

When a route genuinely needs Python, it crosses onto a pool of free-threaded interpreter workers (CPython 3.13+/3.14, GIL disabled), each running its own event loop. Handlers run in real parallel — measured at 4.82× vs 1.38× under the GIL (DESIGN.md has the numbers and their caveats).

WebCortex runs correctly on a GIL build too, and tells you which mode it is in.

Behaviours

A "skill" written as a prompt is a suggestion. The model reads it and may ignore it, and "if X then Y" fails silently when it does.

A Behaviour inverts that. The control flow is real Python — a for loop is a loop, an if is a branch, and both execute whether or not a model would have chosen to. Only the leaves are probabilistic:

@app.behaviour("triage", tools=["list_tickets", "update_tickets"],
               max_steps=100, token_budget=100_000)
def triage(ctx, input):
    """Classify every open ticket and escalate the urgent ones."""
    tickets = ctx.call("list_tickets", limit=50)
    escalated = []

    for ticket in tickets:                        # a real loop
        verdict = ctx.ask(                        # a model call
            f"Grade this ticket:\n{ticket['body']}",
            schema={
                "type": "object",
                "properties": {
                    "urgency": {"type": "integer"},
                    "category": {"enum": ["bug", "billing", "other"]},
                },
                "required": ["urgency", "category"],
            },
        )
        if verdict["urgency"] >= input.get("threshold", 7):   # a real branch
            escalated.append(ticket["id"])
        ctx.call("update_tickets", id=ticket["id"], body=ticket["body"],
                 urgency=verdict["urgency"],
                 state="escalated" if ticket["id"] in escalated else "triaged")

    return {"escalated": escalated, "usage": ctx.usage}

You get a procedure with deterministic structure and probabilistic steps, rather than a probabilistic procedure.

ctx is how a behaviour reaches the world:

ctx.call(tool, **kwargs) invoke one of the app's tools, in-process
ctx.ask(prompt, schema=...) a model call; a schema forces the shape, so branches switch on real values
ctx.log(msg) / ctx.halt(reason) narrate or stop deliberately
ctx.usage / ctx.trace budget consumed and every leaf executed, readable mid-run
ctx.user / ctx.tools the delegated principal and what it may call

A behaviour is a tool. It registers as a route, so it is automatically an MCP tool, an OpenAPI operation, and something an agent — or another behaviour — can call. Composition is just a tool call, so budgets and scopes still apply.

The runtime enforces the limits, not your diligence:

  • max_steps caps total leaf operations. A loop that would run 100 times with max_steps=3 stops at 3 and returns {"halted": true, "reason": ...}.
  • token_budget caps spend.
  • A behaviour cannot call a tool it did not declare.
  • An approval-gated tool cannot be laundered through a behaviour — the gate halts the run, exactly as it halts an agent.
  • Scopes are delegated by intersection, never unioned.
webcortex new myapp --template behaviour

The seven kinds of route

Kind Declared with Runs in
Static app.static(...) Rust
Query app.query(...), app.resource(...) Rust
Page app.page(...) Rust (minijinja)
Files app.static_files(...) Rust
Proxy app.proxy(...) Rust
Agent app.agent(..., expose_at=...) Rust
Behaviour @app.behaviour(...) Python worker pool
Python @app.get(...) Python worker pool

Every route is a tool

Mark a route tool=True and it appears in MCP tools/list, with an input schema derived from the handler's own type hints. Agents declared in the same app call those tools in-process — a function call through the same dispatcher the HTTP server uses, not a loopback request.

app.agent(
    "librarian",
    model="claude-opus-5",
    tools=["list_books", "get_books"],
    scopes=["read"],          # what a run may do
    expose_scopes=["read"],   # who may start one
    max_steps=8,
    token_budget=50_000,
    expose_at="/ask",
)

A typo in tools fails at boot with a "did you mean" suggestion.

What makes agents safe to deploy

These are enforced by the runtime, not by your diligence:

Delegated authority. An agent run executes as caller.delegate_to_agent(...), whose scopes are intersected with the caller's — never unioned. An anonymous caller cannot launch a privileged agent. This is the confused-deputy defence, and it is a property of the type, not a convention.

Human approval gates. Mark a route approval="required" and an agent asking for it does not get it — the run suspends and records an approval request. The gate also applies to direct MCP calls, so it cannot be stepped around.

@app.delete("/books/all", tool=True, scopes=["write"], approval="required")
def clear_catalogue(confirm: bool = False) -> dict: ...

Runtime-enforced budgets. max_steps and token_budget are checked before each provider call. A looping model costs a bounded amount.

Scope-filtered tool lists. tools/list shows only what that caller can invoke. A reader sees three tools where an admin sees six.

A full audit trail, including refused calls, at GET /_webcortex/audit.

Security defaults

Deny-by-default throughout; relaxing something costs a line, tightening it costs nothing. API keys are referenced by environment variable, hashed with SHA-256, and compared in constant time. JWT (HS/RS) with mandatory expiry validation. Per-principal token-bucket rate limiting. Security headers on every response. CORS that refuses * with credentials at boot. Path traversal, symlink escapes, and dotfiles refused by the static server.

webcortex security prints exactly what is reachable without a credential:

$ webcortex security
{"auth_configured": true, "public_routes": ["GET /"], "gated_tools": ["DELETE /books/all"]}

The frontend, without the mess

Two clean paths sharing one data layer, chosen per route:

Server-rendered pages, executed in Rust:

app.page("/", "index.html", sql="SELECT * FROM books LIMIT 20", bind="books")
app.static_files("/assets", "static")

The rule that keeps this clean: a template receives a data object and nothing else. It has no database handle and cannot call Python, so it cannot grow logic. Data is resolved before rendering, from a constant, a query, or a Python handler. Autoescaping is on and derived from the file extension.

A typed TypeScript client for SPA frontends, from the same route table:

$ webcortex typegen          # writes client/api.ts

Zero dependencies, fetch-based, with auth built in. Pages and static mounts are excluded — they are not part of the JSON API surface.

Commands

webcortex new <name>      scaffold a project (api | fullstack | agent | behaviour)
webcortex dev             run with a startup report
webcortex check           routes, tools, and the public attack surface
webcortex security        what is reachable without a credential
webcortex tools           the agent tool manifest
webcortex typegen         generate a typed TypeScript client
webcortex openapi         the OpenAPI 3.1 document
webcortex sql             DDL for declared resources
webcortex keygen          mint an API key

Security

WebCortex has been through an adversarial review of its own controls — auth, authorization, injection, traversal, SSRF, exhaustion, disclosure — plus stress and soak testing. Six issues were found and fixed, each with a regression test in tests/test_pentest.py:

Severity
Remote DoS + total auth failure via a JWT library panic Critical
No panic boundary on the request path High
Proxy path traversal usable as an SSRF primitive High
Unbounded behaviour recursion exhausting the worker pool High
Python tracebacks returned to clients Medium
Client input faults reported as 500s Low

Soak: 1,786,805 requests, 0 errors, 0 panics, memory at steady state.

SECURITY.md has the full report — including what was not tested and the known limits.

Status

v0.3. Working and tested: the manifest IR, router, native ops (static / query / proxy / page / files), the free-threaded Python bridge, authentication and scopes, rate limiting, CORS, security headers, graceful shutdown, Behaviours, the agent runtime with approval gates and budgets, the audit trail, OpenAPI, the MCP server, and TypeScript generation. 251 tests (66 Rust, 185 Python, including a 54-test adversarial suite), clippy clean.

Not yet: Postgres, SSE streaming, durable agent runs, local model supervision. See DESIGN.md for the roadmap, honest risk grading, and — just as importantly — what is deliberately not being built.

Known issue: CPython 3.14.7 with the GIL enabled

On CPython 3.14.7 specifically, with the GIL enabled, the compiled extension fails to import:

ValueError: module functions cannot set METH_CLASS or METH_STATIC

3.12, 3.13, 3.14.6 and the free-threaded 3.14.7 build (3.14t) are all unaffected. 3.14.7 was released on 5 August 2026; the failure began the same day.

This is not a version-resolution accident on your machine — uv resolves 3.14 to the newest patch build available when it runs, so an environment that worked yesterday can stop working today without anything in your project changing.

No cp314 wheel is published, and the CI matrix does not test that target. Shipping a binary that installs cleanly and then fails at import is worse than shipping none: the error arrives later, further from its cause, and looks like a bug in your own application. Use 3.13 or 3.14t.

The investigation so far, including what has been ruled out, is in AGENTS.md §11.

For AI coding tools

AGENTS.md is the machine-facing reference: the complete API surface with exact signatures and defaults, the binding and scope rules, the constraints the runtime enforces, and the specific mistakes that are cheap to make and expensive to debug. Claude Code, Cursor, Codex, Aider and Copilot Workspace all read it by convention.

It is written to be correct rather than welcoming. Humans should start with the docs site instead.

Building from source

# 3.13 is the recommended toolchain today — see "Known issue" above.
uv venv --python 3.13
uv pip install maturin pytest
.venv/bin/maturin develop --uv
.venv/bin/python -m pytest tests/

The free-threaded build is also supported and is the configuration the bridge was designed around:

uv venv --python 3.14t

License

Apache-2.0

Metadata

Release files for web-cortex-framework 0.3.1

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

Source distribution (sdist)

Source distribution for web-cortex-framework 0.3.1
File Size Uploaded
web_cortex_framework-0.3.1.tar.gz 125.7 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for web-cortex-framework 0.3.1
File
web_cortex_framework-0.3.1-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details
web_cortex_framework-0.3.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 Details
web_cortex_framework-0.3.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 Details
web_cortex_framework-0.3.1-cp314-cp314t-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 Details
web_cortex_framework-0.3.1-cp314-cp314t-macosx_10_12_x86_64.whl CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64 Details
web_cortex_framework-0.3.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
web_cortex_framework-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
web_cortex_framework-0.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details
web_cortex_framework-0.3.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
web_cortex_framework-0.3.1-cp313-cp313-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.12+ x86-64 Details
web_cortex_framework-0.3.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
web_cortex_framework-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
web_cortex_framework-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details
web_cortex_framework-0.3.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
web_cortex_framework-0.3.1-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details

Total release size: 82.6 MB

Release files / web_cortex_framework-0.3.1.tar.gz

Download URL web_cortex_framework-0.3.1.tar.gz
Size 125.7 kB
Tags Source
SHA-256 checksum
How to use checksums
1fb2c85f7a1479d52656f25cacc221c1303ea9de3b587ae63527fb20f33f9af7
BLAKE2b-256 checksum
How to use checksums
fb34598ecbdd8d8443dea8a73b33964f6b25ecf365ac54b8762c6ae4907be934
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 Aug 6, 2026.

Transparency log

Release files / web_cortex_framework-0.3.1-cp314-cp314t-win_amd64.whl

Download URL web_cortex_framework-0.3.1-cp314-cp314t-win_amd64.whl
Size 5.4 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
163e37da081f2d8ed741e1730908cdb20310a007bd5d1cb906b72a52cebca4ee
BLAKE2b-256 checksum
How to use checksums
fb751b99124a3ea5de1690357c2d4b1df76a72453236a9c5cc43d4d862340864
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 Aug 6, 2026.

Transparency log

Release files / web_cortex_framework-0.3.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL web_cortex_framework-0.3.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.8 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
e55d34eb1703697a90a5ac3a9b6cfdf7eed49cf6fd2ab4001c3d407365ed1d7b
BLAKE2b-256 checksum
How to use checksums
ee092d6942e56b2df7a0915216fc11c803035d3844af087753186972fdb9c3c4
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 Aug 6, 2026.

Transparency log

Release files / web_cortex_framework-0.3.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL web_cortex_framework-0.3.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 5.6 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
473cb9b7462c3012e6080e46c853c09fef638875715aeee882196f720d20e7f5
BLAKE2b-256 checksum
How to use checksums
270d13ac50ccd8d440420ef807dbbb4022ded67fb0dff897d80b6140e01720f3
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 Aug 6, 2026.

Transparency log

Release files / web_cortex_framework-0.3.1-cp314-cp314t-macosx_11_0_arm64.whl

Download URL web_cortex_framework-0.3.1-cp314-cp314t-macosx_11_0_arm64.whl
Size 5.2 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
809bfbf37441f4bc3f88c80df9468a4390da49459c20edf5dfe07c59d8a3417b
BLAKE2b-256 checksum
How to use checksums
fac906c6723dd49e13f9a0e82ae3207bc41b0752823d1a06abe428269a09796a
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 Aug 6, 2026.

Transparency log

Release files / web_cortex_framework-0.3.1-cp314-cp314t-macosx_10_12_x86_64.whl

Download URL web_cortex_framework-0.3.1-cp314-cp314t-macosx_10_12_x86_64.whl
Size 5.5 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
c5af9226edd8d858046d1d1a14745c55e8019a7e6b3fa108d12457903132e738
BLAKE2b-256 checksum
How to use checksums
ffd3c3b66c0dda3955e96b4bf856f188495d6f399a1e7dfc6d81a3baaca17f8c
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 Aug 6, 2026.

Transparency log

Release files / web_cortex_framework-0.3.1-cp313-cp313-win_amd64.whl

Download URL web_cortex_framework-0.3.1-cp313-cp313-win_amd64.whl
Size 5.4 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
104deae93bb188ba77ca4b0b4c6dd9440b09d37284ec2a70107fb27c3272d9b5
BLAKE2b-256 checksum
How to use checksums
c4885eebda28b6256e5e36bcd1a9b1e2eb21c1b6a7b316e7fec0e9a5f391847e
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 Aug 6, 2026.

Transparency log

Release files / web_cortex_framework-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL web_cortex_framework-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.8 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
ff402e220812fb6b13ab147f58c9b65b8ff4f3ffba0651af3ef023e1b91679c6
BLAKE2b-256 checksum
How to use checksums
1bcb6f92f09ff49bb67d36a182c3e294ee99e96eb0ee1755c5c7f5b95acf877f
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 Aug 6, 2026.

Transparency log

Release files / web_cortex_framework-0.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL web_cortex_framework-0.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 5.6 MB
Tags CPython 3.13 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
24fcb0571c4e6ae36bee14301437e57b4cc3f5d79d85290eb4d20d19cfa715bd
BLAKE2b-256 checksum
How to use checksums
c529ca28ea1c83b2e3a21c3961e317025990480c2700c3b288f2416cb5d2c3fe
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 Aug 6, 2026.

Transparency log

Release files / web_cortex_framework-0.3.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL web_cortex_framework-0.3.1-cp313-cp313-macosx_11_0_arm64.whl
Size 5.2 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7b59644116589020f079e586d93a7a3ba221be7be18dff765ce85e37748edf8d
BLAKE2b-256 checksum
How to use checksums
850a9725260d63a4a7d129d21300c57c42545250242b9f91c6adf27e205aeb18
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 Aug 6, 2026.

Transparency log

Release files / web_cortex_framework-0.3.1-cp313-cp313-macosx_10_12_x86_64.whl

Download URL web_cortex_framework-0.3.1-cp313-cp313-macosx_10_12_x86_64.whl
Size 5.5 MB
Tags CPython 3.13 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
2f1374788f834e52e3dc1857f751bc6b49d7e03b7d2e6e24e7bcab88bacadd58
BLAKE2b-256 checksum
How to use checksums
b18b0b1953b0fe3917c3d32fa7aff2159e4d00cb7a4d2781eeb01dce198ae265
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 Aug 6, 2026.

Transparency log

Release files / web_cortex_framework-0.3.1-cp312-cp312-win_amd64.whl

Download URL web_cortex_framework-0.3.1-cp312-cp312-win_amd64.whl
Size 5.4 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
d4a3c619a132598a899fa4ef1a9d0966f204cb242fdd58aae459ed58746565cc
BLAKE2b-256 checksum
How to use checksums
ee2b81ed1dc43d9d5e28d1366e0e73b44da6af9c5fc6c18e3a3bfbc1b5c8b884
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 Aug 6, 2026.

Transparency log

Release files / web_cortex_framework-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL web_cortex_framework-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.8 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
ce9e628a7e7d015e2a5cbb619a6952a51c0fc8880aab3647055c2e024f2b3f85
BLAKE2b-256 checksum
How to use checksums
405d84e763f804a79aa81e4657b158f40c8a4d7e7c4e634b90853e9afa72d543
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 Aug 6, 2026.

Transparency log

Release files / web_cortex_framework-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL web_cortex_framework-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 5.6 MB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
4267b75533c95fc8a43038effa2e955814f1cc74cbb02ef9e777a2c5c1379328
BLAKE2b-256 checksum
How to use checksums
570a922759c14e142f4fb05295634f061da4fa1da807c02f650cd16e5e5ded9a
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 Aug 6, 2026.

Transparency log

Release files / web_cortex_framework-0.3.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL web_cortex_framework-0.3.1-cp312-cp312-macosx_11_0_arm64.whl
Size 5.2 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d18ce3d38297a3d2d854b4f41f3ddba7f60fce4df8a18ebe43a0332527b9c350
BLAKE2b-256 checksum
How to use checksums
f32b443ee42dffaf66765ae723efecb84a72919b360b27eaf1a7bf2e0ec1d595
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 Aug 6, 2026.

Transparency log

Release files / web_cortex_framework-0.3.1-cp312-cp312-macosx_10_12_x86_64.whl

Download URL web_cortex_framework-0.3.1-cp312-cp312-macosx_10_12_x86_64.whl
Size 5.5 MB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
c1612360551105cb9211cef49757fbfbf487656b92d737cd0896dc3ae01c0fc5
BLAKE2b-256 checksum
How to use checksums
f1217ef7a18dfe82b7c965a19c099dc92b33f70530d7d96565141fd1b70ab2c4
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 Aug 6, 2026.

Transparency log

Release history Release notifications | RSS feed

2.1.1

21 release files

2.1.0

21 release files

2.0.1

21 release files

2.0.0

21 release files

0.3.2

21 release files

This release

0.3.1 This release

16 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