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 3.14, including the free-threaded build (3.14t), which is the fast path for Python-backed routes.

📖 Documentation · Tutorial · Orchestration · Token economy · 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 and the only author was a person. Today the client is just as likely to be a model, and so is the author. WebCortex treats both as the primary case: every declaration is simultaneously a REST route, an OpenAPI operation and an MCP tool; agents, behaviours and flows are first-class and compose; and the whole application can describe itself to the model that is writing it.

# 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.

Twenty more lines make it a multi-agent system:

app.models(default="claude-opus-5", fast="ollama/qwen3.5:9b")   # tiers, not models

app.context("policy", data={"max_discount": 0.2})              # what agents know at step one
notes = app.memory("notes", scopes=["read"])                     # a durable, per-user scratchpad

app.agent("librarian", description="Finds and pitches books.",
          tools=["list_books", "get_books_by_id_blurb"], context=["policy"],
          memory="notes", scopes=["read"], token_budget=60_000)

app.agent("front_desk", handoffs=["librarian"], scopes=["read"],
          context_window=40_000, expose_at="/ask")             # hands off; compacts

app.flow("pitch_all", parallel=["librarian", "librarian"])      # orchestration as data

Every one of those is a route, a tool, and an MCP entry. The front desk hands a conversation to the librarian; the librarian remembers what it learned about the caller; the whole run is bounded by one budget; and webcortex context prints the lot in a form a coding model can extend.


Start here

uv venv --python 3.13 && uv pip install web-cortex-framework

webcortex new myapp                # --template api | fullstack | agent | behaviour | orchestration
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, a flow — runs entirely in Rust and never enters the interpreter at request time. In practice that is most of a CRUD API and all of an orchestration.

$ webcortex check
  19 routes, 17 served without touching Python

