| Name | vanillacorn JSON |
| Version |
0.1.2
JSON |
| download |
| home_page | None |
| Summary | A vanilla ASGI server: a basic implementation of the ASGI specification using pure Python and asyncio. |
| upload_time | 2025-07-27 17:30:21 |
| maintainer | None |
| docs_url | None |
| author | None |
| requires_python | >=3.9 |
| license | None |
| keywords |
asgi
cli
pure python
server
single file
vanilla
|
| VCS |
|
| bugtrack_url |
|
| requirements |
No requirements were recorded.
|
| Travis-CI |
No Travis.
|
| coveralls test coverage |
No coveralls.
|
<img src="https://github.com/bRuttaZz/vanillacorn/blob/main/misc/logo.png?raw=true" align="right" width="100px">
# Vanillacorn
**Nothing but a vanilla ASGI server.**
[](https://pypi.org/project/vanillacorn/)


[](https://github.com/bruttazz/vanillacorn/releases/latest)
[](https://github.com/bruttazz/vanillacorn/blob/main/LICENSE.txt)
A simple implementation of the ASGI specification 2.5 (2024-06-05) using pure Python and asyncio (**Py3.9 or above**).
The system is meant to use zero external libraries and contained in a single file, because why not...?
# Installation
1. Install using pip (pypi.org)
```sh
pip install vanillacorn
```
2. Single file server
```sh
# 1. Download `vanillacorn.py`
wget https://raw.githubusercontent.com/bRuttaZz/vanillacorn/refs/heads/main/vanillacorn.py
# 2. Make it executable
chmod +x vanillacorn.py
# 3. Run the server
./vanillacorn.py --help
# [or] run it with python interpreter
python3 vanillacorn.py --help
```
# Usage
```sh
usage: vanillacorn [-h] [-v] [-p PORT] [-b HOST] [-w WORKERS] [-s] [--verbose] [-l FILE] [--ssl-keyfile FILE] [--ssl-certfile FILE] [asgi_app]
A simple ASGI server: a basic implementation of the ASGI specification using pure Python and asyncio.
positional arguments:
asgi_app ASGI app module
options:
-h, --help show this help message and exit
-v, --version App version
-p, --port PORT Bind socket to this port (default: 8075)
-b, --host HOST Bind socket to this host. (default: localhost)
-w, --workers WORKERS
Number of worker processes
-s, --silent Suppress console logging
--verbose Show detailed logging
-l, --log-file FILE Write server logs into log file
--ssl-keyfile FILE SSL key file for TLS
--ssl-certfile FILE SSL certfile for TLS
```
### Sample Use case
To start a simple asgi application say `main:app`
```sh
vanillacorn -p 8000 main:app
# to run in https mode
vanillacorn -p 8000 --ssl-key key.pem --ssl-cert cert.pem main:app
```
## Caveats
- Currently ignoring ws subprotocols and ws extensions
# TODO:
- [ ] implement http/ws read and buffering limits
- [ ] test cases
Raw data
{
"_id": null,
"home_page": null,
"name": "vanillacorn",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "asgi, cli, pure python, server, single file, vanilla",
"author": null,
"author_email": "bRuttaZz <agrajpdas@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/d7/b4/b72122795a45ec2adc9815dc1ec75cfaff24d308fa5a7e7524543a885d0e/vanillacorn-0.1.2.tar.gz",
"platform": null,
"description": "<img src=\"https://github.com/bRuttaZz/vanillacorn/blob/main/misc/logo.png?raw=true\" align=\"right\" width=\"100px\">\n\n# Vanillacorn\n\n**Nothing but a vanilla ASGI server.**\n\n[](https://pypi.org/project/vanillacorn/)\n\n\n[](https://github.com/bruttazz/vanillacorn/releases/latest)\n[](https://github.com/bruttazz/vanillacorn/blob/main/LICENSE.txt)\n\n\nA simple implementation of the ASGI specification 2.5 (2024-06-05) using pure Python and asyncio (**Py3.9 or above**).\nThe system is meant to use zero external libraries and contained in a single file, because why not...?\n\n# Installation\n1. Install using pip (pypi.org)\n```sh\npip install vanillacorn\n```\n\n2. Single file server\n```sh\n# 1. Download `vanillacorn.py`\nwget https://raw.githubusercontent.com/bRuttaZz/vanillacorn/refs/heads/main/vanillacorn.py\n\n# 2. Make it executable\nchmod +x vanillacorn.py\n\n# 3. Run the server\n./vanillacorn.py --help\n\n# [or] run it with python interpreter\npython3 vanillacorn.py --help\n```\n\n# Usage\n\n```sh\nusage: vanillacorn [-h] [-v] [-p PORT] [-b HOST] [-w WORKERS] [-s] [--verbose] [-l FILE] [--ssl-keyfile FILE] [--ssl-certfile FILE] [asgi_app]\n\nA simple ASGI server: a basic implementation of the ASGI specification using pure Python and asyncio.\n\npositional arguments:\n asgi_app ASGI app module\n\noptions:\n -h, --help show this help message and exit\n -v, --version App version\n -p, --port PORT Bind socket to this port (default: 8075)\n -b, --host HOST Bind socket to this host. (default: localhost)\n -w, --workers WORKERS\n Number of worker processes\n -s, --silent Suppress console logging\n --verbose Show detailed logging\n -l, --log-file FILE Write server logs into log file\n --ssl-keyfile FILE SSL key file for TLS\n --ssl-certfile FILE SSL certfile for TLS\n\n```\n\n### Sample Use case\nTo start a simple asgi application say `main:app`\n```sh\nvanillacorn -p 8000 main:app\n\n# to run in https mode\nvanillacorn -p 8000 --ssl-key key.pem --ssl-cert cert.pem main:app\n\n```\n\n## Caveats\n- Currently ignoring ws subprotocols and ws extensions\n\n\n# TODO:\n- [ ] implement http/ws read and buffering limits\n- [ ] test cases\n",
"bugtrack_url": null,
"license": null,
"summary": "A vanilla ASGI server: a basic implementation of the ASGI specification using pure Python and asyncio.",
"version": "0.1.2",
"project_urls": null,
"split_keywords": [
"asgi",
" cli",
" pure python",
" server",
" single file",
" vanilla"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "b575f9ce9fc010fd359dcc3dea00a083a06f6f66cb7946bde82c738bca330314",
"md5": "4745940a57461c1a07ee417c0fbd4918",
"sha256": "e788496e375e35cb9f39c310dc08863079e0af4ff7b618d847cc6b3211c32ab2"
},
"downloads": -1,
"filename": "vanillacorn-0.1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "4745940a57461c1a07ee417c0fbd4918",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 25684,
"upload_time": "2025-07-27T17:30:20",
"upload_time_iso_8601": "2025-07-27T17:30:20.144156Z",
"url": "https://files.pythonhosted.org/packages/b5/75/f9ce9fc010fd359dcc3dea00a083a06f6f66cb7946bde82c738bca330314/vanillacorn-0.1.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d7b4b72122795a45ec2adc9815dc1ec75cfaff24d308fa5a7e7524543a885d0e",
"md5": "12d14557f937a817c6f50f9288cd31d1",
"sha256": "cd8dcfff6781d193913b56d166817d0d38dd263d9ab0e75eb66a2bc62688b5ce"
},
"downloads": -1,
"filename": "vanillacorn-0.1.2.tar.gz",
"has_sig": false,
"md5_digest": "12d14557f937a817c6f50f9288cd31d1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 1271081,
"upload_time": "2025-07-27T17:30:21",
"upload_time_iso_8601": "2025-07-27T17:30:21.107290Z",
"url": "https://files.pythonhosted.org/packages/d7/b4/b72122795a45ec2adc9815dc1ec75cfaff24d308fa5a7e7524543a885d0e/vanillacorn-0.1.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-27 17:30:21",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "vanillacorn"
}