Metadata-Version: 2.4
Name: kerbside
Version: 0.6.0
Summary: A protocol native SPICE VDI proxy
Project-URL: Homepage, https://shakenfist.com
Project-URL: Bug Tracker, https://github.com/shakenfist/kerbside/issues
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: AUTHORS
Requires-Dist: shakenfist-utilities==0.8.6
Requires-Dist: kerbside-proxy==0.6.0
Requires-Dist: click==8.5.0
Requires-Dist: cryptography==50.0.1
Requires-Dist: pylogrus==0.4.0
Requires-Dist: prometheus-client==0.26.0
Requires-Dist: Flask==3.1.3
Requires-Dist: Flask-RESTful==0.3.10
Requires-Dist: flasgger==0.9.7.1
Requires-Dist: flask-jwt-extended==4.7.4
Requires-Dist: bcrypt==5.0.0
Requires-Dist: gunicorn==26.2.0
Requires-Dist: flask-request-id-middleware==1.1
Requires-Dist: pyyaml==6.0.3
Requires-Dist: psutil==7.2.2
Requires-Dist: PyMySQL==1.2.0
Requires-Dist: webargs==8.7.1
Requires-Dist: pydantic==2.13.5
Requires-Dist: pydantic-settings==2.15.0
Requires-Dist: typing-extensions==4.16.0
Requires-Dist: alembic==1.19.1
Requires-Dist: sqlalchemy==2.0.52
Requires-Dist: mysqlclient==2.2.8
Requires-Dist: grpcio==1.83.1
Requires-Dist: protobuf==7.36.1
Requires-Dist: aniso8601==10.0.1
Requires-Dist: annotated-types==0.8.0
Requires-Dist: attrs==26.1.0
Requires-Dist: blinker==1.9.0
Requires-Dist: certifi==2026.7.22
Requires-Dist: cffi==2.1.1
Requires-Dist: charset-normalizer==3.5.1
Requires-Dist: debtcollector==3.1.0
Requires-Dist: fasteners==0.20
Requires-Dist: greenlet==3.5.5
Requires-Dist: idna==3.19
Requires-Dist: iso8601==2.1.0
Requires-Dist: itsdangerous==2.2.0
Requires-Dist: Jinja2==3.1.6
Requires-Dist: jsonschema-specifications==2025.9.1
Requires-Dist: jsonschema==4.26.0
Requires-Dist: Mako==1.4.1
Requires-Dist: MarkupSafe==3.0.3
Requires-Dist: marshmallow==4.3.1
Requires-Dist: mistune==3.3.4
Requires-Dist: netaddr==1.3.0
Requires-Dist: oslo.concurrency==7.6.1
Requires-Dist: oslo.config==10.7.0
Requires-Dist: oslo.i18n==6.9.0
Requires-Dist: oslo.utils==10.2.0
Requires-Dist: packaging==26.3
Requires-Dist: pbr==7.0.3
Requires-Dist: pycparser==3.0
Requires-Dist: PyJWT==2.13.0
Requires-Dist: pyparsing==3.3.2
Requires-Dist: python-dotenv==1.2.3
Requires-Dist: pytz==2026.3.post1
Requires-Dist: referencing==0.37.0
Requires-Dist: requests==2.34.2
Requires-Dist: rfc3986==2.0.0
Requires-Dist: rpds-py==0.30.0
Requires-Dist: setproctitle==1.3.7
Requires-Dist: six==1.17.0
Requires-Dist: stevedore==5.9.1
Requires-Dist: typing-inspection==0.4.4
Requires-Dist: urllib3==2.7.0
Requires-Dist: Werkzeug==3.1.8
Requires-Dist: wrapt==2.4.0
Provides-Extra: test
Requires-Dist: coverage; extra == "test"
Requires-Dist: testtools; extra == "test"
Requires-Dist: mock; extra == "test"
Requires-Dist: stestr; extra == "test"
Requires-Dist: tox; extra == "test"
Requires-Dist: flake8; extra == "test"
Requires-Dist: grpcio-tools==1.83.1; extra == "test"
Requires-Dist: mypy-protobuf==5.1.0; extra == "test"
Requires-Dist: shakenfist-client>=0.8.3; extra == "test"
Requires-Dist: keystoneauth1; extra == "test"
Requires-Dist: openstacksdk>=4.5.0; extra == "test"
Dynamic: license-file