When a route genuinely needs Python, it crosses onto a pool of free-threaded interpreter workers (free-threaded CPython 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, and in v2 the leaves run concurrently:

@app.behaviour("triage", tools=["list_tickets", "update_tickets"],
               model="fast", max_steps=200, token_budget=100_000)
def triage(ctx, input):
    """Classify every open ticket at once and escalate the urgent ones."""
    tickets = [t for t in ctx.call("list_tickets", limit=50) if t["state"] == "open"]

    verdicts = ctx.ask_many(                                   # fifty model calls, one wait
        [f"Grade this ticket:\n{t['body']}" for t in tickets],
        schema={"type": "object",
                "properties": {"urgency": {"type": "integer"},
                               "category": {"enum": ["bug", "billing", "other"]}},
                "required": ["urgency", "category"]},
    )

    escalated = [t["id"] for t, v in zip(tickets, verdicts)     # a real branch
                 if v["urgency"] >= input.get("threshold", 7)]

    ctx.gather(*[                                                # fifty writes, one wait
        ("update_tickets", {"id": t["id"], "body": t["body"], "urgency": v["urgency"],
                            "state": "escalated" if t["id"] in escalated else "triaged"})
        for t, v in zip(tickets, verdicts)
    ])
    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.gather((tool, kwargs), ...) several tool calls, concurrently
ctx.ask(prompt, schema=..., model="fast") a model call; a schema forces the shape; the model may be a tier
ctx.ask_many([prompts], schema=...) the classification loop collapsed into one wait
ctx.context(name) a declared context provider, resolved on demand
ctx.log(msg) / ctx.halt(reason) narrate or stop deliberately
ctx.usage / ctx.trace budget consumed (this run and the whole tree) and every leaf executed
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, or a flow — can call.

The runtime enforces the limits, not your diligence: max_steps caps leaf operations; token_budget caps spend for the run and everything it calls; a behaviour cannot call a tool it did not declare; an approval-gated tool cannot be laundered through a behaviour or a gather; scopes are delegated by intersection, never unioned.

Orchestration

One agent is a tool loop. Several are a system, and a system needs answers a loop never asks: who is in control, what may it do, how much may the whole thing cost, what happens when a human has to decide. Four primitives, all executed by the runtime:

Every agent is a tool. An agent is mounted at /agents/<name> (underscores become hyphens) and exposed under its own name, so app.agent("editor", tools=["researcher", "writer"]) is the entire supervisor/worker pattern. Workers run under a principal delegated from the supervisor's, one nesting level deeper, against the supervisor's budget.

Handoffs. app.agent("front_desk", handoffs=["billing", "technical"]) gives the front desk transfer_to_* tools. Calling one moves the conversation to the specialist — its system prompt, tools and context apply from the next step — while the budget and the caller's authority carry over. Authority can only shrink along a chain.

Flows: orchestration as data.

app.flow("briefing", pipeline=["researcher", "writer"], token_budget=150_000)
app.flow("review",   parallel=["security_review", "style_review"], merge="collect")
app.flow("desk",     route={"billing": "billing", "technical": "technical"},
                     default="front_desk", classify_with="fast")

Every step is a tool — an agent, a behaviour, another flow, a plain route — so composition is uniform, and a flow is itself a tool. Steps map arguments with {"tool": "x", "input": {"id": "$.id", "q": "$input.query"}}.

Sessions. Post {"input": "...", "session_id": "..."} and the conversation continues; the key includes the principal, so callers never see each other's history, and anonymous callers, who share one identity, cannot open one. Long sessions are compacted, not truncated.

Approvals that resume. A gated tool suspends the run; a human decides at POST /_webcortex/approvals/{id} with {"approve": true|false, "note": "..."}; the run continues — including the rest of the turn it was interrupted in. A denial is a tool error the model reads and reacts to.

Budgets compose. The outermost run's token_budget is shared by every agent, behaviour and flow it calls. usage.tree_tokens reports the total.

Token economy

The cost of an agent system is which model answers, how much context each call carries, and how many calls are made. Each has a declaration.

app.models(default="claude-opus-5", fast="claude-haiku-4-5-20251001",
           local="ollama/qwen3.5:9b")
app.provider("groq", base_url="https://api.groq.com/openai/v1", api_key_env="GROQ_API_KEY")
app.pricing("claude-opus-5", input_per_mtok=5, output_per_mtok=25)
  • Tiers, not models. Judgement uses default; classification, extraction and routing use fast. Moving a workload to a cheaper or local model is one edit.
  • Two wire formats, chosen by prefix. Anthropic Messages and OpenAI Chat Completions — which is what Ollama, vLLM, LM Studio, Groq and OpenRouter all speak. ollama/qwen3.5:9b needs no key. Deliberately not a universal LLM abstraction.
  • Prompt caching on by default: the system prompt, context and tool definitions are cached across the steps of a run.
  • Bounded context. tool_result_limit caps what the model sees of any tool result; context_window compacts older turns with the fast model when the measured input exceeds it.
  • A ledger. GET /_webcortex/usage reports tokens by agent, behaviour, flow and model, and dollars where you declared prices — null, not zero, where you did not.

Context and memory

app.context("policy", data={"refund_days": 30})
app.context("open_queue", sql="SELECT id, kind FROM tickets WHERE state='open' LIMIT 20")
app.context("my_orders", sql="SELECT * FROM orders WHERE customer = ?", params=["@principal"])

@app.context("account")
def account(req) -> dict: ...

notes = app.memory("notes", read_scopes=["read"], write_scopes=["write"])
app.agent("assistant", context=["policy", "my_orders"], memory="notes", ...)

A context provider is resolved when a run starts and injected into the system prompt, bounded by max_chars. @principal binds to the human behind however many agents deep the call is. A memory is four Rust-executed tools — remember, recall, search, forget — keyed by that same principal, so an agent writing on someone's behalf writes to that someone's memory and can never read another's.

The nine kinds of route

Kind Declared with Runs in
Static app.static(...) Rust
Query app.query(...), app.resource(...), app.memory(...) Rust
Page app.page(...) Rust (minijinja)
Files app.static_files(...) Rust
Proxy app.proxy(...) Rust
Agent app.agent(...) Rust
Flow app.flow(...) 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. A typo in tools, handoffs or context fails at boot with a "did you mean" suggestion.

What makes agents safe to deploy

Enforced by the runtime, not by your diligence:

Delegated authority. A run executes as caller.delegate_to_agent(...), whose scopes are intersected with the caller's — never unioned — and a handoff intersects again. An anonymous caller cannot launch a privileged agent.

Human approval gates. Mark a route approval="required" and an agent asking for it does not get it. An agent's run suspends until a human decides, then resumes with the rest of its turn. Every other path is refused: a direct MCP call is rejected, a behaviour (alone or in gather) halts, and a flow step fails. Resuming continues the agent that hit the gate, not a supervisor that called it, so give gated tools to the agents people call directly.

Runtime-enforced budgets that compose. max_steps per run; token_budget for the run and everything under it.

Scope-filtered tool lists. tools/list shows only what that caller can invoke.

A full audit trail, including refused calls, handoffs, compactions and approval decisions, 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. The control plane — including approvals, usage and models — requires webcortex:admin once any authentication is configured.

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=..., bind="books")), where a template receives a data object and nothing else; and a typed TypeScript client for SPA frontends, generated from the same route table by webcortex typegen.

