mirror of
https://github.com/nestriness/nestri.git
synced 2026-09-19 17:25:19 +03:00
docs: list neshub, and say the tree does not know what it runs
The payload-independence rule is the one thing about this repo that is easy to violate by being helpful. Stating it where it will be read before the first edit is cheaper than catching it in review.
This commit is contained in:
12
CLAUDE.md
12
CLAUDE.md
@@ -9,7 +9,7 @@ fact about it and most of the rules below follow from it.
|
|||||||
Split by *what a thing is*, not by what language it is written in.
|
Split by *what a thing is*, not by what language it is written in.
|
||||||
|
|
||||||
```
|
```
|
||||||
apps/ what runs api, auth (TS) · nescope, neswire, nescapture (Rust)
|
apps/ what runs api, auth (TS) · nescope, neswire, nescapture, neshub (Rust)
|
||||||
crates/ shared Rust nesprotocol
|
crates/ shared Rust nesprotocol
|
||||||
packages/ shared TS core, auth
|
packages/ shared TS core, auth
|
||||||
docs/ long-form alchemy.md
|
docs/ long-form alchemy.md
|
||||||
@@ -63,7 +63,15 @@ half matters.
|
|||||||
**Rust components are guest-side**: they run inside a virtual machine, not on
|
**Rust components are guest-side**: they run inside a virtual machine, not on
|
||||||
the control plane. `nescope` composites, `nescapture` captures and encodes
|
the control plane. `nescope` composites, `nescapture` captures and encodes
|
||||||
frames from inside the workload's own process, `neswire` handles audio, and
|
frames from inside the workload's own process, `neswire` handles audio, and
|
||||||
`nesprotocol` is the wire format all three share. None of them talk to the API.
|
`neshub` muxes all of it into one connection to the client. `nesprotocol` is
|
||||||
|
the wire format they share. None of them talk to the API.
|
||||||
|
|
||||||
|
**None of them depend on what they are running.** The box starts a payload that
|
||||||
|
the open components are not allowed to understand, so no code here may branch on
|
||||||
|
which one it is. `nescope` does mention Steam and Proton in comments — it
|
||||||
|
implements public Wayland and Vulkan protocols that gamescope also implements,
|
||||||
|
and those comments say which real case motivated a workaround. That is the
|
||||||
|
allowed kind: a name in prose, never a dependency in code.
|
||||||
|
|
||||||
## Conventions
|
## Conventions
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,8 @@ control plane.
|
|||||||
| [`apps/nescope`](apps/nescope) | A headless Wayland compositor for one fullscreen client. A lighter answer to the same problem gamescope solves. |
|
| [`apps/nescope`](apps/nescope) | A headless Wayland compositor for one fullscreen client. A lighter answer to the same problem gamescope solves. |
|
||||||
| [`apps/nescapture`](apps/nescapture) | A Vulkan implicit layer. It captures frames from inside the workload's own process and encodes them on the GPU that drew them — no copy out to the CPU and back. |
|
| [`apps/nescapture`](apps/nescapture) | A Vulkan implicit layer. It captures frames from inside the workload's own process and encodes them on the GPU that drew them — no copy out to the CPU and back. |
|
||||||
| [`apps/neswire`](apps/neswire) | Audio capture and transport. |
|
| [`apps/neswire`](apps/neswire) | Audio capture and transport. |
|
||||||
| [`crates/nesprotocol`](crates/nesprotocol) | The wire types all three share, so no two ends can drift apart silently. |
|
| [`apps/neshub`](apps/neshub) | One connection out of the box. Muxes video, audio, cursor and input into a single QUIC stream to the client. |
|
||||||
|
| [`crates/nesprotocol`](crates/nesprotocol) | The wire types they all share, so no two ends can drift apart silently. |
|
||||||
|
|
||||||
The hypervisor these run under is [`nesbox`](https://github.com/nestrilabs/nesbox),
|
The hypervisor these run under is [`nesbox`](https://github.com/nestrilabs/nesbox),
|
||||||
a separate repository: a micro-VM with a real GPU in it, using virtio-gpu native
|
a separate repository: a micro-VM with a real GPU in it, using virtio-gpu native
|
||||||
|
|||||||
Reference in New Issue
Block a user