# Kerbside, a SPICE VDI proxy

Kerbside is a SPICE VDI protocol proxy: a pure-Python control plane (the REST
API and the daemon) that supervises a Rust SPICE proxy. It sits out the front
of your cloud and provides VDI access to VMs running inside the cluster,
determining what VM to proxy your traffic to based on the password you
provide when connecting. Unlike layer 4 proxies that pass through unparsed
traffic, Kerbside understands the SPICE protocol itself — the proxy
terminates TLS, drives the SPICE link handshake, and is an enforcing SPICE
application firewall, on by default.

Kerbside currently knows how to proxy console sessions for Shaken Fist,
OpenStack, and oVirt. It will mostly be of interest to operators of those
clouds who want to offer users rich native SPICE desktops (high resolution,
multi-monitor, USB passthrough, audio) instead of HTML5-transcoded consoles.
OpenStack is probably the best documented integration at the moment because
there are patches to add deployment support for Kerbside to Kolla-Ansible in
the [kerbside-patches](https://github.com/shakenfist/kerbside-patches)
repository.

Kerbside is currently considered experimental: it works, but it has not yet
seen large scale deployment.

## Installation

```bash
pip install kerbside
```

This installs the Python control plane and a matching prebuilt
`kerbside-proxy` binary wheel automatically (x86_64 and aarch64). See
[docs/installation.md](https://github.com/shakenfist/kerbside/blob/develop/docs/installation.md)
for the packaging details, OS-level dependencies, and deployment pointers.
If you would rather see it working first, `demo/` brings the whole stack
up under `docker compose` and hands you a proxied console.

## Documentation

In the [docs/](https://github.com/shakenfist/kerbside/blob/develop/docs/index.md)
directory:

- [Documentation Index](https://github.com/shakenfist/kerbside/blob/develop/docs/index.md) - What Kerbside is, the broker model, and the connection flow
- [Kerbside for oVirt](https://github.com/shakenfist/kerbside/blob/develop/docs/use-cases/ovirt.md) - The first of the per-deployment guides: what Kerbside replaces in an oVirt deployment, and how to set it up
- [Installation](https://github.com/shakenfist/kerbside/blob/develop/docs/installation.md) - From `pip install` to a proxied console: what a running Kerbside needs, the compose demo, and where to go for your cloud
- [Configuration](https://github.com/shakenfist/kerbside/blob/develop/docs/configuration.md) - Configuration reference, including the SPICE firewall knobs
- [Console Sources](https://github.com/shakenfist/kerbside/blob/develop/docs/console-sources.md) - Configuring sources.yaml for Shaken Fist, OpenStack, and oVirt
- [Proxy Architecture](https://github.com/shakenfist/kerbside/blob/develop/docs/proxy-architecture.md) - Internal proxy design, state machine, and firewall
- [Database Schema](https://github.com/shakenfist/kerbside/blob/develop/docs/schema.md) - Tables, columns, and relationships
- [SPICE Protocol Documentation](https://github.com/shakenfist/kerbside/blob/develop/docs/index.md#spice-protocol-documentation) - Protocol fundamentals, link handshake, per-channel message formats, compression, capabilities, USB redirection, and the VD agent protocol (under `docs/spice/`)
- [Development](https://github.com/shakenfist/kerbside/blob/develop/docs/development.md) - Migrations, building and packaging the Rust proxy, dependency pinning, review tracking, vendored web assets, and debugging
- [Testing](https://github.com/shakenfist/kerbside/blob/develop/docs/testing.md) - Running the test suite, CI tiers and lane mechanics, Ryll harnesses, the oVirt console probe, Tempest, and load-test images

Project reference files:

- [ARCHITECTURE.md](https://github.com/shakenfist/kerbside/blob/develop/ARCHITECTURE.md) - High-level system architecture
- [AGENTS.md](https://github.com/shakenfist/kerbside/blob/develop/AGENTS.md) - AI agent guidelines for working on this codebase
- [.claude/](https://github.com/shakenfist/kerbside/tree/develop/.claude) - Claude Code project instructions and skills (database migrations, adding source types)

## License

Apache-2.0