AI-native development

webcortex new writes an AGENTS.md (read by Codex, Cursor and most agents) and a CLAUDE.md that imports it, so the rules travel with the project; webcortex context describes the running app for the model extending it; webcortex mcp-config prints the one command that plugs the app into Claude Code, Claude Desktop or Cursor.

$ webcortex context                     # the app, described for a coding model
$ webcortex evolve "add reviews tied to books and a behaviour that summarises them" --model fast
$ webcortex check                       # boot-time validation, with hints

The context pack is the app's shape — routes, tools and schemas, agents, behaviours, flows, context, memory, models, security posture — derived from the manifest in a few thousand tokens, plus a cheat sheet of the framework's API. evolve feeds it to a model (with the app's own aliases, so --model fast can be a local Ollama model) and prints a proposal to review. The loop is describe → propose → check → run, and boot-time validation is what makes it safe to repeat.

AGENTS.md is the machine-facing reference for tools that edit this repository or write apps on it. scout/ is a local-model reviewer that leaves suggestions for the framework's own next iteration.

Commands

webcortex new <name>      scaffold a project (api | fullstack | agent | behaviour | orchestration)
webcortex dev             run with a startup report
webcortex check           routes, tools, agents, flows, and the public attack surface
webcortex security        what is reachable without a credential
webcortex tools           the agent tool manifest
webcortex context         the context pack, for an AI coding tool
webcortex evolve "…"      ask a model to propose an extension
webcortex typegen         generate a typed TypeScript client
webcortex openapi         the OpenAPI 3.1 document
webcortex sql             DDL for declared resources and memories
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, the known limits, and what v2 added to the surface.

Status

v2.1.0. Working and tested: the manifest IR, router, native ops (static / query / proxy / page / files / flow), the free-threaded Python bridge, authentication and scopes, rate limiting, CORS, security headers, graceful shutdown, Behaviours with concurrent leaves, the agent runtime with handoffs, sessions, resumable approval gates, composing budgets, tool-result bounding and compaction, context providers, memory, flows, two providers (Anthropic and OpenAI-compatible, which covers local models), prompt caching, the spend ledger, the audit trail, OpenAPI, the MCP server, TypeScript generation, the context pack and evolve. 355 tests (106 Rust, 249 Python, including a 54-test adversarial suite and an offline end-to-end suite that drives the whole agent stack over HTTP), clippy clean.

Not yet: Postgres, token-level SSE streaming, durable agent runs that survive a restart. See DESIGN.md for the roadmap, honest risk grading, and — just as importantly — what is deliberately not being built.

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

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 2.1.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 web-cortex-framework 2.1.0
File Size Uploaded
web_cortex_framework-2.1.0.tar.gz 184.7 kB Details

Built distributions (wheels)

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

Total release size: 111.7 MB

Release files / web_cortex_framework-2.1.0.tar.gz

Download URL web_cortex_framework-2.1.0.tar.gz
Size 184.7 kB
Tags Source
SHA-256 checksum
How to use checksums
c124cdc447ed36d73f7084b993035aab8efcedb81767fc3e119ba1de41930ccc
BLAKE2b-256 checksum
How to use checksums
88e8aa9d864f137929d4f41a239a36740f8b52741d2d9ee964913a7f13ddd255
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 30, 2026.

Transparency log

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

Download URL web_cortex_framework-2.1.0-cp314-cp314t-win_amd64.whl
Size 5.6 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
0c662e03dbd5f1f3e9b75ea4c0fdabd9742acf7792b8c7cc79c0d08503ac21e6
BLAKE2b-256 checksum
How to use checksums
6d8ca5e030f7110b62196e05f35b323851007b6fb649f50c00078a71cbdecf4f
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 30, 2026.

Transparency log

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

Download URL web_cortex_framework-2.1.0-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
b6c3e846330a3c1ba6a9e20dd9caefc15bc355257c51c52549c6eaa3a7b4c222
BLAKE2b-256 checksum
How to use checksums
5f9640f74df67aacdbad959d69a6594c7a7007bc459bff471bcd59a5eaba0f4f
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 30, 2026.

Transparency log

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

Download URL web_cortex_framework-2.1.0-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
0211bfbe52204bddb1228fa98e2b67efbdbd8f0b57ea8fe1e2c49ced117d04da
BLAKE2b-256 checksum
How to use checksums
539135dbd4a0241eea8b89d74fd993ed58a5645b50741262fb398862d96db350
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 30, 2026.

Transparency log

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

Download URL web_cortex_framework-2.1.0-cp314-cp314t-macosx_11_0_arm64.whl
Size 5.3 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8da40fb385c8278acd3985bfdcc9a39af8533f84902a57baf14c543d66a3e340
BLAKE2b-256 checksum
How to use checksums
bfa4c45df38ac9c159a8b444b5d6c8e064d96e37a2be1f67a42ded2b8dbe3708
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 30, 2026.

Transparency log

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

Download URL web_cortex_framework-2.1.0-cp314-cp314t-macosx_10_12_x86_64.whl
Size 5.6 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
ba2878b655abeddaa327029d558071fffe2c4a1b98bb7e47360b6e571c6118a3
BLAKE2b-256 checksum
How to use checksums
034bc0bb8cd180746c14a98c1672e9632f6b2c16e3aa52e3c9e1b9bbcc6c2a4d
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 30, 2026.

Transparency log

Release files / web_cortex_framework-2.1.0-cp314-cp314-win_amd64.whl

Download URL web_cortex_framework-2.1.0-cp314-cp314-win_amd64.whl
Size 5.6 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
62ced1721c3363dc51e63d8de1bd3bc3081e734477f6a762418d6dfbec8377cc
BLAKE2b-256 checksum
How to use checksums
b23521eda9e5f37b9c27bd03c6c9e625804690b5d2be1dbf29fd1be744f2937e
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 30, 2026.

Transparency log

Release files / web_cortex_framework-2.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL web_cortex_framework-2.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.8 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
2fea98f64248fd1445eb3de10c24de035c0539a278a4d47a2fc63b618d7c0704
BLAKE2b-256 checksum
How to use checksums
1ce130011b09883ee4da69be694bb0be4f7ac350ab61dd0806936af7319a4623
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 30, 2026.

Transparency log

Release files / web_cortex_framework-2.1.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL web_cortex_framework-2.1.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 5.6 MB
Tags CPython 3.14 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
80276d78cb5546f19e3e4d461f98baee377cd0948ea3b820fcc003be809c1cfb
BLAKE2b-256 checksum
How to use checksums
8b3383ab409ad3b5a22212cee0708208eff16aaf6b5914a8b532a60bae469bda
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 30, 2026.

Transparency log

Release files / web_cortex_framework-2.1.0-cp314-cp314-macosx_11_0_arm64.whl

Download URL web_cortex_framework-2.1.0-cp314-cp314-macosx_11_0_arm64.whl
Size 5.3 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a40ecd52d9bc6cf1b3b7d00f5bc008c2a87cc70c784dc82212805017251fec4f
BLAKE2b-256 checksum
How to use checksums
f6af7e628b5af7bde1e24aeacc9f2e8a86b3fc621135699200ef574ab74ae364
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 30, 2026.

Transparency log

Release files / web_cortex_framework-2.1.0-cp314-cp314-macosx_10_12_x86_64.whl

Download URL web_cortex_framework-2.1.0-cp314-cp314-macosx_10_12_x86_64.whl
Size 5.6 MB
Tags CPython 3.14 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
2f16b70f08a299dc66025b849a57979f4460f8b3b5a585fb0ed60f4fdbf47c16
BLAKE2b-256 checksum
How to use checksums
56c70126208ac8de85807316a00b54bdc4fb817ce6f19ec38df24e6005f3b545
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 30, 2026.

Transparency log

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

Download URL web_cortex_framework-2.1.0-cp313-cp313-win_amd64.whl
Size 5.6 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
9d883e1d39f36d128bd9b43a409b501d32e8fd1119463d7332a42f235996cd1f
BLAKE2b-256 checksum
How to use checksums
1c0e74815eaaf2e57b0453323e24acf391c39e124fdb9a692c2b9fd38b5fd8d7
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 30, 2026.

Transparency log

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

Download URL web_cortex_framework-2.1.0-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
0bb14d58fa1b5164e2289eb9db95f22aafc28b845a1d5d50312d6f23ef8e39e6
BLAKE2b-256 checksum
How to use checksums
4c4da61ded7356bde2d5d50896aa143c1d9b9c93b80f9b2c98a4efadf1232b2d
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 30, 2026.

Transparency log

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

Download URL web_cortex_framework-2.1.0-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
2412f3ee9c4023e00abb7b319d7729c4e8c5e7a0a2423314f592f07c02a8acde
BLAKE2b-256 checksum
How to use checksums
8d3a12e4e9f418eab084e772b7f1f7ca835d688dbef34967aee2434ffbb5b1fa
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 30, 2026.

Transparency log

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

Download URL web_cortex_framework-2.1.0-cp313-cp313-macosx_11_0_arm64.whl
Size 5.3 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
663868ba6295565f6f00aa6200ea6bfaa7faed45064f4b6df892b750c788d162
BLAKE2b-256 checksum
How to use checksums
50fb20a84bd504042236475138621ca4d37d5c535cc33f843fcd39508d195967
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 30, 2026.

Transparency log

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

Download URL web_cortex_framework-2.1.0-cp313-cp313-macosx_10_12_x86_64.whl
Size 5.6 MB
Tags CPython 3.13 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
f377564d084bfd003b966d50cafe37884eaa5d942013eb83b00e5651e1a16c60
BLAKE2b-256 checksum
How to use checksums
ddb05eeb58400e97be1dc22f276a53e9e061645237b83aa1c093630c4398769f
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 30, 2026.

Transparency log

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

Download URL web_cortex_framework-2.1.0-cp312-cp312-win_amd64.whl
Size 5.6 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
fb97d5344d7b344a7107fdfc8a599ba2ee07da77e420b97f8745ac8e7f1d4c49
BLAKE2b-256 checksum
How to use checksums
8eaaa0df53af739f655881a3e53052e7a8b90fc755611cb711b3be7ef359f726
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 30, 2026.

Transparency log

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

Download URL web_cortex_framework-2.1.0-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
97860f9635f33de284f69ce51282482e4fdb72be3242d4e834678a37a91fd3af
BLAKE2b-256 checksum
How to use checksums
97110b8d51d41d93618a8795bb0d98fa2520c503b90cb3c23878ad407864c7d2
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 30, 2026.

Transparency log

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

Download URL web_cortex_framework-2.1.0-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
3ce1fdd25c69e4e76cf19980a469c9831d396afd5f48a98114738a5ab94bcd38
BLAKE2b-256 checksum
How to use checksums
0e5c8b9d6d6bfe59cddd7bfad9668d72d542b3e6cb0f99586dcca3ae993c9d19
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 30, 2026.

Transparency log

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

Download URL web_cortex_framework-2.1.0-cp312-cp312-macosx_11_0_arm64.whl
Size 5.3 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
06e4985c17a408db4b8e9b74ad70454e33fb45edc1676c072e09c1927187b215
BLAKE2b-256 checksum
How to use checksums
24b9991bbe5d4e2dec7f105699fc841063758c4164566ee4006876257cc277f9
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 30, 2026.

Transparency log

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

Download URL web_cortex_framework-2.1.0-cp312-cp312-macosx_10_12_x86_64.whl
Size 5.6 MB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
855be151101cf1413c9e856079997614cf55d7667d463957affa8caf2eadffcf
BLAKE2b-256 checksum
How to use checksums
1a68ef5f91b00e4f4a4691aabf002e497ab6798822ff159f8024cec3856798b4
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 30, 2026.

Transparency log

Release history Release notifications | RSS feed

2.1.1

21 release files

This release

2.1.0 This release

21 release files

2.0.1

21 release files

2.0.0

21 release files

0.3.2

21 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