Metadata-Version: 2.5
Name: m0serve
Version: 0.11.0
Summary: A WSGI/ASGI server for Python applications, written in Mojo
Project-URL: Homepage, https://github.com/codetalcott/mojo-http
Project-URL: Source, https://github.com/codetalcott/mojo-http
Project-URL: Changelog, https://github.com/codetalcott/mojo-http/blob/main/CHANGELOG.md
Author-email: Wm Talcott <32972881+codetalcott@users.noreply.github.com>
License-Expression: MIT AND Apache-2.0 WITH LLVM-exception
License-File: licenses/LICENSE.lightbug_http.txt
License-File: licenses/LICENSE.mojo-http.txt
License-File: licenses/LICENSE.mojo-runtime.txt
License-File: licenses/NOTICE.txt
Keywords: asgi,django,mojo,server,sse,websocket,wsgi
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Server
Requires-Python: >=3.10
Description-Content-Type: text/markdown

# m0serve

A WSGI/ASGI server for Python applications, written in [Mojo](https://www.modular.com/mojo).
Point it at a Django, Flask, FastHTML or Starlette app and it serves it — no
Mojo toolchain required, no compilation step, nothing to configure.

```bash
pip install m0serve
m0serve myproject.wsgi:application
```

The protocol is detected from the object, so the same command serves WSGI and
ASGI. `m0serve --help` lists the flags; `--workers N`, `--threads N` (on
free-threaded CPython) and `--blocking-threads N` are the topology ones.

## What is in the wheel

One compiled binary and the Mojo runtime it loads. **No CPython** — m0serve
resolves libpython at run time from the interpreter it is installed beside,
which is why there is no ABI tag and one wheel per platform covers CPython
3.10 through 3.14, free-threaded builds included. It has no Python
dependencies and fetches nothing at install time.

Install it into the same virtual environment as your application, the way you
would gunicorn or uvicorn; the console script points the embedded interpreter
at that environment.

## Platforms

| platform | status |
|---|---|
| macOS arm64 (Apple Silicon) | supported |
| Linux x86_64 (glibc) | supported |
| Linux aarch64 | buildable, not yet shipped |
| macOS x86_64 (Intel) | not possible — Modular ships no Intel Mac toolchain |
| musl / Alpine, Windows | not supported |

The wheel's filename carries the exact macOS and glibc floors it was built
against. On an older system `pip` declines to install it rather than
installing something that crashes.

## Status

Pre-1.0 and deliberately small: HTTP/1.1 only, no TLS, no HTTP/2 — terminate
at a proxy, which is gunicorn's answer too. The API will change before 1.0.

Source, documentation and issues: <https://github.com/codetalcott/mojo-http>

## Licence

MIT, and the wheel redistributes third-party components under their own
terms — the Mojo runtime (Apache-2.0 with LLVM Exceptions) and a fork of
lightbug_http (MIT). Full text and attribution ship inside the wheel; see
`NOTICE.txt` beside the installed package.
