Skip to main content

Shared frontend foundation and SPA app shell for the llming ecosystem — vendor JS, fonts, icons, and a lazy-loading client-side router

Project description

LLMing Stage

llming-stage

Python 3.14+ License: MIT PyPI version Code style: ruff

Build Vue + Quasar UIs that AI can build, drive, and debug.

llming-stage is the SPA foundation for AI-assisted frontend work. You write a real Vue + Quasar app, not a Python shim. Reactive traffic and sessions flow through llming-com, and that's the same channel an AI assistant uses to inspect state, invoke commands, and push events into the running page.

llming-stage runtime architecture

llming-com ships the sessions, auth, command dispatcher, and the debug surface — without it, the AI side of the picture goes away. When you eventually deploy and the app no longer needs server reactivity, the same shell + view modules can ship as a static bundle to any CDN.


What you get

  • An AI-debuggable runtime — every reactive command, session, and event is browseable, invokable, and observable through one HTTP / MCP surface.
  • FastAPI-native app mounting — create your own FastAPI() app and attach Stage(app), or let Stage() create the default FastAPI app for compact demos. The internal /_stage routes and development reload are ensured once; server startup stays normal FastAPI/ASGI (uvicorn main:app --reload, deployment servers, etc.).
  • Modern frontend, zero boilerplate — Vue 3 + Quasar 2 + bundled Tailwind utilities with a lazy-load orchestrator and an SPA router that keeps the WebSocket and view state alive across navigations.
  • Per-user sessions out of the boxllming-com runs the wire and the auth; you write JS views and Python handlers.
  • Static-deployable — when there's no server-side reactivity at runtime, the same code ships to GitHub Pages, S3, or any CDN.
  • No third-party network — every asset is vendored. A page loaded from an llming-stage app makes zero requests to Google Fonts, jsDelivr, or any other external host. Privacy/GDPR-friendly by default; enforced by static and runtime tests.

See it in action

poetry install
./samples/run.sh        # opens a web gallery at http://localhost:8000

Fourteen sample apps — from a tiny static app to generated decorator views, llming-com reactive loops, a Three.js particle tornado, an 8-chart ECharts dashboard, Plotly full-bundle charts, a core component workbench, and an optional-extension workbench — with dark/light theme, hot reload, and AI-debug control.


Minimal app

from llming_stage import Stage

if __name__ == "__main__":
    Stage(title="Hello world").add_view("/", "hello.vue").run()
<template>
  <main class="min-h-screen grid place-items-center p-8">
    <h1 class="text-5xl font-bold">Hello llming-stage</h1>
  </main>
</template>

For a purely static app, no Python file is needed:

llming-stage serve hello.vue

Stage() mounts the bundled assets, the Vue + Quasar shell, the SPA router, bundled Tailwind utilities, and content-hash development reload by default.

stage.run() is a thin local-development wrapper around uvicorn.run. If you need workers, custom logging, TLS, or deployment process management, run the same app directly with normal ASGI tooling.

Reactive apps add a typed session router and let Stage mount the conventional session routes:

from fastapi import FastAPI
from llming_stage import Stage

app = FastAPI()
stage = Stage(app)
sessions = stage.session()
counter = sessions.add_router("counter")

@counter.handler("inc")
async def inc(session, by: int = 1):
    value = int(session.state.get("count", 0)) + by
    session.state["count"] = value
    await session.call("home.setCounter", value)
    return {"ok": True}

stage.add_view("/", "home.vue")

The browser gets a real Vue + Quasar SPA from .vue view files. llming-com carries the wire, the sessions, and the debug surface the AI uses.


Learn more

Full docs in docs/content/:


MIT licensed. © 2026 Michael Ikemann. Bundled third-party files are listed in THIRD_PARTY.md; no AGPL/GPL/LGPL is ever permitted.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

llming_stage-0.1.3.tar.gz (21.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

llming_stage-0.1.3-py3-none-any.whl (21.6 MB view details)

Uploaded Python 3

File details

Details for the file llming_stage-0.1.3.tar.gz.

File metadata

  • Download URL: llming_stage-0.1.3.tar.gz
  • Upload date:
  • Size: 21.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.13.11 Darwin/25.2.0

File hashes

Hashes for llming_stage-0.1.3.tar.gz
Algorithm Hash digest
SHA256 3a33303af43c286a0de9186493ac79217ae658e2125ea2452be414371b3b2749
MD5 9349b421f8d18d7fca59ccd8227b7621
BLAKE2b-256 6785a10c1a9ec73e73498938afccbe7f130b08b2a8b564ed26a82199e335bd7f

See more details on using hashes here.

File details

Details for the file llming_stage-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: llming_stage-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 21.6 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.13.11 Darwin/25.2.0

File hashes

Hashes for llming_stage-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 cdb73ee6a943ad8411eaa16be7837e003f5344f42af65371a327c88227228ff3
MD5 ef6082e36bd29a0ff12c9099e1a6cb7a
BLAKE2b-256 733469b4e84c6c909eae2fd654d25e41c9ae857dc757395437128dd639d642c1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page