{"projects":[{"key":"ue_agones","pipeline":"unreal","plugin_name":"Agones","plugin_path":"packages/unreal/Agones","source_path":"packages/unreal/Agones","version_toml":"packages/unreal/Agones/version.toml","version":"0.0.1","author":"googleforgames","license":"Apache-2.0","status":"active","min_engine_version":"5.4","supported_platforms":["Linux"],"bento":{"badge":"unreal · agones · server","title":"Server-only GameServer lifecycle","accent":"Agones Unreal SDK","lede":"A pristine vendored mirror of the upstream Agones Unreal SDK (googleforgames/agones, release-1.58.0), pinned for the KBVE dedicated-server stack. It wraps the Agones sidecar REST API so an Unreal dedicated server can register with and be managed by a Fleet.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/Agones","primary":true,"external":true},{"label":"Key facts","href":"#facts"},{"label":"Features","href":"#features"}],"aside":{"icon":"server","title":"Auto-connects on dedicated builds","body":"The <code>UAgonesSubsystem</code> auto-connects on dedicated-server builds — polling <code>/gameserver</code>, calling <code>/ready</code>, and pinging <code>/health</code> — so a server binary becomes allocatable under a Fleet.","points":["<strong>Server-only</strong> — <code>TargetAllowList: [\"Server\"]</code>.","<strong>Vendored</strong> — unmodified upstream, see VENDORING.md."]},"stats":[{"label":"Plugin","value":"Agones","icon":"server"},{"label":"Upstream","value":"release-1.58.0","icon":"branch"},{"label":"License","value":"Apache-2.0","icon":"license"},{"label":"Platform","value":"Linux server","icon":"deploy"}],"features":[{"title":"Auto-connecting subsystem","body":"UAgonesSubsystem connects to the Agones sidecar on dedicated-server startup with no manual wiring.","icon":"activity"},{"title":"Lifecycle over REST","body":"Polls /gameserver, calls /ready, and pings /health to keep the pod allocatable and healthy.","icon":"deploy"},{"title":"Server-only module","body":"TargetAllowList: [\"Server\"] keeps the plugin out of client and editor builds.","icon":"shield"},{"title":"Vendored & pinned","body":"An unmodified upstream mirror; VENDORING.md documents the upstream pin and resync steps.","icon":"branch"}],"related":[{"href":"/project/kbveagones/","title":"KBVEAgones","copy":"The KBVE-specific ROWS wiring layered on top of this vendored SDK.","icon":"server"},{"href":"/project/kbverows/","title":"KBVEROWS","copy":"Rust Open World Server backend integration for UE5.","icon":"network"}],"related_heading":"Related"},"title":"Agones Unreal SDK — Server-Only GameServer Lifecycle Plugin","tags":["unreal","agones","server"],"sidebar":{"label":"Agones","order":94},"slug":"/project/agones"},{"key":"agones_factorio","pipeline":"docker","app_name":"agones-factorio","source_path":"apps/agones/factorio","version_toml":"apps/agones/factorio/version.toml","version":"0.0.14","author":"h0lybyte","license":"KBVE","status":"active","runner":"ubuntu-latest","image":"kbve/agones-factorio","e2e_name":"agones-factorio","deployment_yaml":"apps/kube/agones/factorio/manifests/gameserver.yaml","has_test":true,"test_framework":"typescript","external_publish":{"factorio_mods":[{"name":"kbve","source_path":"apps/agones/factorio/mods-local/kbve"},{"name":"kbve-spider","source_path":"apps/agones/factorio/mods-src/kbve-spider"},{"name":"kbve-orc","source_path":"apps/agones/factorio/mods-src/kbve-orc"}]},"kube":{"stack":"agones","environment":"prod","tier":"server","owner":"h0lybyte","criticality":"high"},"bento":{"badge":"gameserver · agones · factorio","title":"Managed dedicated","accent":"Factorio","lede":"A KBVE-baked Factorio dedicated-server image built to run as an Agones GameServer on the production Kubernetes cluster — a thin layer over the factoriotools rootless base with an in-tree scenario and a lifecycle shim.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/agones/factorio","primary":true,"external":true},{"label":"Features","href":"#features"},{"label":"Runtime knobs","href":"#runtime"}],"aside":{"icon":"server","title":"Agones lifecycle shim","body":"<code>shim/agones-shim.sh</code> execs the Factorio binary, seeds config defaults when no ConfigMap is mounted, drives <code>Ready()</code> plus a periodic <code>Health()</code> heartbeat, and traps <code>SIGTERM</code> so shutdowns get a clean autosave.","points":["<strong>Rootless</strong> — runs as non-root UID 845.","<strong>Local-friendly</strong> — SDK skipped when AGONES_SDK_HTTP unset."]},"stats":[{"label":"Image","value":"kbve/agones-factorio","icon":"box"},{"label":"Base","value":"factoriotools 2.0.77","icon":"package"},{"label":"Orchestration","value":"Agones","icon":"server"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"Agones lifecycle shim","body":"<code>Ready()</code> / periodic <code>Health()</code> and SIGTERM-driven autosave on shutdown.","icon":"activity"},{"title":"KBVE scenario","body":"An in-tree Lua soft-mod layer — joins, donor perks, chat commands — redmew-inspired but written fresh.","icon":"book"},{"title":"RCON + console-log","body":"Loopback RCON and <code>--console-log</code> feed the planned chat-relay sidecar over a shared volume.","icon":"network"},{"title":"Rootless","body":"Runs as non-root UID 845 so the GameServer PodSpec can require runAsNonRoot without a fight.","icon":"shield"}],"related":[{"href":"/project/agones-factorio-relay/","title":"Agones Factorio Relay","copy":"Chat-relay sidecar bridging RCON, IRC, and Discord.","icon":"network"},{"href":"/project/agones/","title":"Agones","copy":"The game-server orchestration platform.","icon":"server"}],"related_heading":"Related"},"title":"Agones Factorio — Managed Dedicated Server","tags":["agones","factorio","gameserver","docker"],"sidebar":{"label":"Agones Factorio","order":460},"slug":"/project/agones-factorio"},{"key":"agones_factorio_relay","pipeline":"docker","app_name":"agones-factorio-relay","source_path":"apps/agones/factorio/relay","version_toml":"apps/agones/factorio/relay/version.toml","version":"0.0.8","author":"h0lybyte","license":"KBVE","status":"active","runner":"ubuntu-latest","image":"kbve/agones-factorio-relay","deployment_yaml":"apps/kube/agones/factorio/manifests/gameserver.yaml","has_test":false,"kube":{"stack":"agones","environment":"prod","tier":"database","owner":"h0lybyte","criticality":"high"},"bento":{"badge":"agones · factorio · relay · rust · irc · clickhouse","title":"Sidecar relay for","accent":"Factorio","lede":"A Rust sidecar in the Factorio Agones GameServer pod — three roles in one process. It tails the console log, speaks RCON to the game container, bridges chat to the kbve IRC network, and writes telemetry to ClickHouse, so the Factorio container itself can stay vanilla.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/agones/factorio/relay","primary":true,"external":true},{"label":"Architecture","href":"#overview"},{"label":"Runtime knobs","href":"#runtime"},{"label":"sim_director","href":"#sim-director"}],"aside":{"icon":"box","title":"Out-of-process by design","body":"Keeping chat, RCON, and telemetry <strong>out-of-process</strong> lets the Factorio container stay vanilla — no Agones SDK plumbing — and lets the relay be iterated and redeployed without rebuilding the <code>1+ GB</code> Factorio image.","points":["<strong>Log tail</strong> — reads <code>/shared/log/console.log</code> markers.","<strong>IRC → Discord</strong> — irc-gateway is the single integration point."]},"stats":[{"label":"App","value":"agones-factorio-relay","icon":"server"},{"label":"Stack","value":"Rust sidecar","icon":"rust"},{"label":"IRC channel","value":"#general","icon":"message"},{"label":"Telemetry","value":"ClickHouse","icon":"database"}],"features":[{"title":"Log tail","body":"Reads /shared/log/console.log (written by the factorio container via --console-log) and emits typed GameEvents for [CHAT] / [JOIN] / [LEAVE] / [COMMAND] / [STATS] markers.","icon":"activity"},{"title":"IRC bridge","body":"Forwards [CHAT] plus join/leave events to the configured channel (default","icon":"message"},{"title":"ClickHouse writer","body":"Inserts snapshots, player events, and rotation rows into gameops.factorio_* (14-day raw TTL, 90-day rotation history).","icon":"database"}],"related":[{"href":"/project/factorio-ctl/","title":"Factorio CTL","copy":"REST control API that reads the telemetry this relay produces.","icon":"route"}],"related_heading":"Related"},"title":"Agones Factorio Relay","tags":["agones","factorio","relay","rust","irc","clickhouse"],"sidebar":{"label":"Agones Factorio Relay","order":461},"slug":"/project/agones-factorio-relay"},{"key":"agones_palworld","pipeline":"docker","app_name":"agones-palworld","source_path":"apps/agones/palworld","version_toml":"apps/agones/palworld/version.toml","version":"0.0.37","author":"h0lybyte","license":"KBVE","status":"active","runner":"ubuntu-latest","image":"kbve/agones-palworld","e2e_name":"agones-palworld","deployment_yaml":"apps/kube/agones/palworld/manifests/gameserver.yaml","has_test":true,"test_framework":"typescript","kube":{"stack":"agones","environment":"prod","tier":"server","owner":"h0lybyte","criticality":"high"},"bento":{"badge":"gameserver · agones · palworld","title":"Managed dedicated","accent":"Palworld","lede":"A KBVE-baked Palworld dedicated-server image built to run as an Agones GameServer on the production Kubernetes cluster — a thin layer over the thijsvanloef/palworld-server-docker base with a REST-poll prestop shim for clean shutdowns.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/agones/palworld","primary":true,"external":true},{"label":"Features","href":"#features"},{"label":"Runtime knobs","href":"#runtime"}],"aside":{"icon":"server","title":"REST-poll prestop shim","body":"<code>shim/agones-shim-prestop.sh</code> polls the base image's REST API and issues a graceful shutdown request before the pod terminates, so a Kubernetes-initiated shutdown gets a clean autosave instead of a SIGTERM truncation.","points":["<strong>REST-native</strong> — no custom Ready/Health loop, defers to the base image's REST API.","<strong>Local-friendly</strong> — prestop hook only fires from the Kubernetes lifecycle, so plain docker run works standalone."]},"stats":[{"label":"Image","value":"kbve/agones-palworld","icon":"box"},{"label":"Base","value":"thijsvanloef/palworld-server-docker","icon":"package"},{"label":"Orchestration","value":"Agones","icon":"server"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"REST-poll prestop","body":"Polls the base image's REST API and requests a graceful shutdown from the Kubernetes preStop hook before SIGTERM lands.","icon":"activity"},{"title":"REST API surface","body":"Ports 8211 (UDP game), 8212 (REST API), and 25575 (RCON) exposed for the sidecar relay to poll info/metrics/players and issue admin actions.","icon":"network"},{"title":"Agones GameServer","body":"Runs as a two-container Agones GameServer pod — game container plus agones-palworld-relay sidecar bridging REST polling to the Agones SDK.","icon":"server"},{"title":"Persistent saves","body":"Save directory mounted from a PVC so world state survives pod restarts and rotations.","icon":"package"}],"related":[{"href":"/project/agones-palworld-relay/","title":"Agones Palworld Relay","copy":"REST-poll sidecar bridging Agones health/ready, ClickHouse telemetry, and one-way IRC.","icon":"network"},{"href":"/project/agones/","title":"Agones","copy":"The game-server orchestration platform.","icon":"server"}],"related_heading":"Related"},"title":"Agones Palworld — Managed Dedicated Server","tags":["agones","palworld","gameserver","docker"],"sidebar":{"label":"Agones Palworld","order":462},"slug":"/project/agones-palworld"},{"key":"agones_palworld_relay","pipeline":"docker","app_name":"agones-palworld-relay","source_path":"apps/agones/palworld/relay","version_toml":"apps/agones/palworld/relay/version.toml","version":"0.0.15","author":"h0lybyte","license":"KBVE","status":"active","runner":"ubuntu-latest","image":"kbve/agones-palworld-relay","deployment_yaml":"apps/kube/agones/palworld/manifests/gameserver.yaml","has_test":false,"kube":{"stack":"agones","environment":"prod","tier":"database","owner":"h0lybyte","criticality":"high"},"bento":{"badge":"agones · palworld · relay · rust · irc · clickhouse","title":"Sidecar relay for","accent":"Palworld","lede":"A Rust sidecar in the Palworld Agones GameServer pod. It polls the base image's REST API on a fixed interval, drives Agones Ready/Health from that poll, relays events one-way to the kbve IRC network, and writes telemetry to ClickHouse, so the Palworld container itself can stay vanilla.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/agones/palworld/relay","primary":true,"external":true},{"label":"Architecture","href":"#overview"},{"label":"Runtime knobs","href":"#runtime"}],"aside":{"icon":"box","title":"REST-poll, not log-tail","body":"Unlike the Factorio relay's log-tail approach, this sidecar <strong>polls the base image's REST API</strong> for info, metrics, and players — a more structured signal that also doubles as the Agones health/ready probe.","points":["<strong>REST poll</strong> — reads <code>/v1/api/info</code>, <code>/v1/api/metrics</code>, <code>/v1/api/players</code> on a fixed interval.","<strong>One-way IRC</strong> — irc-gateway is the single integration point to Discord."]},"stats":[{"label":"App","value":"agones-palworld-relay","icon":"server"},{"label":"Stack","value":"Rust sidecar","icon":"rust"},{"label":"IRC channel","value":"#general","icon":"message"},{"label":"Telemetry","value":"ClickHouse","icon":"database"}],"features":[{"title":"REST poller","body":"Polls PALWORLD_REST_ADDR (default http://127.0.0.1:8212) for info/metrics/players and diffs player lists into typed GameEvents.","icon":"activity"},{"title":"Agones health/ready","body":"Drives the Agones SDK health and ready calls from REST poll success instead of a separate probe loop.","icon":"server"},{"title":"One-way IRC bridge","body":"Forwards in-game chat to the configured channel (default","icon":"message"},{"title":"ClickHouse writer","body":"Inserts snapshots and player events into gameops.palworld_* tables for observability.","icon":"database"}],"related":[{"href":"/project/agones-palworld/","title":"Agones Palworld","copy":"The managed dedicated-server image this relay runs alongside.","icon":"server"},{"href":"/project/agones-factorio-relay/","title":"Agones Factorio Relay","copy":"Sibling sidecar for the Factorio GameServer — log-tail + RCON instead of REST poll.","icon":"network"}],"related_heading":"Related"},"title":"Agones Palworld Relay","tags":["agones","palworld","relay","rust","irc","clickhouse"],"sidebar":{"label":"Agones Palworld Relay","order":463},"slug":"/project/agones-palworld-relay"},{"key":"agones_palworld_savetool","pipeline":"docker","app_name":"agones-palworld-savetool","source_path":"apps/agones/palworld/savetool","version_toml":"apps/agones/palworld/savetool/version.toml","version":"0.0.7","author":"h0lybyte","runner":"ubuntu-latest","image":"kbve/agones-palworld-savetool","e2e_name":"agones-palworld-savetool","deployment_yaml":"apps/kube/agones/palworld/manifests/gameserver.yaml","has_test":true,"title":"Agones Palworld Savetool","tags":["agones","palworld","savetool","python","gvas"],"sidebar":{"label":"Agones Palworld Savetool","order":464},"slug":"/project/agones-palworld-savetool"},{"unsplash":"1477959858617-67f85cf4f1df","img":"https://images.unsplash.com/photo-1477959858617-67f85cf4f1df?fit=crop&w=1400&h=700&q=75","key":"astro_kbve","pipeline":"docker","app_name":"axum-kbve","source_path":"apps/kbve/astro-kbve","version_toml":"apps/kbve/axum-kbve/version.toml","version":"1.0.288","author":"h0lybyte","license":"KBVE","status":"active","runner":"arc-runner-set","image":"kbve/kbve","e2e_name":"axum-kbve-e2e","deployment_yaml":"apps/kube/kbve/manifest/kbve-deployment.yaml","version_target":"apps/kbve/axum-kbve/Cargo.toml","has_test":true,"kube":{"stack":"application","environment":"prod","tier":"api","owner":"h0lybyte","criticality":"high"},"title":"KBVE API — Central Multi-Tenant API Service","tags":["api"],"sidebar":{"label":"API","order":2},"slug":"/project/api"},{"unsplash":"1477959858617-67f85cf4f1df","img":"https://images.unsplash.com/photo-1477959858617-67f85cf4f1df?fit=crop&w=1400&h=700&q=75","bento":{"badge":"ar","title":"Augmented reality","accent":"research notes","lede":"KBVE's augmented reality research — hardware notes on AR glasses and their software development kits. An evolving concept page rather than a shipped package, capturing candidates for spatial and heads-up experiences as they are evaluated.","stats":[{"label":"Topic","value":"AR glasses + SDKs","icon":"eye"},{"label":"Status","value":"Research","icon":"book"},{"label":"Hardware","value":"Nreal Air","icon":"sensor"},{"label":"Focus","value":"Heads-up","icon":"expand"}],"features":[{"title":"AR glasses hardware","body":"Evaluating wearable displays such as the Nreal Air.","icon":"eye"},{"title":"SDK evaluation","body":"Reviewing each device's SDK for building AR applications.","icon":"code"},{"title":"Spatial / heads-up experiences","body":"How AR overlays could pair with KBVE apps.","icon":"expand"}],"related":[{"href":"/project/pirate/","title":"Pirate","copy":"A KBVE game jam project exploring another interactive medium.","icon":"sword"}],"features_eyebrow":"Focus areas","features_heading":"Focus areas","related_heading":"Related"},"title":"AR — Augmented Reality Glasses and SDK Research Notes","tags":["ar"],"sidebar":{"label":"AR","order":10},"slug":"/project/ar"},{"key":"arc_runner","pipeline":"docker","app_name":"arc-runner","source_path":"packages/docker/arc-runner","version_toml":"packages/docker/arc-runner/version.toml","version":"0.1.7","author":"h0lybyte","license":"KBVE","status":"active","runner":"ubuntu-latest","image":"kbve/arc-runner","deployment_yamls":["apps/kube/github/runners/manifests/values-kbve.yaml","apps/kube/github/runners/manifests/values.yaml","apps/kube/github/runners/manifests/values-ue.yaml"],"has_test":false,"kube":{"stack":"infrastructure","environment":"prod","tier":"api","owner":"h0lybyte","criticality":"critical"},"bento":{"badge":"docker · github-actions · infrastructure","title":"Custom runner image for","accent":"ARC","lede":"The custom Actions Runner Controller image consumed by the arc-runner-set scale set in the arc-runners namespace. It layers a small bundle of build tooling on top of ghcr.io/actions/actions-runner so CI jobs do not have to apt-get install the same packages on every cold start.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/docker/arc-runner","primary":true,"external":true},{"label":"Image layout","href":"#layout"},{"label":"Rollout","href":"#rollout"}],"aside":{"icon":"package","title":"One base, every tool baked","body":"Layered onto <code>ghcr.io/actions/actions-runner</code> so every tool the runner pool needs is on <code>PATH</code> the moment the pod starts — no cold-start <code>apt-get</code>, air-gap-safe under mirror outages, one source of truth for tool versions.","points":["<strong>git-lfs / unzip / jq / gh</strong> — workflow shell glue.","<strong>kubectl / dbmate</strong> — pinned via build args for parity."]},"stats":[{"label":"Image","value":"kbve/arc-runner","icon":"package"},{"label":"Runner","value":"2.335.1","icon":"github"},{"label":"License","value":"KBVE","icon":"license"},{"label":"Status","value":"active","icon":"check"}],"features":[{"title":"No cold-start apt-get","body":"Every tool the runner pool needs is on PATH the moment the runner pod starts, instead of being apt-get installed as the first step of every job.","icon":"zap"},{"title":"Air-gap-safe","body":"Image dependencies are pinned via the upstream actions-runner tag plus apt snapshots, so a transient archive.ubuntu.com outage no longer fails Unity matrix legs.","icon":"shield"},{"title":"Single source of truth","body":"Bumping a tool happens once in this Dockerfile + version, not in every workflow that references it.","icon":"check"}],"related":[{"href":"/project/kilobase/","title":"Kilobase","copy":"The Postgres image migrated by the dbmate tooling baked into this runner.","icon":"database"},{"href":"/project/discordsh-bot/","title":"DiscordSH Bot","copy":"One of the workflows that runs on the arc-runner-set scale set.","icon":"discord"}],"related_heading":"Related"},"title":"ARC Runner — Custom GitHub Actions Runner Image","tags":["docker","github-actions","infrastructure"],"sidebar":{"label":"ARC Runner","order":57},"slug":"/project/arc-runner"},{"key":"aria2_proxy","pipeline":"docker","app_name":"aria2-proxy","source_path":"apps/vm/aria2-proxy","version_toml":"apps/vm/aria2-proxy/version.toml","version":"0.1.1","author":"h0lybyte","license":"KBVE","status":"active","runner":"arc-runner-set","image":"kbve/aria2-proxy","e2e_name":"aria2-proxy-e2e","deployment_yaml":"apps/kube/kubevirt/download-proxy/deployment.yaml","has_test":true,"test_framework":"typescript","bento":{"badge":"docker · kubevirt · infrastructure","title":"Download proxy image for","accent":"KubeVirt","lede":"A purpose-built Alpine image for the KubeVirt download-proxy Deployment in the angelscript namespace. It pulls large build artefacts — UE5, Visual Studio Build Tools, Xcode — with resume and multi-connection support and serves them back to builder VMs over plain HTTP.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/vm/aria2-proxy","primary":true,"external":true},{"label":"Image layout","href":"#layout"}],"aside":{"icon":"zap","title":"Serving within seconds","body":"aria2 and python are baked in, so the pod is serving within seconds of scheduling — no <code>apk add</code> cold start — and <code>tini</code> runs as PID 1 so kubelet's <code>SIGTERM</code> stops in-flight downloads cleanly.","points":["<strong>Ports</strong> — <code>6800</code> aria2 RPC, <code>8080</code> file server.","<strong>User</strong> — uid/gid <code>1000</code> (appuser), workdir <code>/downloads</code>."]},"stats":[{"label":"Image","value":"kbve/aria2-proxy","icon":"package"},{"label":"Base","value":"Alpine","icon":"box"},{"label":"Ports","value":"6800 / 8080","icon":"network"},{"label":"User","value":"appuser 1000","icon":"lock"}],"features":[{"title":"No cold-start apk add","body":"aria2 and python are baked in, so the pod is serving within seconds of scheduling instead of paying a 30+ second apk add on every pod restart.","icon":"zap"},{"title":"Air-gap-safe","body":"The image's dependencies are pinned via the Alpine release tag, so a transient Alpine mirror outage does not block VM provisioning.","icon":"shield"},{"title":"Clean signal handling","body":"tini runs as PID 1 so kubelet's SIGTERM propagates cleanly, stopping in-flight downloads instead of leaving aria2 hanging through the grace period.","icon":"check"}],"related":[{"href":"/project/kubectl/","title":"KBVE Kubectl","copy":"kubectl image used across the same KubeVirt jobs.","icon":"server"}],"related_heading":"Related"},"title":"Aria2 Proxy — KubeVirt Download Proxy Image","tags":["docker","kubevirt","infrastructure"],"sidebar":{"label":"Aria2 Proxy","order":56},"slug":"/project/aria2-proxy"},{"key":"arpg_server","pipeline":"docker","app_name":"arpg-server","source_path":"apps/agones/arpg/server","version_toml":"apps/agones/arpg/server/version.toml","version":"0.1.29","version_source":"apps/kbve/astro-kbve/src/content/docs/project/arpg-server.mdx","author":"h0lybyte","license":"MIT","status":"beta","runner":"arc-runner-set","image":"kbve/arpg-server","deployment_yaml":"apps/kube/agones/arpg/manifests/fleet.yaml","version_target":"apps/agones/arpg/server/Cargo.toml","has_test":false,"kube":{"stack":"agones","environment":"beta","tier":"server","owner":"h0lybyte","criticality":"low"},"bento":{"badge":"game-server · rust · arpg","title":"Authoritative grid host","accent":"ARPG Server","lede":"The authoritative shared-world host for the ARPG — a Diablo-style isometric action RPG. An axum WebSocket router paired with the simgrid headless Bevy grid sim, keeping movement, occupancy, and snapshots server-owned on its own Agones Fleet.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/agones/arpg/server","primary":true,"external":true},{"label":"Wire protocol","href":"#protocol"},{"label":"Discord Activity","href":"#discord"}],"aside":{"icon":"server","title":"Orthogonal tile authority","body":"The server keeps everything in orthogonal tile <code>(x, y)</code> space with integer grid math — collision is tile occupancy. Isometric projection is a client-side render transform only; the server predicts nothing, the client does.","points":["<strong>Protocol</strong> — simgrid JSON, PROTOCOL_VERSION 14.","<strong>Z-floors</strong> — endless seeded multi-floor dungeon."]},"stats":[{"label":"App","value":"arpg-server","icon":"server"},{"label":"Stack","value":"axum + Bevy","icon":"rust"},{"label":"Protocol","value":"simgrid v14","icon":"network"},{"label":"Listen","value":"0.0.0.0:7979","icon":"activity"}],"features":[{"title":"Terminate /ws + auth","body":"Terminates the WebSocket upgrade and verifies the inbound Supabase JWT (dev-accept fallback when the secret is unset).","icon":"key"},{"title":"Drive the sim tick","body":"Drives the simgrid sim tick on a tokio multi-thread runtime, fanning out authoritative snapshots to all clients.","icon":"activity"},{"title":"Admit & spawn","body":"Admits players into roster slots and spawns the procedural world — an open grid seeded with wandering hostiles — shared across the map.","icon":"box"},{"title":"Agones lifecycle","body":"Runs the Agones SDK lifecycle (Ready / Health / Shutdown) so the Fleet can manage the pod; degrades gracefully for local dev.","icon":"server"}],"related":[{"href":"/project/arpg-web/","title":"ARPG Web","copy":"The browser client that connects to this server over /ws.","icon":"box"},{"href":"/project/cryptothrone-server/","title":"CryptoThrone Server","copy":"The sibling grid-authoritative host sharing the simgrid crate.","icon":"server"}],"related_heading":"Related"},"title":"ARPG Server — Authoritative Grid Game Host on Axum","tags":["docker","rust","game-server","arpg"],"sidebar":{"label":"ARPG Server","order":59},"slug":"/project/arpg-server"},{"key":"arpg_web","pipeline":"docker","app_name":"arpg-web","source_path":"apps/agones/arpg","version_toml":"apps/agones/arpg/web/version.toml","version":"0.1.30","version_source":"apps/kbve/astro-kbve/src/content/docs/project/arpg-web.mdx","author":"h0lybyte","license":"MIT","status":"beta","runner":"arc-runner-set","image":"kbve/arpg-web","e2e_name":"arpg","deployment_yaml":"apps/kube/agones/arpg/manifests/web-deployment.yaml","version_target":"apps/agones/arpg/web/version.toml","has_test":true,"target":"container-web","nx_project":"arpg","kube":{"stack":"agones","environment":"beta","tier":"web","owner":"h0lybyte","criticality":"low"},"bento":{"badge":"game-client · vite · arpg","title":"Standalone game client","accent":"ARPG Web","lede":"A standalone Vite + React client for the ARPG, served as static files behind nginx at arpg.kbve.com. It is the single source of truth for the game — and the CDN that feeds the arcade page and Discord Activity embed.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/agones/arpg/web","primary":true,"external":true},{"label":"Build","href":"#build"},{"label":"Testing","href":"#testing"}],"aside":{"icon":"box","title":"One source, three surfaces","body":"The game source, embed entries, and sprite art all live under <code>apps/agones/arpg/web/</code>. Three build modes share it — the standalone app, an embed IIFE for <a href=\"/project/api/\">kbve.com/arcade</a>, and a Discord Activity bundle.","points":["<strong>CDN</strong> — arpg.kbve.com serves app, embed, Activity + LFS art.","<strong>No guest path</strong> — real Supabase login, verified by arpg-server."]},"stats":[{"label":"App","value":"arpg-web","icon":"box"},{"label":"Client","value":"Vite + React","icon":"code"},{"label":"Image","value":"kbve/arpg-web","icon":"package"},{"label":"Status","value":"beta","icon":"activity"}],"features":[{"title":"Single source of truth","body":"The game source lives at <code>apps/agones/arpg/web/src/game/</code>; the arcade page and Discord embed consume a built bundle, not the source.","icon":"box"},{"title":"Three build modes","body":"<code>vite build</code> emits the standalone app, an <code>--mode embed</code> IIFE bundle, and an <code>--mode discord</code> Activity bundle from one source.","icon":"expand"},{"title":"CDN origin","body":"arpg.kbve.com serves the app, embed bundle, Discord Activity, and the Git-LFS sprite art cross-origin with <code>Access-Control-Allow-Origin: *</code>.","icon":"network"},{"title":"Real Supabase auth","body":"The client runs a real Supabase login; the session JWT is verified by arpg-server against GoTrue. Empty or invalid tokens are denied — no guest path.","icon":"key"}],"related":[{"href":"/project/arpg-server/","title":"ARPG Server","copy":"The game server this client connects to over /ws.","icon":"server"},{"href":"/project/rows/","title":"ROWS","copy":"The shared Rust game backend used across KBVE games.","icon":"database"}],"related_heading":"Related"},"title":"ARPG Web — Standalone Vite Game Client and CDN","tags":["docker","vite","game-client","arpg"],"sidebar":{"label":"ARPG Web","order":60},"slug":"/project/arpg-web"},{"unsplash":"1602089266537-57cb22e5235b","img":"https://images.unsplash.com/photo-1602089266537-57cb22e5235b?fit=crop&w=1400&h=700&q=75","bento":{"badge":"design · machine-learning · agents","title":"Machine learning agent","accent":"Atlas","lede":"Atlas is the KBVE machine learning agent project and a compact reference for the core ideas around autonomous ML systems: how agents act, how models are trained, how neural networks are layered, and how the supporting pipeline fits together. The project also ships as a container image for a local launch.","ctas":[{"label":"Concepts","href":"#glossary"}],"aside":{"icon":"deploy","title":"Launch locally","body":"Atlas ships as a container image — launch it with <code>docker run -d -p 3000:3000 kbve/atlas</code>."},"stats":[{"label":"Project","value":"Atlas","icon":"box"},{"label":"Image","value":"kbve/atlas","icon":"package"},{"label":"Topic","value":"ML agents","icon":"gears"}],"features":[{"title":"Autonomous","body":"Agents make decisions, take actions, and adapt from feedback within defined operating boundaries.","icon":"gears"},{"title":"Training","body":"Models learn from data as an algorithm adjusts parameters to reduce error and improve predictions.","icon":"activity"},{"title":"Layered","body":"Deep networks stack layers of nodes so each stage can transform signals into more useful representations.","icon":"expand"},{"title":"Agent","body":"An entity that observes an environment and selects actions toward a goal or reward.","icon":"sensor"},{"title":"Systems","body":"The full workflow around data collection, preprocessing, training, validation, deployment, and monitoring.","icon":"settings"}],"related":[{"href":"/project/graph/","title":"Graph","copy":"Related KBVE data and knowledge-graph tooling.","icon":"chart"},{"href":"/project/python-kbve/","title":"Python KBVE","copy":"The Python toolkit behind KBVE ML and automation work.","icon":"code"}],"features_eyebrow":"Concept glossary","features_heading":"Building blocks","related_heading":"Related"},"title":"Atlas - Machine Learning Agent Notes","tags":["design","machine-learning","agents"],"sidebar":{"label":"Atlas","order":20},"slug":"/project/atlas"},{"key":"axum_rentearth","pipeline":"docker","app_name":"axum-rentearth","source_path":"apps/rentearth/axum-rentearth","version_toml":"apps/rentearth/axum-rentearth/version.toml","version":"0.1.1","author":"h0lybyte","license":"KBVE","status":"beta","runner":"ubuntu-latest","image":"kbve/axum-rentearth","deployment_yaml":"apps/kube/rentearth/manifest/axum-rentearth-deployment.yaml","version_target":"apps/rentearth/axum-rentearth/Cargo.toml","has_test":false,"kube":{"stack":"agones","environment":"beta","tier":"api","owner":"h0lybyte","criticality":"low"},"bento":{"badge":"game · api","title":"itch.io download backend for","accent":"RentEarth","lede":"The Rust Axum backend for the RentEarth game — resolves signed itch.io desktop downloads through the shared jedi itch client and serves the Vite + TanStack single-page web frontend at the root path.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/rentearth/axum-rentearth","primary":true,"external":true},{"label":"Usage","href":"#usage"},{"label":"Features","href":"#features"}],"aside":{"icon":"server","title":"Downloads plus bundled web","body":"axum-rentearth resolves signed itch.io desktop downloads through the shared <a href=\"/project/jedi-crate/\">jedi</a> itch client and serves the RentEarth Vite + TanStack SPA at the root path. It mirrors axum-chuckrpg, sharing the same route shape and itch client.","points":["<strong>Downloads</strong> — signed per-platform itch.io redirects.","<strong>Web</strong> — Vite + TanStack SPA with SPA fallback."]},"stats":[{"label":"App","value":"axum-rentearth","icon":"server"},{"label":"Language","value":"Rust","icon":"rust"},{"label":"Image","value":"kbve/axum-rentearth","icon":"box"},{"label":"Status","value":"beta","icon":"activity"}],"features":[{"title":"Signed itch.io downloads","body":"<code>/downloads/{platform}</code> redirects to the signed itch URL for the requested platform via the shared jedi itch client.","icon":"key"},{"title":"Downloads page","body":"<code>/downloads</code> renders an askama page listing the available builds.","icon":"book"},{"title":"Live build state API","body":"<code>/api/downloads</code> exposes the current per-platform build state that the web frontend consumes.","icon":"activity"},{"title":"Bundled web","body":"Serves the RentEarth Vite + TanStack SPA at the root, with an SPA fallback so client-routed paths resolve after explicit API and download routes.","icon":"server"},{"title":"Health checks","body":"<code>/health</code> and <code>/api/health</code> back the liveness probes.","icon":"check"}],"related":[{"href":"/project/chuckrpg/","title":"ChuckRPG","copy":"Sibling Axum download backend this service mirrors.","icon":"server"}],"usage":{"label":"routes","lang":"http","code":"GET /downloads/{platform}   -> 302 redirect to signed itch.io URL\nGET /downloads              -> HTML downloads page (askama)\nGET /api/downloads          -> JSON per-platform build state\nGET /health                 -> liveness\n"},"related_heading":"Related"},"title":"RentEarth API — itch.io Download Backend","tags":["game","api"],"sidebar":{"label":"RentEarth API","order":31},"slug":"/project/axum-rentearth"},{"key":"bevy_battle_crate","pipeline":"crates","package_name":"bevy_battle","source_path":"packages/rust/bevy/bevy_battle","version_toml":"packages/rust/bevy/bevy_battle/version.toml","version":"0.1.0","version_source":"apps/kbve/astro-kbve/src/content/docs/project/bevy-battle-crate.mdx","author":"h0lybyte","license":"MIT","status":"active","version_target":"packages/rust/bevy/bevy_battle/Cargo.toml","bento":{"badge":"crates · rust · bevy","title":"Turn-based combat for","accent":"bevy_battle","lede":"A generic turn-based battle plugin for Bevy — damage resolution, effects, class procs, and enemy AI as a pure Rust core with an optional Bevy ECS layer, driven by a seeded RNG for deterministic results.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/bevy/bevy_battle","primary":true,"external":true},{"label":"Usage","href":"#usage"},{"label":"Features","href":"#features"}],"aside":{"icon":"box","title":"Pure core, optional ECS","body":"The same combat logic runs inside a full game or a headless FFI build — combat math lives in <strong>types.rs</strong> with zero Bevy dependency.","points":["<strong>Default</strong> — the bevy feature adds the BevyBattlePlugin and ECS derives.","<strong>Headless</strong> — disable default features for a plain Rust type surface for FFI cdylibs and headless serializers."]},"stats":[{"label":"Bevy crate","value":"Rust","icon":"rust"},{"label":"Engine","value":"Bevy 0.18","icon":"gears"},{"label":"Combat RNG","value":"Seeded","icon":"bolt"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Pure Rust core","body":"Types, enums, and combat math in types.rs with zero Bevy dependency, usable from FFI cdylibs and mobile crates.","icon":"rust"},{"title":"Optional Bevy ECS plugin","body":"The <strong>bevy</strong> feature (default) adds Component / Event / Resource / Message derives, the BevyBattlePlugin, snapshot/world helpers, and the full combat system pipeline.","icon":"gears"},{"title":"Deterministic RNG","body":"BattleRng seeds every roll so battles reproduce exactly.","icon":"bolt"},{"title":"Global tuning","body":"A CombatModifiers resource adjusts combat behavior in one place.","icon":"settings"},{"title":"Enemy AI hook","body":"Integrates bevy_behavior behavior trees for enemy turn logic.","icon":"branch"}],"related":[{"href":"/project/bevy-behavior-crate","title":"Bevy Behavior Crate","copy":"Behavior-tree engine that powers enemy turn AI.","icon":"branch"},{"href":"/project/bevy-skills-crate","title":"Bevy Skills Crate","copy":"Skill definitions that feed combat.","icon":"bolt"},{"href":"/project/bevy-player-crate","title":"Bevy Player Crate","copy":"Character controller for the same engine.","icon":"box"}],"usage":{"label":"main.rs","lang":"rust","code":"use bevy::prelude::*;\nuse bevy_battle::BevyBattlePlugin;\n\nApp::new()\n    .add_plugins(BevyBattlePlugin)\n    .run();\n"},"features_heading":"Features","related_heading":"Related crates"},"title":"Bevy Battle — Turn-Based Combat Crate","tags":["crates","rust","bevy","combat","gamedev"],"sidebar":{"label":"Bevy Battle"},"slug":"/project/bevy-battle-crate"},{"key":"bevy_behavior_crate","pipeline":"crates","package_name":"bevy_behavior","source_path":"packages/rust/bevy/bevy_behavior","version_toml":"packages/rust/bevy/bevy_behavior/version.toml","version":"0.1.0","version_source":"apps/kbve/astro-kbve/src/content/docs/project/bevy-behavior-crate.mdx","author":"h0lybyte","license":"MIT","status":"active","version_target":"packages/rust/bevy/bevy_behavior/Cargo.toml","bento":{"badge":"crates · rust · bevy","title":"Behavior trees for","accent":"bevy_behavior","lede":"A game-agnostic behavior tree engine for Bevy with composable Selector / Sequence nodes, tick-based cooldown tracking, and observation traits so one tree can drive NPCs across many games.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/bevy/bevy_behavior","primary":true,"external":true},{"label":"Features","href":"#features"}],"aside":{"icon":"branch","title":"Game-agnostic trees","body":"BehaviorNode is generic over an Observation snapshot and an Action enum, so the same tree logic drives NPCs without game-specific coupling.","points":["<strong>Reused across</strong> — Minecraft, Bevy Isometric, Discord MUD, and Unity.","<strong>Zero-dep core</strong> — pure Rust; the optional bevy feature adds ECS integration."]},"stats":[{"label":"Bevy crate","value":"Rust","icon":"rust"},{"label":"Core","value":"Zero-dep","icon":"box"},{"label":"Nodes","value":"Composable","icon":"branch"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Generic tree","body":"BehaviorNode is generic over an Observation type and an Action type, so each game supplies its own snapshot and command enum.","icon":"branch"},{"title":"Composite nodes","body":"Selector and Sequence compose leaves into trees.","icon":"gears"},{"title":"Cooldown tracking","body":"BehaviorContext, CooldownState, and TickCooldown gate actions by tick, per-NPC and globally.","icon":"clock"},{"title":"Observation traits","body":"Positioned, Healthed, Aware, and Ticked let built-in leaves query an NPC's world without knowing the concrete struct.","icon":"info"},{"title":"Zero-dep core","body":"Pure Rust by default; the optional <strong>bevy</strong> feature adds Resource / Component derives for in-ECS evaluation.","icon":"box"}],"related":[{"href":"/project/isometric","title":"Isometric","copy":"The KBVE isometric engine whose NPC AI uses this behavior engine.","icon":"box"},{"href":"/project/bevy-quests-crate","title":"bevy_quests","copy":"Sibling game-agnostic Bevy crate for quest data.","icon":"book"}],"features_heading":"Features","related_heading":"Related crates"},"title":"bevy_behavior — Game-Agnostic Behavior Tree Engine for Bevy","tags":["crates","rust","bevy","ai"],"sidebar":{"label":"bevy_behavior"},"slug":"/project/bevy-behavior-crate"},{"key":"bevy_cam_crate","pipeline":"crates","package_name":"bevy_cam","source_path":"packages/rust/bevy/bevy_cam","version_toml":"packages/rust/bevy/bevy_cam/version.toml","version":"0.1.0","version_source":"apps/kbve/astro-kbve/src/content/docs/project/bevy-cam-crate.mdx","author":"h0lybyte","license":"MIT","status":"active","version_target":"packages/rust/bevy/bevy_cam/Cargo.toml","bento":{"badge":"crates · rust · bevy","title":"Isometric camera for","accent":"bevy_cam","lede":"An isometric camera plugin for Bevy 0.18 — a two-stage render-to-texture pipeline keeps pixel art crisp at any window size, with pixel-grid follow and optional multiplicative zoom.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/bevy/bevy_cam","primary":true,"external":true},{"label":"Usage","href":"#usage"},{"label":"Features","href":"#features"}],"aside":{"icon":"video","title":"Crisp pixels at any size","body":"A scene camera renders the 3D world to a low-resolution texture at a fixed <strong>pixel_density</strong>, then a display camera upscales it with nearest-neighbor sampling — no full 3D material pass.","points":["<strong>Pixel-snapped follow</strong> — tracks CameraFollowTarget on all three camera-space axes to kill jitter.","<strong>Optional zoom</strong> — multiplicative scroll-wheel zoom behind the zoom feature flag."]},"stats":[{"label":"Bevy crate","value":"Rust","icon":"rust"},{"label":"Engine","value":"Bevy 0.18","icon":"gears"},{"label":"Pipeline","value":"2-stage","icon":"video"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Two-stage pixel pipeline","body":"A scene camera renders the 3D world to a low-resolution texture at pixel_density pixels per world unit (nearest-neighbor), and a display camera upscales it to the window via a fullscreen sprite, avoiding a full 3D material pass.","icon":"video"},{"title":"Pixel-snapped follow","body":"The scene camera tracks entities marked CameraFollowTarget, snapping on all three camera-space axes to kill sub-pixel jitter.","icon":"expand"},{"title":"Multiplicative zoom","body":"Optional <strong>zoom</strong> feature — uniform-feeling zoom that scales by a fixed percentage per notch and interpolates smoothly.","icon":"zap"},{"title":"Display-camera hooks","body":"The display camera carries a DisplayCamera marker so games can attach post-processing after startup.","icon":"settings"}],"related":[{"href":"/project/bevy-player-crate","title":"Bevy Player Crate","copy":"Player controller that pairs with the camera follow target.","icon":"box"},{"href":"/project/isometric","title":"Isometric","copy":"The KBVE isometric engine this camera powers.","icon":"expand"}],"usage":{"label":"main.rs","lang":"rust","code":"use bevy_cam::{IsometricCameraPlugin, CameraConfig, CameraFollowTarget};\n\napp.add_plugins(IsometricCameraPlugin::new(CameraConfig {\n    offset: Vec3::new(15.0, 20.0, 15.0),\n    viewport_height: 20.0,\n    pixel_density: 32,\n    ..default()\n}));\n\n// Attach CameraFollowTarget to whatever entity the camera should track:\ncommands.spawn((Transform::default(), CameraFollowTarget));\n"},"features_heading":"Features","related_heading":"Related crates"},"title":"Bevy Cam — Isometric Camera Crate","tags":["crates","rust","bevy","camera","gamedev"],"sidebar":{"label":"Bevy Cam"},"slug":"/project/bevy-cam-crate"},{"key":"bevy_chat_crate","pipeline":"crates","package_name":"bevy_chat","source_path":"packages/rust/bevy/bevy_chat","version_toml":"packages/rust/bevy/bevy_chat/version.toml","version":"0.1.1","version_source":"apps/kbve/astro-kbve/src/content/docs/project/bevy-chat-crate.mdx","author":"h0lybyte","license":"MIT","status":"active","version_target":"packages/rust/bevy/bevy_chat/Cargo.toml","bento":{"badge":"crates · rust · bevy","title":"IRC chat bridge for","accent":"bevy_chat","lede":"A headless async IRC client and event bridge for MUD and game clients — one ChatClient API across native tokio TCP and WASM WebSocket transports, with an optional Bevy plugin.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/bevy/bevy_chat","primary":true,"external":true},{"label":"Usage","href":"#usage"},{"label":"Features","href":"#features"}],"aside":{"icon":"server","title":"Dual transport, one API","body":"The same ChatClient surface runs on native and in the browser — the transport is selected at compile time via <strong>cfg(target_arch)</strong>.","points":["<strong>Native</strong> — tokio TCP to an IRC server on port 6667.","<strong>WASM</strong> — web_sys::WebSocket against a gateway such as wss://chat.kbve.com."]},"stats":[{"label":"Bevy crate","value":"Rust","icon":"rust"},{"label":"Transport","value":"Dual","icon":"server"},{"label":"Protocol","value":"IRC","icon":"message"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Dual transport, one API","body":"Native builds use tokio TCP to IRC on port 6667; WASM builds use web_sys::WebSocket against an IRC-over-WebSocket gateway (wss://chat.kbve.com). Selected at compile time via cfg(target_arch).","icon":"server"},{"title":"Identical public surface","body":"ChatClient, connect, send, and subscribe / drain_incoming behave the same on both targets.","icon":"expand"},{"title":"Bevy plugin","body":"Optional <strong>plugin</strong> feature — ChatPlugin bridges incoming IRC traffic into ECS events for the isometric game.","icon":"message"},{"title":"FFI surface","body":"Optional <strong>ffi</strong> feature (native only) — a C-FFI layer for JNI and csbindgen consumers.","icon":"code"}],"related":[{"href":"/project/bevy-cam-crate","title":"Bevy Cam Crate","copy":"Isometric camera crate for the same engine.","icon":"video"},{"href":"/project/bevy-skills-crate","title":"uevy skills","copy":"Skill progression crate that shares the Bevy plugin pattern.","icon":"bolt"}],"usage":{"label":"main.rs","lang":"rust","code":"use bevy_chat::{ChatClient, IrcConfig};\n\nlet cfg = IrcConfig::default();\nlet client = ChatClient::connect(cfg).await?;\n"},"features_heading":"Features","related_heading":"Related crates"},"title":"bevy_chat — IRC Chat & Event Bridge Crate","tags":["crates","rust","bevy","irc","chat"],"sidebar":{"label":"bevy_chat"},"slug":"/project/bevy-chat-crate"},{"key":"bevy_db_crate","pipeline":"crates","package_name":"bevy_db","source_path":"packages/rust/bevy/bevy_db","version_toml":"packages/rust/bevy/bevy_db/version.toml","version":"0.1.0","version_source":"apps/kbve/astro-kbve/src/content/docs/project/bevy-db-crate.mdx","author":"h0lybyte","license":"MIT","status":"active","version_target":"packages/rust/bevy/bevy_db/Cargo.toml","bento":{"badge":"crates · rust · bevy","title":"Async key-value for","accent":"bevy_db","lede":"A cross-platform persistence crate for Bevy — one game-facing API, two storage engines, every read and write kept off the game thread so the schedule never stalls.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/bevy/bevy_db","primary":true,"external":true},{"label":"Usage","href":"#usage"},{"label":"Features","href":"#features"}],"aside":{"icon":"zap","title":"Never blocks the frame","body":"I/O is dispatched off the game thread via <a href=\"/project/bevy-tasker-crate/\">bevy_tasker</a>. Systems poll DbRequest handles with try_recv() to drain results without blocking.","points":["<strong>Native</strong> — redb, a pure-Rust B+tree store on disk.","<strong>WASM</strong> — rexie over IndexedDB in the browser."]},"stats":[{"label":"Bevy crate","value":"Rust","icon":"rust"},{"label":"Native","value":"redb","icon":"database"},{"label":"WASM","value":"rexie","icon":"package"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"One API, two backends","body":"The same Db handle works on native and WASM; the backend is selected at compile time.","icon":"expand"},{"title":"Off-thread I/O","body":"All persistence work is dispatched through bevy_tasker, so game systems never block on disk or IndexedDB.","icon":"gears"},{"title":"Poll-based results","body":"Pending operations return a DbRequest that systems drain with try_recv(), fitting naturally into a Bevy schedule.","icon":"clock"},{"title":"Backend-agnostic errors","body":"A single DbError enum abstracts over redb and IndexedDB failure modes.","icon":"alert"}],"related":[{"href":"/project/bevy-tasker-crate/","title":"bevy_tasker","copy":"The off-thread task pool that runs all bevy_db I/O.","icon":"gears"},{"href":"/project/bevy-supa-crate/","title":"bevy_supa","copy":"Supabase-backed persistence for Bevy that complements local key-value storage.","icon":"shield"}],"usage":{"label":"main.rs","lang":"rust","code":"use bevy::prelude::*;\nuse bevy_db::{BevyDbPlugin, Db, DbRequest};\n\nApp::new()\n    .add_plugins(BevyDbPlugin::default())\n    .run();\n"},"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related crates"},"title":"bevy_db — Async Key-Value Persistence for Bevy","tags":["crates","rust","bevy","persistence","wasm"],"sidebar":{"label":"bevy_db"},"slug":"/project/bevy-db-crate"},{"key":"bevy_inventory_crate","pipeline":"crates","package_name":"bevy_inventory","source_path":"packages/rust/bevy/bevy_inventory","version_toml":"packages/rust/bevy/bevy_inventory/version.toml","version":"0.1.0","version_source":"apps/kbve/astro-kbve/src/content/docs/project/bevy-inventory-crate.mdx","author":"h0lybyte","license":"MIT","status":"active","version_target":"packages/rust/bevy/bevy_inventory/Cargo.toml","bento":{"badge":"crates · rust · bevy","title":"Slot-based inventory for","accent":"bevy_inventory","lede":"A generic, slot-based inventory crate with item stacking, transfer, search, and serde-driven snapshots — a pure Rust core with optional Bevy ECS integration behind a feature flag.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/bevy/bevy_inventory","primary":true,"external":true},{"label":"Usage","href":"#usage"},{"label":"Features","href":"#features"}],"aside":{"icon":"box","title":"Bring your own item enum","body":"Unlike inventory crates that ship a fixed item type and a hard Bevy dependency, bevy_inventory lets you bring your own item enum and stays usable inside <strong>FFI cdylibs</strong> and headless consumers."},"stats":[{"label":"Language","value":"Rust","icon":"rust"},{"label":"Version","value":"0.1.0","icon":"package"},{"label":"Bevy ECS","value":"Optional","icon":"box"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Bring your own item enum","body":"Implement ItemKind (with display_name and max_stack) and the crate handles the rest.","icon":"box"},{"title":"Automatic stacking","body":"Items stack up to ItemKind::max_stack per slot, splitting across slots as needed within a configurable slot capacity.","icon":"gears"},{"title":"Slot operations","body":"swap_slots, remove_at_slot, and get_slot support drag-and-drop UI integration, plus has_room_for capacity queries and case-insensitive search.","icon":"settings"},{"title":"Serde all the way","body":"Inventory and ItemStack derive Serialize / Deserialize for save files, network sync, and FFI snapshots (behind the snapshot feature).","icon":"package"},{"title":"Optional Bevy plugin","body":"The bevy feature adds InventoryPlugin, LootEvent / InventoryFullEvent observers, and SplitStackAction / MergeStackAction / MoveSlotAction UI actions.","icon":"gears"}],"related":[{"href":"/project/bevy-cam-crate","title":"Bevy Cam Crate","copy":"Isometric camera crate from the same Bevy package group.","icon":"video"},{"href":"/project/bevy-supa-crate","title":"bevy_supa","copy":"Transport-agnostic Supabase client sibling crate.","icon":"shield"},{"href":"/project/discordsh-bot","title":"DiscordSH Bot","copy":"A non-Bevy consumer that uses this crate for the embed dungeon game.","icon":"discord"}],"usage":{"label":"main.rs","lang":"rust","code":"use bevy_inventory::{Inventory, ItemKind};\nuse serde::{Deserialize, Serialize};\n\n#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]\nenum Item { Wood, Stone, Gold }\n\nimpl ItemKind for Item {\n    fn display_name(&self) -> &'static str {\n        match self { Item::Wood => \"Wood\", Item::Stone => \"Stone\", Item::Gold => \"Gold\" }\n    }\n    fn max_stack(&self) -> u32 {\n        match self { Item::Gold => 10, _ => u32::MAX }\n    }\n}\n\nlet mut inv = Inventory::<Item>::new(16);\ninv.add(Item::Wood, 50);\ninv.add(Item::Gold, 25);\nassert_eq!(inv.count(Item::Gold), 25);\n"},"features_heading":"Features","related_heading":"Related crates"},"title":"bevy_inventory — Slot-Based Inventory Crate for Bevy","tags":["crates","rust","bevy"],"sidebar":{"label":"bevy_inventory"},"slug":"/project/bevy-inventory-crate"},{"key":"bevy_items_crate","pipeline":"crates","package_name":"bevy_items","source_path":"packages/rust/bevy/bevy_items","version_toml":"packages/rust/bevy/bevy_items/version.toml","version":"0.1.1","version_source":"apps/kbve/astro-kbve/src/content/docs/project/bevy-items-crate.mdx","author":"h0lybyte","license":"MIT","status":"active","version_target":"packages/rust/bevy/bevy_items/Cargo.toml","bento":{"badge":"crates · rust · bevy","title":"Proto-driven item registry for","accent":"bevy_items","lede":"Proto-driven item definitions for Bevy games — compiles itemdb.proto into typed Rust structs with a searchable ItemDb registry any game can load and query.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/bevy/bevy_items","primary":true,"external":true},{"label":"Usage","href":"#usage"},{"label":"Features","href":"#features"}],"aside":{"icon":"database","title":"One proto, every game","body":"itemdb.proto is the single source of truth — prost-build generates the Rust structs at build time, the same proto feeds a Zod schema, and human-authored Astro MDX content served as <strong>/api/itemdb.json</strong> loads at runtime via ItemDb::from_json()."},"stats":[{"label":"Language","value":"Rust","icon":"rust"},{"label":"Version","value":"0.1.0","icon":"package"},{"label":"Schema","value":"proto","icon":"database"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Proto-driven schema","body":"itemdb.proto is the single source of truth; prost-build generates the Rust item structs at build time.","icon":"database"},{"title":"Searchable ItemDb resource","body":"Query items by slug, ULID, type flags, or rarity.","icon":"book"},{"title":"JSON loading","body":"ItemDb::from_json() parses /api/itemdb.json, handling string-to-enum conversion automatically.","icon":"code"},{"title":"Game-agnostic","body":"The same registry serves Isometric, DiscordSH, and other Bevy games.","icon":"box"},{"title":"Optional inventory adapter","body":"The inventory feature wires in bevy_inventory.","icon":"package"}],"related":[{"href":"/project/bevy-inventory-crate","title":"Bevy Inventory Crate","copy":"Inventory layer that pairs with the item registry.","icon":"box"},{"href":"/project/kbveitemdb","title":"KBVE ItemDB","copy":"The shared item database and MDX content source.","icon":"database"}],"usage":{"label":"Cargo.toml","lang":"toml","code":"[dependencies]\nbevy_items = { path = \"packages/rust/bevy/bevy_items\" }\n"},"features_heading":"Features","related_heading":"Related crates"},"title":"bevy_items — Proto-Driven Item Registry Crate","tags":["crates","rust","bevy"],"sidebar":{"label":"uevy items"},"slug":"/project/bevy-items-crate"},{"key":"bevy_kbve_net_crate","pipeline":"crates","package_name":"bevy_kbve_net","source_path":"packages/rust/bevy/bevy_kbve_net","version_toml":"packages/rust/bevy/bevy_kbve_net/version.toml","version":"0.1.0","version_source":"apps/kbve/astro-kbve/src/content/docs/project/bevy-kbve-net-crate.mdx","author":"h0lybyte","license":"MIT","status":"active","version_target":"packages/rust/bevy/bevy_kbve_net/Cargo.toml","bento":{"badge":"crates · rust · bevy","title":"Shared multiplayer protocol for","accent":"bevy_kbve_net","lede":"A Bevy 0.18 + lightyear 0.26 networking crate defining KBVE's shared multiplayer protocol — the replicated components, inputs, messages, and channels both client and server compile against.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/bevy/bevy_kbve_net","primary":true,"external":true},{"label":"Features","href":"#features"}],"aside":{"icon":"server","title":"One protocol, both halves","body":"It defines the <strong>lightyear protocol</strong> — replicated components, player input types, message payloads, and channels — that both the client and the server compile against, so both halves agree on the wire format."},"stats":[{"label":"Language","value":"Rust","icon":"rust"},{"label":"Bevy / lightyear","value":"0.18 / 0.26","icon":"branch"},{"label":"Version","value":"0.1.0","icon":"package"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Shared protocol plugin","body":"ProtocolPlugin registers the replicated components, inputs, messages, and channels once for both sides.","icon":"server"},{"title":"Rich message surface","body":"Position and vitals sync, inventory and equipment updates, crafting requests / results, creature capture and state events, skill XP grants, and username set flows.","icon":"message"},{"title":"lightyear backend","body":"Replication, prediction, interpolation, native input, and netcode; the client feature adds WebSocket, WebTransport, and UDP transports (plus a wasm32 WebSocket path for browser builds).","icon":"branch"},{"title":"Optional feature set","body":"npcdb pulls creature types from bevy_npc, creatures adds capture / sync systems via bevy_tasker and dashmap.","icon":"settings"},{"title":"Worldgen helpers","body":"Deterministic tile hashing and loot rolls (hash2d, object_at_tile, roll_loot_at) shared across client and server.","icon":"gears"}],"related":[{"href":"/project/bevy-cam-crate","title":"Bevy Cam Crate","copy":"The isometric camera crate for the same KBVE Bevy engine.","icon":"video"},{"href":"/project/bevy-npc-crate","title":"Bevy NPC Crate","copy":"Creature source behind the npcdb feature.","icon":"box"}],"features_heading":"Features","related_heading":"Related crates"},"title":"bevy_kbve_net — Shared Lightyear Multiplayer Protocol Crate","tags":["crates","rust","bevy","networking","multiplayer"],"sidebar":{"label":"bevy_kbve_net"},"slug":"/project/bevy-kbve-net-crate"},{"key":"bevy_mapdb_crate","pipeline":"crates","package_name":"bevy_mapdb","source_path":"packages/rust/bevy/bevy_mapdb","version_toml":"packages/rust/bevy/bevy_mapdb/version.toml","version":"0.1.0","version_source":"apps/kbve/astro-kbve/src/content/docs/project/bevy-mapdb-crate.mdx","author":"h0lybyte","license":"MIT","status":"active","version_target":"packages/rust/bevy/bevy_mapdb/Cargo.toml","bento":{"badge":"crates · rust · bevy","title":"Proto-driven map registry for","accent":"bevy_mapdb","lede":"A game-agnostic Bevy crate that compiles mapdb.proto into typed Rust structs and wraps them in a searchable MapDb resource for zones, regions, and world objects.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/bevy/bevy_mapdb","primary":true,"external":true},{"label":"Usage","href":"#usage"},{"label":"Features","href":"#features"}],"aside":{"icon":"database","title":"One proto, every game","body":"It compiles mapdb.proto into typed Rust structs via prost and wraps them in a searchable MapDb resource, so any game can query zones, regions, and world object definitions by <strong>slug, ULID, biome, or type</strong>."},"stats":[{"label":"Language","value":"Rust","icon":"rust"},{"label":"Version","value":"0.1.0","icon":"package"},{"label":"Schema","value":"proto","icon":"database"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Proto-driven schema","body":"mapdb.proto compiles into typed Rust structs at build time via prost / prost-build.","icon":"database"},{"title":"Searchable registry","body":"MapDb looks up zones, regions, and world object defs by ProtoMapId, ref, or ULID, and filters zones by biome or type.","icon":"book"},{"title":"Multiple load paths","body":"MapDb::from_json, MapDb::from_bytes (proto binary), and MapDb::from_proto (in-memory MapRegistry).","icon":"expand"},{"title":"Game-agnostic","body":"BevyMapDbPlugin registers an empty MapDb; games populate it at startup and insert it as a resource.","icon":"box"}],"related":[{"href":"/project/bevy-cam-crate","title":"Bevy Cam Crate","copy":"Isometric camera plugin for the same engine.","icon":"video"},{"href":"/project/isometric","title":"Isometric","copy":"The KBVE isometric engine these crates power.","icon":"crown"}],"usage":{"label":"main.rs","lang":"rust","code":"use bevy::prelude::*;\nuse bevy_mapdb::{BevyMapDbPlugin, MapDb};\n\nfn load_maps(mut commands: Commands) {\n    let json = include_str!(\"path/to/mapdb.json\");\n    let db = MapDb::from_json(json).expect(\"Failed to parse map JSON\");\n    commands.insert_resource(db);\n}\n"},"features_heading":"Features","related_heading":"Related crates"},"title":"bevy_mapdb — Proto-Driven Map Registry Crate for Bevy","tags":["crates","rust","bevy"],"sidebar":{"label":"uevy mapdb"},"slug":"/project/bevy-mapdb-crate"},{"key":"bevy_npc_crate","pipeline":"crates","package_name":"bevy_npc","source_path":"packages/rust/bevy/bevy_npc","version_toml":"packages/rust/bevy/bevy_npc/version.toml","version":"0.1.0","version_source":"apps/kbve/astro-kbve/src/content/docs/project/bevy-npc-crate.mdx","author":"h0lybyte","license":"MIT","status":"active","version_target":"packages/rust/bevy/bevy_npc/Cargo.toml","bento":{"badge":"crates · rust · bevy","title":"Proto-driven NPCs for","accent":"bevy_npc","lede":"A game-agnostic NPC registry for Bevy — the shared npcdb.proto compiled into typed Rust structs and wrapped in a searchable NpcDb resource queryable by slug, ULID, type, rarity, or creature family.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/bevy/bevy_npc","primary":true,"external":true},{"label":"Usage","href":"#usage"},{"label":"Features","href":"#features"}],"aside":{"icon":"package","title":"One proto, every game","body":"The crate is game-agnostic: any title can load the same proto NPC registry and query it by slug, ULID, type flags, rarity, or creature family."},"stats":[{"label":"Bevy crate","value":"Rust","icon":"rust"},{"label":"Engine","value":"Bevy 0.18","icon":"gears"},{"label":"Registry","value":"NpcDb","icon":"database"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Proto-driven types","body":"npcdb.proto is compiled to typed Rust structs at build time with prost, keeping the NPC schema in sync across games.","icon":"gears"},{"title":"Searchable registry","body":"The NpcDb resource is queryable by slug, ULID, type flags, rarity, or creature family.","icon":"database"},{"title":"Multiple load paths","body":"Hydrate from JSON (from_json), a proto binary (from_bytes), or a decoded proto (from_proto).","icon":"expand"},{"title":"Optional creature feature","body":"Adds ECS components for creature pooling, capture, and interaction (CreaturePoolIndex, CreatureState, CapturedCreatures, CreatureCaptureEvent, CreaturePlugin).","icon":"box"}],"related":[{"href":"/project/bevy-cam-crate","title":"Bevy Cam Crate","copy":"Isometric camera plugin for the same engine.","icon":"video"},{"href":"/project/kbvenpcdb","title":"KBVE NPC Database","copy":"The NPC data source behind the proto registry.","icon":"database"}],"usage":{"label":"main.rs","lang":"rust","code":"use bevy::prelude::*;\nuse bevy_npc::{BevyNpcPlugin, NpcDb};\n\nfn load_npcs(mut commands: Commands) {\n    let json = include_str!(\"path/to/npcdb.json\");\n    let db = NpcDb::from_json(json).expect(\"Failed to parse NPC JSON\");\n    commands.insert_resource(db);\n}\n"},"features_heading":"Features","related_heading":"Related crates"},"title":"Bevy NPC — Proto-Driven NPC Registry Crate","tags":["crates","rust","bevy","npc","gamedev"],"sidebar":{"label":"Bevy NPC"},"slug":"/project/bevy-npc-crate"},{"key":"bevy_pathfinder_crate","pipeline":"crates","package_name":"bevy_pathfinder","source_path":"packages/rust/bevy/bevy_pathfinder","version_toml":"packages/rust/bevy/bevy_pathfinder/version.toml","version":"0.1.1","version_source":"apps/kbve/astro-kbve/src/content/docs/project/bevy-pathfinder-crate.mdx","author":"h0lybyte","license":"MIT","status":"active","version_target":"packages/rust/bevy/bevy_pathfinder/Cargo.toml","bento":{"badge":"crates · rust · bevy","title":"Flow-field navigation for","accent":"bevy_pathfinder","lede":"A grid-based flow-field pathfinding crate for Bevy tile worlds — a walkability grid, BFS-computed direction fields toward shared goals, and a narrow-passage detector, on a pure-Rust core.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/bevy/bevy_pathfinder","primary":true,"external":true},{"label":"Features","href":"#features"}],"aside":{"icon":"arrow","title":"Flow fields, not per-agent A*","body":"When many agents share the same goal, a single BFS builds a direction field once and every agent looks up its next move in O(1), avoiding a separate A* search per agent."},"stats":[{"label":"Bevy crate","value":"Rust","icon":"rust"},{"label":"Version","value":"0.1.1","icon":"package"},{"label":"Bevy feature","value":"Optional","icon":"settings"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"BlockGrid","body":"2D walkability grid with per-cell height and terrain cost.","icon":"box"},{"title":"FlowField","body":"BFS-computed direction vectors pointing every walkable cell at one or more goals. Agents share a goal and look up their next move in O(1) instead of running per-agent A*.","icon":"arrow"},{"title":"FlowGate","body":"Narrow-passage detector, useful for ambush AI, territory control, and patrol route generation.","icon":"lock"},{"title":"Pure-Rust core","body":"No engine dependency by default; enable the bevy feature for Resource derives and ECS integration.","icon":"rust"}],"related":[{"href":"/project/bevy-cam-crate","title":"Bevy Cam Crate","copy":"Isometric camera crate for the same Bevy engine.","icon":"video"},{"href":"/project/bevy-player-crate","title":"Bevy Player Crate","copy":"Player controller that consumes movement targets.","icon":"gears"}],"features_heading":"Features","related_heading":"Related crates"},"title":"Bevy Pathfinder — Flow Field Crate","tags":["crates","rust","bevy","pathfinding","ai"],"sidebar":{"label":"bevy_pathfinder"},"slug":"/project/bevy-pathfinder-crate"},{"key":"bevy_player_crate","pipeline":"crates","package_name":"bevy_player","source_path":"packages/rust/bevy/bevy_player","version_toml":"packages/rust/bevy/bevy_player/version.toml","version":"0.1.0","version_source":"apps/kbve/astro-kbve/src/content/docs/project/bevy-player-crate.mdx","author":"h0lybyte","license":"MIT","status":"active","version_target":"packages/rust/bevy/bevy_player/Cargo.toml","bento":{"badge":"crates · rust · bevy","title":"Character controller for","accent":"bevy_player","lede":"A kinematic character controller for Bevy 0.18 built on Avian3D physics — gravity, jumping, collision-aware movement, direction mapping, and fall-damage events behind a single PlayerPlugin.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/bevy/bevy_player","primary":true,"external":true},{"label":"Usage","href":"#usage"},{"label":"Features","href":"#features"}],"aside":{"icon":"gears","title":"A working character out of the box","body":"A single PlayerPlugin, configured with a PlayerConfig, handles gravity, jumping, collision-aware movement, input-to-direction mapping, and fall-damage events."},"stats":[{"label":"Bevy crate","value":"Rust","icon":"rust"},{"label":"Physics","value":"Avian3D","icon":"bolt"},{"label":"Engine","value":"Bevy 0.18","icon":"gears"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Avian3D physics","body":"3D f32 kinematic body with collision-aware movement.","icon":"bolt"},{"title":"Configurable tuning","body":"PlayerConfig sets speed, gravity, and jump velocity.","icon":"settings"},{"title":"ECS components","body":"Player and PlayerPhysics mark and drive the controller.","icon":"box"},{"title":"Direction mapping","body":"DirectionMap converts keyboard input into movement.","icon":"arrow"},{"title":"Fall damage","body":"FallDamageEvent fires on hard landings for the game to react.","icon":"alert"},{"title":"Spawn helper","body":"spawn_player_entity() spawns a fully configured player.","icon":"check"}],"related":[{"href":"/project/bevy-cam-crate","title":"Bevy Cam Crate","copy":"Isometric camera that follows the player.","icon":"video"},{"href":"/project/bevy-battle-crate","title":"Bevy Battle Crate","copy":"Turn-based combat for the same engine.","icon":"shield"},{"href":"/project/bevy-pathfinder-crate","title":"Bevy Pathfinder Crate","copy":"Navigation for entities.","icon":"arrow"}],"usage":{"label":"main.rs","lang":"rust","code":"use bevy::prelude::*;\nuse bevy_player::{PlayerPlugin, PlayerConfig};\n\nApp::new()\n    .add_plugins(PlayerPlugin::new(PlayerConfig::default()))\n    .run();\n"},"features_heading":"Features","related_heading":"Related crates"},"title":"Bevy Player — Character Controller Crate","tags":["crates","rust","bevy","physics","gamedev"],"sidebar":{"label":"Bevy Player"},"slug":"/project/bevy-player-crate"},{"key":"bevy_quests_crate","pipeline":"crates","package_name":"bevy_quests","source_path":"packages/rust/bevy/bevy_quests","version_toml":"packages/rust/bevy/bevy_quests/version.toml","version":"0.1.0","version_source":"apps/kbve/astro-kbve/src/content/docs/project/bevy-quests-crate.mdx","author":"h0lybyte","license":"MIT","status":"active","version_target":"packages/rust/bevy/bevy_quests/Cargo.toml","bento":{"badge":"crates · rust · bevy","title":"Proto-driven quests for","accent":"bevy_quests","lede":"A game-agnostic quest registry for Bevy — questdb.proto compiled into typed Rust structs and wrapped in a searchable QuestDb resource queryable by slug, ULID, category, or tags.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/bevy/bevy_quests","primary":true,"external":true},{"label":"Usage","href":"#usage"},{"label":"Features","href":"#features"}],"aside":{"icon":"package","title":"One proto, every game","body":"The crate is game-agnostic — any game can load the same proto quest registry and query it by slug, ULID, category, or tags. It backs the KBVE isometric engine's quest data."},"stats":[{"label":"Bevy crate","value":"Rust","icon":"rust"},{"label":"Edition","value":"2024","icon":"gears"},{"label":"Registry","value":"QuestDb","icon":"database"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Proto-driven","body":"build.rs compiles questdb.proto into typed Rust structs with prost and prost-build.","icon":"gears"},{"title":"Searchable registry","body":"QuestDb indexes quests for lookup by slug, ULID, category, or tags.","icon":"database"},{"title":"Multiple loaders","body":"Populate from Astro JSON (from_json), a proto binary (from_bytes), or decoded proto (from_proto).","icon":"expand"},{"title":"Bevy plugin","body":"BevyQuestsPlugin registers an empty QuestDb resource for games to fill at startup.","icon":"box"}],"related":[{"href":"/project/isometric","title":"Isometric","copy":"The KBVE isometric engine that consumes this quest registry.","icon":"gears"},{"href":"/project/bevy-behavior-crate","title":"bevy_behavior","copy":"Sibling game-agnostic Bevy crate for NPC behavior trees.","icon":"branch"}],"usage":{"label":"main.rs","lang":"rust","code":"use bevy::prelude::*;\nuse bevy_quests::{BevyQuestsPlugin, QuestDb};\n\nfn load_quests(mut commands: Commands) {\n    let json = include_str!(\"path/to/questdb.json\");\n    let db = QuestDb::from_json(json).expect(\"Failed to parse quest JSON\");\n    commands.insert_resource(db);\n}\n"},"features_heading":"Features","related_heading":"Related crates"},"title":"bevy_quests — Proto-Driven Quest Registry for Bevy Games","tags":["crates","rust","bevy","quests"],"sidebar":{"label":"bevy_quests"},"slug":"/project/bevy-quests-crate"},{"key":"bevy_skills_crate","pipeline":"crates","package_name":"bevy_skills","source_path":"packages/rust/bevy/bevy_skills","version_toml":"packages/rust/bevy/bevy_skills/version.toml","version":"0.1.0","version_source":"apps/kbve/astro-kbve/src/content/docs/project/bevy-skills-crate.mdx","author":"h0lybyte","license":"MIT","status":"active","version_target":"packages/rust/bevy/bevy_skills/Cargo.toml","bento":{"badge":"crates · rust · bevy","title":"Skill progression for","accent":"bevy_skills","lede":"A skill-progression crate for Bevy — per-entity XP, levels, and skill checks in a pure-Rust core, with an optional Bevy ECS plugin and event pipeline layered on top.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/bevy/bevy_skills","primary":true,"external":true},{"label":"Usage","href":"#usage"},{"label":"Features","href":"#features"}],"aside":{"icon":"box","title":"Pure-Rust core, optional Bevy","body":"The core is plain Rust with a quadratic XpCurve, SkillRegistry, and SkillProfile, so it also serves <strong>FFI cdylibs</strong> and headless consumers with zero Bevy dependency.","points":["<strong>Core</strong> — XP, levels, and skill checks in plain Rust.","<strong>bevy feature</strong> — optional ECS plugin, on by default."]},"stats":[{"label":"Bevy crate","value":"Rust","icon":"rust"},{"label":"Edition","value":"2024","icon":"settings"},{"label":"Categories","value":"game-dev","icon":"gears"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Skill catalogue","body":"<code>SkillRegistry</code>, <code>SkillDef</code>, and <code>SkillId</code> register named skills with a category and optional icon.","icon":"book"},{"title":"Per-entity state","body":"<code>SkillProfile</code> and <code>SkillEntry</code> track XP and level per entity.","icon":"activity"},{"title":"Quadratic XP curve","body":"<code>XpCurve</code> is configurable per skill.","icon":"chart"},{"title":"Message pipeline","body":"<em>(bevy feature)</em> <code>GrantXpMsg</code>, <code>LevelUpMsg</code>, <code>SkillCheckMsg</code>, and <code>SkillCheckResultMsg</code> drive a publish/subscribe flow.","icon":"message"},{"title":"Optional Bevy plugin","body":"<code>BevySkillsPlugin</code> registers resources, messages, and systems. The <code>bevy</code> feature is on by default and can be disabled so the crate compiles with zero Bevy dependency for FFI and headless use.","icon":"package"}],"related":[{"href":"/project/bevy-cam-crate","title":"Bevy Cam Crate","copy":"Isometric camera crate for the same engine.","icon":"video"},{"href":"/project/bevy-chat-crate","title":"bevy_chat","copy":"Chat and event bridge crate that shares the optional-Bevy-plugin pattern.","icon":"message"}],"usage":{"label":"main.rs","lang":"rust","code":"use bevy::prelude::*;\nuse bevy_skills::{BevySkillsPlugin, SkillRegistry, SkillDef, GrantXpMsg, LevelUpMsg};\n\nApp::new()\n    .add_plugins(BevySkillsPlugin)\n    .add_systems(Startup, |mut registry: ResMut<SkillRegistry>| {\n        registry.register(SkillDef {\n            r#ref: \"mining\".into(),\n            name: \"Mining\".into(),\n            xp_curve: None,\n            category: \"gathering\".into(),\n            icon: None,\n        });\n    });\n"},"features_heading":"Features","related_heading":"Related crates"},"title":"bevy_skills — Skill Progression Crate for Bevy","tags":["crates","rust","bevy"],"sidebar":{"label":"uevy skills"},"slug":"/project/bevy-skills-crate"},{"key":"bevy_spells_crate","pipeline":"crates","package_name":"bevy_spells","source_path":"packages/rust/bevy/bevy_spells","version_toml":"packages/rust/bevy/bevy_spells/version.toml","version":"0.1.0","version_source":"apps/kbve/astro-kbve/src/content/docs/project/bevy-spells-crate.mdx","author":"h0lybyte","license":"MIT","status":"active","version_target":"packages/rust/bevy/bevy_spells/Cargo.toml","bento":{"badge":"crates · rust · bevy","title":"Proto-driven spell registry for","accent":"bevy_spells","lede":"Proto-driven spell definitions for Bevy games — compiles spelldb.proto into typed Rust structs with a searchable SpellDb registry any game can load and query.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/bevy/bevy_spells","primary":true,"external":true},{"label":"Usage","href":"#usage"},{"label":"Features","href":"#features"}],"aside":{"icon":"database","title":"One proto, every game","body":"spelldb.proto is the single source of truth — prost-build generates the Rust structs at build time, human-authored Astro MDX content is codegen'd to <strong>spelldb-data.binpb</strong>, and SpellDb::from_bytes() decodes it at startup."},"stats":[{"label":"Language","value":"Rust","icon":"rust"},{"label":"Version","value":"0.1.0","icon":"package"},{"label":"Schema","value":"proto","icon":"database"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Proto-driven schema","body":"spelldb.proto is the single source of truth; prost-build generates the Rust spell structs at build time.","icon":"database"},{"title":"Searchable SpellDb resource","body":"Query spells by ref, ULID, school, or rarity.","icon":"book"},{"title":"Binary proto loading","body":"SpellDb::from_bytes() decodes spelldb-data.binpb, the codegen output of the MDX spell catalog.","icon":"code"},{"title":"Game-agnostic","body":"The same registry serves any Bevy game, mirroring the bevy_items item registry.","icon":"box"},{"title":"Committed prost output","body":"src/proto/spell.rs is committed; build.rs only recompiles the proto when BUILD_PROTO=1 is set.","icon":"package"}],"related":[{"href":"/project/bevy-items-crate","title":"Bevy Items Crate","copy":"The item-registry sibling that shares the proto-driven pattern.","icon":"box"},{"href":"/project/bevy-skills-crate","title":"Bevy Skills Crate","copy":"Skill progression layer that pairs with spells.","icon":"book"}],"usage":{"label":"Cargo.toml","lang":"toml","code":"[dependencies]\nbevy_spells = { path = \"packages/rust/bevy/bevy_spells\" }\n"},"features_heading":"Features","related_heading":"Related crates"},"title":"bevy_spells — Proto-Driven Spell Registry Crate","tags":["crates","rust","bevy"],"sidebar":{"label":"uevy spells"},"slug":"/project/bevy-spells-crate"},{"key":"bevy_statemachine_crate","pipeline":"crates","package_name":"bevy_statemachine","source_path":"packages/rust/bevy/bevy_statemachine","version_toml":"packages/rust/bevy/bevy_statemachine/version.toml","version":"0.1.0","version_source":"apps/kbve/astro-kbve/src/content/docs/project/bevy-statemachine-crate.mdx","author":"h0lybyte","license":"MIT","status":"active","version_target":"packages/rust/bevy/bevy_statemachine/Cargo.toml","bento":{"badge":"crates · rust · bevy","title":"State snapshots for","accent":"bevy_statemachine","lede":"A thread-safe state snapshot bridge for Bevy — expose ECS resources to Tauri IPC, WASM JavaScript, and lightyear networking without racing the schedule, as JSON or bincode.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/bevy/bevy_statemachine","primary":true,"external":true},{"label":"Usage","href":"#usage"},{"label":"Features","href":"#features"}],"aside":{"icon":"shield-check","title":"Read state without racing","body":"A running game's state can be read from outside the ECS world without racing the schedule, exposed to <strong>Tauri IPC</strong>, <strong>WASM JS</strong>, and <strong>lightyear</strong> networking."},"stats":[{"label":"Bevy crate","value":"Rust","icon":"rust"},{"label":"Default format","value":"JSON","icon":"code"},{"label":"Optional format","value":"bincode","icon":"package"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Thread-safe snapshot bridge","body":"Exposes ECS state to external threads and consumers without blocking the Bevy schedule.","icon":"shield-check"},{"title":"Multiple consumers","body":"Designed for Tauri IPC, WASM JavaScript, and lightyear networking off the same snapshot.","icon":"expand"},{"title":"Monotonic versioning","body":"<code>snapshot_version::&lt;T&gt;()</code> returns a monotonic counter so consumers can detect fresh state cheaply.","icon":"clock"},{"title":"Dual serialization","body":"JSON via <code>serde_json</code> (default <code>serde</code> feature) and compact binary via the optional <code>bincode</code> feature.","icon":"code"}],"related":[{"href":"/project/bevy-db-crate/","title":"bevy_db","copy":"Cross-platform async persistence for Bevy state.","icon":"database"},{"href":"/project/bevy-supa-crate/","title":"bevy_supa","copy":"Supabase-backed state sync for Bevy games.","icon":"shield"}],"usage":{"label":"main.rs","lang":"rust","code":"use bevy::prelude::*;\nuse bevy_statemachine::{StateSnapshotPlugin, get_snapshot, get_snapshot_json};\n\nfn main() {\n    App::new()\n        .add_plugins(StateSnapshotPlugin::<MyState>::new())\n        .run();\n}\n"},"features_heading":"Features","related_heading":"Related crates"},"title":"bevy_statemachine — State Snapshot Bridge for Bevy","tags":["crates","rust","bevy"],"sidebar":{"label":"uevy statemachine"},"slug":"/project/bevy-statemachine-crate"},{"key":"bevy_supa_crate","pipeline":"crates","package_name":"bevy_supa","source_path":"packages/rust/bevy/bevy_supa","version_toml":"packages/rust/bevy/bevy_supa/version.toml","version":"0.1.0","version_source":"apps/kbve/astro-kbve/src/content/docs/project/bevy-supa-crate.mdx","author":"h0lybyte","license":"MIT","status":"active","version_target":"packages/rust/bevy/bevy_supa/Cargo.toml","bento":{"badge":"crates · rust · bevy","title":"Supabase client for","accent":"bevy_supa","lede":"A transport-agnostic Supabase / PostgREST client crate — native reqwest + rustls HTTP by default, a WASM fetch stub, and opt-in Bevy ECS integration, so JNI plugins, CLIs, and games share one client.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/bevy/bevy_supa","primary":true,"external":true},{"label":"Usage","href":"#usage"},{"label":"Features","href":"#features"}],"aside":{"icon":"package","title":"One client, extracted to share","body":"Originally <code>entity::client::supabase</code> inside the <code>kbve</code> crate, extracted so JNI plugins, CLIs, and Bevy games can <strong>share one client</strong> without dragging diesel, axum, or tower along.","points":["<strong>native</strong> (default) — reqwest + rustls HTTP transport.","<strong>wasm</strong> — browser fetch transport (stub, not yet implemented).","<strong>bevy</strong> — BevySupaPlugin + SupaClient Bevy Resource."]},"stats":[{"label":"Bevy crate","value":"Rust","icon":"rust"},{"label":"Default transport","value":"native","icon":"server"},{"label":"Categories","value":"http-client","icon":"gears"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Lean by default","body":"No diesel, no tower, no Bevy in the default feature set; disable default features when only the type surface is needed (build scripts, codegen).","icon":"box"},{"title":"One client, two callers","body":"The same <code>SupaClient</code> serves JNI MC plugins (no Bevy) and Bevy games (<code>Resource</code>) with no newtype wrapper.","icon":"expand"},{"title":"Schema-aware RPC","body":"<code>rpc_schema</code> sets <code>Content-Profile</code> / <code>Accept-Profile</code> headers to reach non-default PostgREST schemas.","icon":"database"},{"title":"JWT layering","body":"<code>with_jwt</code> swaps just the <code>Authorization</code> header so service-role and per-user JWTs coexist.","icon":"key"}],"related":[{"href":"/project/bevy-cam-crate","title":"Bevy Cam Crate","copy":"Camera crate from the same Bevy package group.","icon":"video"},{"href":"/project/bevy-inventory-crate","title":"bevy_inventory","copy":"Sibling slot-based inventory crate.","icon":"box"},{"href":"/project/kilobase","title":"Kilobase","copy":"The custom Supabase-based Postgres image this client can target.","icon":"database"}],"usage":{"label":"main.rs","lang":"rust","code":"use bevy_supa::SupaClient;\n\nlet client = SupaClient::from_env()\n    .ok_or(\"SUPABASE_URL + SUPABASE_SERVICE_ROLE_KEY missing\")?;\n\nlet resp = client\n    .rpc_schema(\n        \"service_verify_link\",\n        serde_json::json!({ \"p_mc_uuid\": \"0123\", \"p_code\": 123456 }),\n        \"mc\",\n    )\n    .await?;\n"},"features_heading":"Features","related_heading":"Related crates"},"title":"bevy_supa — Agnostic Supabase PostgREST Client Crate","tags":["crates","rust","bevy","supabase","http"],"sidebar":{"label":"bevy_supa"},"slug":"/project/bevy-supa-crate"},{"key":"bevy_tasker_crate","pipeline":"crates","package_name":"bevy_tasker","source_path":"packages/rust/bevy/bevy_tasker","version_toml":"packages/rust/bevy/bevy_tasker/version.toml","version":"0.1.1","version_source":"apps/kbve/astro-kbve/src/content/docs/project/bevy-tasker-crate.mdx","author":"h0lybyte","license":"MIT","status":"active","version_target":"packages/rust/bevy/bevy_tasker/Cargo.toml","bento":{"badge":"crates · rust · bevy","title":"Cross-platform async tasks for","accent":"bevy_tasker","lede":"Cross-platform async task spawning for Bevy — a desktop thread pool or WASM web workers / microtask queue behind one API, so game code stays identical on every target.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/bevy/bevy_tasker","primary":true,"external":true},{"label":"Usage","href":"#usage"},{"label":"Features","href":"#features"}],"aside":{"icon":"expand","title":"One API, every target","body":"It presents one API — <code>spawn</code> and <code>spawn_local</code> — that maps to a desktop thread pool or to WASM web workers / microtask queue depending on the target, so <strong>game code stays identical everywhere</strong>."},"stats":[{"label":"Bevy crate","value":"Rust","icon":"rust"},{"label":"Desktop","value":"threads","icon":"gears"},{"label":"WASM","value":"workers","icon":"package"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Desktop thread pool","body":"Tasks run on a pool sized to <code>std::thread::available_parallelism</code>, wired through crossbeam channels.","icon":"gears"},{"title":"WASM microtask queue","body":"Without atomics, tasks run via the browser's <code>queueMicrotask</code>.","icon":"clock"},{"title":"WASM web workers","body":"With atomics, <code>spawn</code> dispatches <code>Send</code> futures to web workers via a shared work queue.","icon":"package"},{"title":"Pinned local tasks","body":"<code>spawn_local</code> pins <code>!Send</code> futures to the spawning thread via <code>Atomics.waitAsync</code>.","icon":"lock"},{"title":"Uniform API","body":"Every path returns an <code>async_task::Task</code>; <code>await</code>, drop to detach, or <code>.cancel()</code>.","icon":"expand"}],"related":[{"href":"/project/bevy-cam-crate","title":"Bevy Cam Crate","copy":"Isometric camera crate in the same Bevy game stack.","icon":"video"},{"href":"/project/bevy-kbve-net-crate","title":"Bevy KBVE Net Crate","copy":"Networking layer that uses async tasks.","icon":"server"}],"usage":{"label":"main.rs","lang":"rust","code":"use bevy_tasker::spawn;\n\nlet task = spawn(async {\n    42\n});\n"},"features_heading":"Features","related_heading":"Related crates"},"title":"bevy_tasker — Cross-Platform Async Task Crate","tags":["crates","rust","bevy"],"sidebar":{"label":"uevy tasker"},"slug":"/project/bevy-tasker-crate"},{"unsplash":"1604657843102-388d8541ef04","img":"https://images.unsplash.com/photo-1604657843102-388d8541ef04?fit=crop&w=1400&h=700&q=75","bento":{"badge":"gaming · godot · rust","title":"Idle space shooter","accent":"Brackeys Game Jam","lede":"KBVE's entry for the Brackeys Game Jam 2025.1 — an idle Asteroids-style space shooter built in Godot with Rust via GDExtension. Themed Nothing Can Go Wrong, you pilot a lone mining ship, harvest resources from asteroids, and upgrade your vessel while anomalies keep things interesting.","ctas":[{"label":"Design notes","href":"#design"}],"stats":[{"label":"Event","value":"Brackeys 2025.1","icon":"calendar"},{"label":"Engine","value":"Godot + Rust","icon":"gears"},{"label":"Genre","value":"Idle shooter","icon":"sword"},{"label":"Theme","value":"Nothing Can Go Wrong","icon":"info"}],"features":[{"title":"Mine & upgrade","body":"Pilot a lone mining ship, harvest scraps from asteroids, and upgrade your vessel.","icon":"sword"},{"title":"Idle, low-pressure","body":"The ship is never auto-destroyed — play anytime with optional challenges and bonuses.","icon":"clock"},{"title":"Godot + Rust","body":"Built in Godot with the game logic in Rust via GDExtension.","icon":"gears"},{"title":"Layered space sim","body":"Parallax background layers plus physics layers for planets, ships, NPCs, entities, and projectiles.","icon":"expand"}],"related":[{"href":"/application/godot/","title":"Godot","copy":"The engine powering this jam entry.","icon":"gears"},{"href":"/application/rust/","title":"Rust","copy":"The language used via GDExtension for the game logic.","icon":"rust"}],"features_eyebrow":"The game","features_heading":"Gameplay","related_heading":"Related"},"title":"Brackeys Game Jam — KBVE Godot + Rust Idle Space Shooter","tags":["gaming","godot","rust"],"sidebar":{"label":"Barckeys Game Jam","order":1000,"hidden":false,"badge":{"text":"New","variant":"tip"}},"slug":"/project/brackeys"},{"unsplash":"1516563988150-3e50726d365c","img":"https://images.unsplash.com/photo-1516563988150-3e50726d365c?fit=crop&w=1400&h=700&q=75","bento":{"badge":"ai","title":"Multi-GPU ML workstation","accent":"Charles","lede":"KBVE's internal machine-learning build — a multi-GPU deep-learning workstation intended to cluster NVIDIA RTX 4090 cards for training and serving models. This page captures the hardware notes and software stack behind the build.","ctas":[{"label":"Hardware","href":"#hardware"},{"label":"Software","href":"#software"}],"stats":[{"label":"Name","value":"charles","icon":"server"},{"label":"GPU","value":"RTX 4090","icon":"zap"},{"label":"RAM","value":"DDR5 up to 256GB+","icon":"database"},{"label":"Orchestration","value":"Docker + K8s","icon":"gears"}],"features":[{"title":"Clustered RTX 4090s","body":"Liquid-cooled MSI Suprim Liquid X cards, chosen so multiple 4090s can cluster together.","icon":"zap"},{"title":"DDR5 memory","body":"Scales from 32-64GB entry-level up to 256GB+ per node for large datasets.","icon":"database"},{"title":"Proxmox virtualized","body":"The build runs on KBVE Proxmox with Docker and Kubernetes distributing workloads.","icon":"server"},{"title":"Per-node scaling","body":"RAM is allocated by each node's role rather than uniformly, enhancing the scaling strategy.","icon":"expand"}],"related":[{"href":"/project/lofifocus/","title":"LofiFocus","copy":"A KBVE AI project that trains and serves generative audio models.","icon":"activity"}],"features_eyebrow":"The build","features_heading":"Highlights","related_heading":"Related"},"title":"Charles — KBVE Internal Machine Learning GPU Cluster","tags":["ai"],"sidebar":{"label":"Charles","order":8},"slug":"/project/charles"},{"unsplash":"1605745341112-85968b19335b","img":"https://images.unsplash.com/photo-1605745341112-85968b19335b?fit=crop&w=1400&h=700&q=75","key":"chisel_ubuntu_axum","pipeline":"docker","app_name":"chisel-ubuntu-axum","source_path":"packages/docker/chisel-ubuntu-axum","version_toml":"packages/docker/chisel-ubuntu-axum/version.toml","version":"24.04.11","author":"h0lybyte","license":"KBVE","status":"active","runner":"ubuntu-latest","image":"kbve/chisel-ubuntu-axum","has_test":false,"bento":{"badge":"docker · infrastructure · chisel","title":"Minimal runtime base for","accent":"Axum services","lede":"A shared chiseled Ubuntu 24.04 runtime base image for every KBVE Axum service. Built with Canonical's chisel so it carries only the runtime libraries — jemalloc, libpq5, and CA certificates — on a scratch-based, shell-less rootfs.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/docker/chisel-ubuntu-axum","primary":true,"external":true},{"label":"Usage","href":"#usage"}],"aside":{"icon":"shield","title":"Shell-less, smaller, safer","body":"Chisel slices Ubuntu packages into minimal filesystem layers, extracting only the exact files needed — far smaller than the <code>~80MB+</code> full Ubuntu base, with no shell or package manager to shrink the attack surface.","points":["<strong>jemalloc</strong> — preconfigured via <code>LD_PRELOAD</code>.","<strong>Non-root</strong> — runs as <code>appuser:10001</code>."]},"stats":[{"label":"Image","value":"kbve/chisel-ubuntu-axum","icon":"package"},{"label":"Base","value":"Ubuntu 24.04","icon":"box"},{"label":"User","value":"appuser:10001","icon":"lock"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"Minimal rootfs","body":"Chiseled Ubuntu 24.04 rootfs — no shell, no package manager, just the exact files needed on a scratch base.","icon":"box"},{"title":"jemalloc preloaded","body":"Memory allocator pre-configured via LD_PRELOAD for every service that inherits the base.","icon":"zap"},{"title":"Postgres + TLS ready","body":"Bundles libpq5, the PostgreSQL client library, and CA certificates for HTTPS/TLS connections.","icon":"shield"},{"title":"Fewer build stages","body":"Eliminates ~3 Docker stages (chisel + jemalloc + libpq) from each service Dockerfile, saving build time and disk in CI.","icon":"check"}],"related":[{"href":"/project/api/","title":"API","copy":"Axum service that runs on this runtime base.","icon":"server"},{"href":"/project/herbmail/","title":"Herbmail","copy":"Another KBVE Axum service targeting this image.","icon":"message"}],"related_heading":"Related"},"title":"Chisel Ubuntu Axum — Minimal Runtime Base Image","tags":["docker","infrastructure","chisel"],"sidebar":{"label":"Chisel Base","order":900},"slug":"/project/chisel"},{"key":"chuckrpg","pipeline":"docker","app_name":"axum-chuckrpg","source_path":"apps/chuckrpg/axum-chuckrpg","version_toml":"apps/chuckrpg/axum-chuckrpg/version.toml","version":"0.1.9","author":"h0lybyte","license":"KBVE","status":"beta","runner":"ubuntu-latest","image":"kbve/chuckrpg","e2e_name":"axum-chuckrpg-e2e","deployment_yaml":"apps/kube/chuckrpg/manifest/deployment.yaml","version_target":"apps/chuckrpg/axum-chuckrpg/Cargo.toml","has_test":true,"kube":{"stack":"agones","environment":"beta","tier":"api","owner":"h0lybyte","criticality":"low"},"bento":{"badge":"game · api · unreal","title":"Open-world RPG backend","accent":"ChuckRPG","lede":"An Unreal Engine open-world multiplayer RPG on the OWS game backend. This page tracks axum-chuckrpg — the Rust Axum service that serves the website, game API, and signed itch.io desktop downloads.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/chuckrpg/axum-chuckrpg","primary":true,"external":true},{"label":"Usage","href":"#usage"},{"label":"Features","href":"#features"}],"aside":{"icon":"server","title":"One Axum service, three jobs","body":"axum-chuckrpg serves the ChuckRPG web frontend, the backend game API, and resolves signed itch.io desktop downloads through the shared <a href=\"/project/jedi-crate/\">jedi</a> itch client.","points":["<strong>Website + API</strong> — askama-rendered web plus the game API.","<strong>Downloads</strong> — signed per-platform itch.io redirects."]},"stats":[{"label":"App","value":"axum-chuckrpg","icon":"server"},{"label":"Language","value":"Rust","icon":"rust"},{"label":"Image","value":"kbve/chuckrpg","icon":"box"},{"label":"Status","value":"beta","icon":"activity"}],"features":[{"title":"Website + game API","body":"Serves the ChuckRPG web frontend and the backend game API from one Axum service.","icon":"server"},{"title":"Signed itch.io downloads","body":"<code>/downloads/{platform}</code> redirects to the signed itch URL for the requested platform via the shared jedi itch client.","icon":"key"},{"title":"Downloads page","body":"<code>/downloads</code> renders an askama page of the available builds.","icon":"book"},{"title":"Live build state API","body":"<code>/api/downloads</code> returns the current per-platform build state the web consumes.","icon":"activity"},{"title":"Health checks","body":"<code>/health</code> and <code>/api/health</code> back the liveness probes.","icon":"check"}],"related":[{"href":"/project/axum-rentearth/","title":"RentEarth API","copy":"Sibling Axum download backend with the same route shape.","icon":"server"},{"href":"/project/jedi-crate/","title":"jedi","copy":"Shared Rust crate providing the itch.io signing client.","icon":"key"}],"usage":{"label":"routes","lang":"http","code":"GET /downloads/{platform}   -> 302 redirect to signed itch.io URL\nGET /downloads              -> HTML downloads page (askama)\nGET /api/downloads          -> JSON per-platform build state\nGET /health                 -> liveness\n"},"related_heading":"Related"},"title":"ChuckRPG — Open World RPG Backend API","tags":["game","api"],"sidebar":{"label":"ChuckRPG","order":30},"slug":"/project/chuckrpg"},{"unsplash":"1477959858617-67f85cf4f1df","img":"https://images.unsplash.com/photo-1477959858617-67f85cf4f1df?fit=crop&w=1400&h=700&q=75","bento":{"badge":"design","title":"Deckbuilder civ strategy","accent":"CityVote","lede":"A KBVE game concept blending Civilization-style empire building with a Balatro-inspired deckbuilder. Card suits map to four core resources — Gold, Food, Labor, and Faith — that feed one another in an economic loop, over a turn-based economy with a real-time movement layer.","ctas":[{"label":"Design notes","href":"#design"}],"stats":[{"label":"Project","value":"CityVote","icon":"crown"},{"label":"Type","value":"Deckbuilder civ","icon":"crown"},{"label":"Inspiration","value":"Civ, Balatro","icon":"info"},{"label":"Resources","value":"Gold/Food/Labor/Faith","icon":"database"},{"label":"Status","value":"Concept","icon":"book"}],"features":[{"title":"Deckbuilder core","body":"Card suits produce and consume empire resources.","icon":"crown"},{"title":"Four-resource economy","body":"Diamonds (Gold), Hearts (Food), Spades (Labor), Clubs (Faith).","icon":"database"},{"title":"Economic loop","body":"Each resource funds the production of the next.","icon":"gears"},{"title":"Hybrid pacing","body":"Turn-based system with a real-time movement and combat layer.","icon":"clock"}],"related":[{"href":"/project/unreal-rareicon/","title":"Unreal Rareicon","copy":"Another KBVE strategy game project.","icon":"sword"},{"href":"/project/kbvegameplay/","title":"KBVEGameplay","copy":"Shared gameplay effect framework.","icon":"gears"}],"features_eyebrow":"The design","features_heading":"Features","related_heading":"Related"},"title":"CityVote — Deckbuilder Civ Strategy Game","tags":["design"],"sidebar":{"label":"CityVote","order":10},"slug":"/project/cityvote"},{"unsplash":"1590840960672-db24958eef9a","img":"https://images.unsplash.com/photo-1590840960672-db24958eef9a?fit=crop&w=1400&h=700&q=75","key":"cryptothrone","pipeline":"docker","app_name":"cryptothrone","source_path":"apps/cryptothrone","version_toml":"apps/cryptothrone/version.toml","version":"0.1.51","author":"h0lybyte","license":"KBVE","status":"active","runner":"ubuntu-latest","image":"kbve/cryptothrone","e2e_name":"cryptothrone","deployment_yaml":"apps/kube/cryptothrone/manifest/cryptothrone-deployment.yaml","version_target":"apps/cryptothrone/axum-cryptothrone/Cargo.toml","has_test":true,"kube":{"stack":"agones","environment":"prod","tier":"api","owner":"h0lybyte","criticality":"high"},"bento":{"badge":"game · strategy · agones","title":"King of the Hill","accent":"CryptoThrone","lede":"A King of the Hill strategy game — defend the throne against waves of NPCs, build your settlement, and battle other players to become the ruler. Inspired by epic fantasy and tower-defense games.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/cryptothrone","primary":true,"external":true},{"label":"Roadmap","href":"#roadmap"},{"label":"Coin economy","href":"#economy"}],"aside":{"icon":"crown","title":"Isolated in-world economy","body":"CryptoThrone runs an internal coin economy — the currency players earn and spend in-world — <strong>fully isolated</strong> from the KBVE account ledger (Khash / Credits). The two never cross.","points":["<strong>Currency</strong> — coin and gold-bar inventory items, 100:1.","<strong>Authority</strong> — simgrid server-side, synced via InventorySync."]},"stats":[{"label":"App","value":"cryptothrone","icon":"crown"},{"label":"Backend","value":"Rust axum","icon":"rust"},{"label":"Deploy","value":"Agones","icon":"activity"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"Defend the throne","body":"Hold the hill against tower-defense-style waves of NPCs closing on the throne room.","icon":"shield"},{"title":"Build a settlement","body":"Grow your holdings with settlement-building mechanics and resource management.","icon":"box"},{"title":"Battle other players","body":"Competitive player-versus-player fights for control of the throne.","icon":"sword"},{"title":"In-world coin economy","body":"Earn and spend coins and gold bars — an isolated economy that never touches the real account ledger.","icon":"crown"}],"related":[{"href":"/project/cryptothrone-server/","title":"CryptoThrone Server","copy":"The Agones-hosted game backend for CryptoThrone.","icon":"server"},{"href":"/project/rareicon/","title":"RareIcon","copy":"A sibling KBVE game project.","icon":"zap"}],"related_heading":"Related"},"title":"CryptoThrone.com — King of the Hill Strategy Game","tags":["gamedev"],"featured":true,"sidebar":{"label":"CryptoThrone","order":40},"slug":"/project/cryptothrone"},{"key":"cryptothrone_server","pipeline":"docker","app_name":"cryptothrone-server","source_path":"apps/agones/cryptothrone/server","version_toml":"apps/agones/cryptothrone/server/version.toml","version":"0.0.26","author":"h0lybyte","license":"MIT","status":"beta","runner":"arc-runner-set","image":"kbve/cryptothrone-server","deployment_yaml":"apps/kube/agones/cryptothrone/manifests/fleet.yaml","version_target":"apps/agones/cryptothrone/server/Cargo.toml","has_test":false,"kube":{"stack":"agones","environment":"beta","tier":"server","owner":"h0lybyte","criticality":"low"},"bento":{"badge":"game-server · rust · cryptothrone","title":"Authoritative grid host","accent":"CryptoThrone Server","lede":"The authoritative shared-world host for CryptoThrone — an axum WebSocket router paired with the simgrid headless Bevy grid simulation on tokio. Grid-authoritative: collision is tile occupancy, physics is integer math.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/agones/cryptothrone/server","primary":true,"external":true},{"label":"Sim core","href":"#internals"},{"label":"Deployment","href":"#internals"}],"aside":{"icon":"server","title":"Grid-authoritative","body":"Unlike a physics server, collision is tile occupancy and movement is integer grid math, so the runtime stays light. The sim ticks at <strong>20 Hz</strong> and fans out <strong>10 Hz</strong> snapshots.","points":["<strong>Auth</strong> — verifies inbound Supabase JWT on /ws.","<strong>Lifecycle</strong> — Agones Ready / Health / Shutdown."]},"stats":[{"label":"App","value":"cryptothrone-server","icon":"server"},{"label":"Stack","value":"axum + Bevy","icon":"rust"},{"label":"Protocol","value":"simgrid JSON","icon":"network"},{"label":"Listen","value":"0.0.0.0:7979","icon":"activity"}],"features":[{"title":"Terminate /ws + auth","body":"Terminates the WebSocket upgrade and verifies the inbound Supabase JWT (dev-accept fallback when the secret is unset).","icon":"key"},{"title":"Drive the sim tick","body":"Runs the simgrid sim tick at 20 Hz on a tokio multi-thread runtime, fanning out authoritative 10 Hz snapshots.","icon":"activity"},{"title":"Admit & spawn","body":"Admits players into roster slots and spawns the CloudCity world — wandering NPCs and monsters — for everyone in the shared map.","icon":"box"},{"title":"Agones lifecycle","body":"Runs the Agones SDK lifecycle (Ready / Health / Shutdown); degrades gracefully outside Agones for local dev.","icon":"server"}],"related":[{"href":"/project/isometric/","title":"Isometric","copy":"Sibling Bevy multiplayer game in the KBVE stack.","icon":"map"},{"href":"/project/agones/","title":"Agones","copy":"The GameServer lifecycle SDK used to manage these Fleet pods.","icon":"server"}],"related_heading":"Related"},"title":"CryptoThrone Server — Authoritative Axum + Bevy Grid Host","tags":["docker","rust","game-server","cryptothrone"],"sidebar":{"label":"CryptoThrone Server","order":58},"slug":"/project/cryptothrone-server"},{"key":"devops","pipeline":"npm","package_name":"devops","source_path":"packages/npm/devops","version_toml":"packages/npm/devops/version.toml","version":"0.1.0","author":"h0lybyte","license":"MIT","status":"active","bento":{"badge":"npm · devops","title":"Proto-to-Zod codegen &","accent":"@kbve/devops","lede":"A DevOps helper library that streamlines development and production tasks across the monorepo — proto-to-zod code generation, GitHub Actions helpers, input sanitization, and CI registry management so CI/CD pipelines stay consistent and low-maintenance.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/npm/devops","primary":true,"external":true},{"label":"Features","href":"#features"}],"aside":{"icon":"gears","title":"Powers the CI registry","body":"Drives the CI dispatch manifest registry used to build and publish monorepo artifacts, and automates repetitive GitHub Actions workflow tasks.","points":["<strong>Codegen</strong> — Zod schemas from Protocol Buffers via <code>@bufbuild/protobuf</code>.","<strong>Sanitize</strong> — HTML/input sanitization backed by <code>dompurify</code>."]},"stats":[{"label":"Language","value":"TypeScript","icon":"code"},{"label":"Codegen","value":"proto→zod","icon":"gears"},{"label":"Sanitize","value":"dompurify","icon":"shield"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Proto-to-zod codegen","body":"Generates Zod validation schemas from Protocol Buffer definitions via @bufbuild/protobuf.","icon":"gears"},{"title":"GitHub Actions helpers","body":"Utilities that automate repetitive workflow tasks in KBVE's CI/CD pipelines.","icon":"branch"},{"title":"Sanitization","body":"HTML/input sanitization backed by dompurify.","icon":"shield"},{"title":"CI registry management","body":"Powers the CI dispatch manifest registry used to build and publish monorepo artifacts.","icon":"package"}],"related":[{"href":"/project/khashvault/","title":"KhashVault","copy":"A companion KBVE npm library for browser-side cryptography.","icon":"lock"}],"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related"},"title":"@kbve/devops — Proto-to-Zod Codegen and CI/CD Helper Library","tags":["npm","devops"],"sidebar":{"label":"DevOps","order":62},"slug":"/project/devops"},{"unsplash":"1516563988150-3e50726d365c","img":"https://images.unsplash.com/photo-1516563988150-3e50726d365c?fit=crop&w=1400&h=700&q=75","key":"discordsh","pipeline":"docker","app_name":"discordsh","source_path":"apps/discordsh","version_toml":"apps/discordsh/version.toml","version":"0.1.46","author":"h0lybyte","license":"KBVE","status":"active","runner":"ubuntu-latest","image":"kbve/discordsh","e2e_name":"discordsh","deployment_yaml":"apps/kube/discordsh/manifest/deployment.yaml","version_target":"apps/discordsh/axum-discordsh/Cargo.toml","has_test":true,"kube":{"stack":"application","environment":"prod","tier":"api","owner":"h0lybyte","criticality":"high"},"bento":{"badge":"ai · discord","title":"Discord server topsite","accent":"DiscordSH","lede":"A topsite for Discord servers built to promote them through two mechanics — a cumulative voting system and a real-time bump stream. A Rust/Axum thin layer over Supabase, Postgres, and Redis, with an Astro frontend and real-time updates over WebSockets.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/discordsh","primary":true,"external":true},{"label":"How it works","href":"#product"},{"label":"Development","href":"#development"}],"aside":{"icon":"chart","title":"Vote vs. bump","body":"<strong>Voting</strong> is cumulative — once every 12 hours, ranked by total, reset monthly for long-term visibility. <strong>Bumping</strong> is a real-time stream of recently promoted servers with no reset, aimed at short-term exposure.","points":["<strong>Frontend</strong> — Astro + Alpine.js + React.","<strong>Backend</strong> — Rust/Axum over Supabase + Redis."]},"stats":[{"label":"App","value":"discordsh","icon":"discord"},{"label":"Stack","value":"Rust + Axum","icon":"rust"},{"label":"Data","value":"Supabase + Redis","icon":"database"},{"label":"Status","value":"active","icon":"check"}],"features":[{"title":"Voting system","body":"Users vote once every 12 hours; servers rank by total votes and reset monthly, rewarding consistent engagement with long-term visibility.","icon":"chart"},{"title":"Bump system","body":"A continuous, reset-free stream of recently promoted servers for immediate, short-term visibility boosts.","icon":"zap"},{"title":"Real-time WebSockets","body":"Live vote updates and bump-stream refreshes exchanged over WebSockets, backed by key-value SET / GET / WATCH commands.","icon":"activity"},{"title":"Thin Axum layer","body":"A Rust/Axum REST + WebSocket layer mediates Supabase and Redis, adding business logic like 12-hour rate limits and bump processing.","icon":"server"}],"related":[{"href":"/project/discordsh-bot/","title":"DiscordSH Bot","copy":"The companion Discord bot for the topsite.","icon":"discord"}],"related_heading":"Related"},"title":"DiscordSH — Discord Server Topsite with Voting and Bump","tags":["ai","discord"],"sidebar":{"label":"DiscordSH","order":420},"slug":"/project/discordsh"},{"key":"discordsh_bot","pipeline":"docker","app_name":"discordsh-bot","source_path":"apps/discordsh/discordsh-bot","version_toml":"apps/discordsh/discordsh-bot/version.toml","version":"0.1.33","runner":"ubuntu-latest","image":"kbve/discordsh-bot","e2e_name":"discordsh-bot-e2e","deployment_yaml":"apps/kube/discordsh/manifest/discordsh-bot-deployment.yaml","version_target":"apps/discordsh/discordsh-bot/Cargo.toml","has_test":true,"kube":{"stack":"application","environment":"prod","tier":"api","owner":"h0lybyte","criticality":"high"},"bento":{"badge":"discord · bot","title":"Standalone gateway bot","accent":"DiscordSH Bot","lede":"The standalone Discord gateway bot extracted from the axum-discordsh monolith. Built on the poise/serenity gateway with shard support, it handles every Discord interaction independently of the HTTP server — slash commands, an embed dungeon game, GitHub management, and a namespace-pinned Windmill job runner.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/discordsh/discordsh-bot","primary":true,"external":true},{"label":"Features","href":"#overview"},{"label":"Environment","href":"#env"}],"aside":{"icon":"lock","title":"Allowlisted Windmill runs","body":"Every <code>/wm</code> path is pinned to the <code>f/discordsh/</code> namespace and matched against a globset allowlist before any call is made, with per-user rate limiting and strict validation that rejects traversal. The allowlist is mandatory — empty or absent disables the command.","points":["<strong>Gateway</strong> — poise/serenity with shard support.","<strong>Health</strong> — minimal HTTP server for k8s probes."]},"stats":[{"label":"App","value":"discordsh-bot","icon":"discord"},{"label":"Gateway","value":"poise/serenity","icon":"server"},{"label":"Health port","value":"4322","icon":"activity"},{"label":"Status","value":"prod","icon":"check"}],"features":[{"title":"Slash commands","body":"Serves /github, /gh, /dungeon, /ping, /status, /health, /restart, /cleanup, /skills, and /wm over the poise/serenity gateway.","icon":"message"},{"title":"Embed dungeon game","body":"Runs an embed dungeon game with bevy_battle combat and bevy_inventory item management, persisting players via Supabase.","icon":"sword"},{"title":"GitHub management","body":"Manages GitHub issues and PRs with SVG card rendering from within Discord.","icon":"github"},{"title":"Windmill runner","body":"Runs allowlisted Windmill scripts in-cluster, pinned to the f/discordsh/ namespace with per-user rate limiting.","icon":"gears"}],"related":[{"href":"/project/discordsh/","title":"DiscordSH","copy":"HTTP server (Astro site, REST API).","icon":"discord"},{"href":"/project/bevy-inventory-crate/","title":"bevy_inventory","copy":"The inventory crate powering the embed dungeon game.","icon":"inventory"}],"related_heading":"Related"},"title":"DiscordSH Bot — Standalone Discord Gateway Bot","tags":["discord","bot"],"sidebar":{"label":"DiscordSH Bot","order":421},"slug":"/project/discordsh-bot"},{"key":"droid","pipeline":"npm","package_name":"droid","source_path":"packages/npm/droid","version_toml":"packages/npm/droid/version.toml","version":"0.1.2","author":"h0lybyte","license":"MIT","status":"active","bento":{"badge":"npm · typescript · workers","title":"Unified worker manager —","accent":"Droid","lede":"A lightweight manager for service workers, shared workers, and web workers in modern JavaScript and TypeScript apps. It abstracts away the boilerplate and browser inconsistencies of worker setup, messaging, and lifecycle so you can offload heavy computation and keep the main thread responsive.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/npm/droid","primary":true,"external":true},{"label":"Features","href":"#features"},{"label":"Usage","href":"#usage"}],"aside":{"icon":"expand","title":"Framework-agnostic","body":"Usable from vanilla JS or alongside React, Vue, and Angular. comlink gives ergonomic RPC-style calls into workers instead of raw postMessage plumbing.","points":["<strong>Prebuilt workers</strong> — canvas, IndexedDB, WebSocket, Supabase shared/DB.","<strong>Deps</strong> — dexie, zod, nanostores, flatbuffers."]},"stats":[{"label":"Language","value":"TypeScript","icon":"code"},{"label":"Registry","value":"npm","icon":"package"},{"label":"Messaging","value":"comlink","icon":"network"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Unified worker API","body":"Register, manage, and message service, shared, and web workers through one consistent interface.","icon":"expand"},{"title":"Prebuilt workers","body":"Canvas, IndexedDB (DB), WebSocket, and Supabase shared / DB workers ship as ready exports.","icon":"box"},{"title":"comlink-backed messaging","body":"Ergonomic RPC-style calls into workers instead of raw postMessage plumbing.","icon":"network"},{"title":"Robust dependency stack","body":"dexie for IndexedDB, zod for schema validation, nanostores for state, and flatbuffers for compact payloads.","icon":"database"}],"related":[{"href":"/project/laser/","title":"Laser","copy":"Sibling KBVE npm package for Phaser + React Three Fiber game UIs.","icon":"zap"}],"usage":{"label":"install","lang":"bash","code":"npm install @kbve/droid\n"},"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related"},"title":"Droid — Web, Shared & Service Worker Manager for JavaScript","tags":["npm","typescript","workers"],"sidebar":{"label":"Droid","order":60},"slug":"/project/droid"},{"key":"edge","pipeline":"docker","app_name":"edge","source_path":"apps/kbve/edge","version_toml":"apps/kbve/edge/version.toml","version":"0.1.49","author":"h0lybyte","license":"KBVE","status":"active","runner":"ubuntu-latest","image":"kbve/edge","e2e_name":"edge","deployment_yaml":"apps/kube/functions/manifests/functions-deployment.yaml","version_target":"apps/kbve/edge/deno.json","has_test":true,"kube":{"stack":"application","environment":"prod","tier":"api","owner":"h0lybyte","criticality":"medium"},"bento":{"badge":"docker · serverless","title":"Two-tier isolation for","accent":"Edge Functions","lede":"Supabase edge functions running as isolated Deno V8 workers, each with 150 MB of memory and a 60-second timeout. A two-tier isolation model keeps standard TypeScript on fast V8 isolates and dispatches heavier or untrusted workloads down to Firecracker microVMs.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/kbve/edge","primary":true,"external":true},{"label":"Functions","href":"#functions"},{"label":"Firecracker","href":"#firecracker"}],"aside":{"icon":"shield","title":"Two tiers, fully independent","body":"<strong>Tier 1</strong> — Deno V8 isolates (<code>~10ms</code> boot) for TypeScript functions. <strong>Tier 2</strong> — Firecracker microVMs (<code>~125ms</code> boot) for arbitrary binaries and untrusted code. A VM crash never affects edge function availability.","points":["<strong>Router</strong> — JWT verify + per-function env allowlist.","<strong>Jailer</strong> — cgroup + seccomp + chroot per VM."]},"stats":[{"label":"App","value":"edge","icon":"server"},{"label":"Tier 1","value":"Deno V8","icon":"zap"},{"label":"Tier 2","value":"Firecracker","icon":"shield"},{"label":"Boot","value":"~10ms / ~125ms","icon":"clock"}],"features":[{"title":"Deno V8 isolates","body":"Each function runs as an isolated Deno V8 worker with 150 MB memory and a 60-second timeout, booting in ~10ms.","icon":"zap"},{"title":"Firecracker Tier 2","body":"Heavier or untrusted workloads dispatch to Firecracker microVMs with jailer-enforced cgroup, seccomp, and chroot isolation.","icon":"shield"},{"title":"Function registry","body":"health, meme, discordsh, user-vault, guild-vault, vault-reader, argo, logs, and ows — routed with JWT verification and per-function env allowlisting.","icon":"box"},{"title":"Shared modules","body":"Common utilities under functions/_shared/ — CORS, Supabase clients, validators, formats, and the Firecracker dispatch client.","icon":"gears"}],"related":[{"href":"/project/rows/","title":"ROWS","copy":"A KBVE game backend that also runs on the cluster.","icon":"server"},{"href":"/project/kilobase/","title":"Kilobase","copy":"The Supabase/Postgres data layer behind these functions.","icon":"database"}],"related_heading":"Related"},"title":"Edge Functions — Supabase Deno Workers and Firecracker","tags":["docker","serverless"],"sidebar":{"label":"Edge","order":53},"slug":"/project/edge"},{"key":"embeddb_crate","pipeline":"crates","package_name":"embeddb","source_path":"packages/rust/embeddb","version_toml":"packages/rust/embeddb/version.toml","version":"0.3.0","author":"h0lybyte","license":"MIT","status":"active","bento":{"badge":"crates · rust","title":"Single-file embedded DB for","accent":"kbve","lede":"Turso (async write) paired with DuckDB (analytics read) over one SQLite-format file — parallel reader pool, streaming reads, batched writes, and a FromEmbedRow derive.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/embeddb","primary":true,"external":true},{"label":"Features","href":"#features"}],"aside":{"icon":"database","title":"One file, two engines","body":"Turso writes and DuckDB analytics over a single SQLite-format file. The derive macro ships in <a href=\"/project/embeddb-derive-crate/\">embeddb-derive</a>.","points":["<strong>Write</strong> — Turso async, parameterized, transactions.","<strong>Read</strong> — DuckDB pool, streaming, columnar analytics."]},"stats":[{"label":"Package","value":"embeddb","icon":"package"},{"label":"Edition","value":"2021","icon":"rust"},{"label":"Version","value":"0.2.0","icon":"branch"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Turso write path","body":"Pure-Rust async SQLite rewrite for parameterized writes, transactions, and batched inserts.","icon":"database"},{"title":"DuckDB analytics pool","body":"A pooled read-only DuckDB reader for parallel columnar analytics over the same file, built lazily on first use.","icon":"activity"},{"title":"Streaming + batch","body":"analytics_for_each streams rows without materializing; execute_batch runs many writes in one transaction.","icon":"server"},{"title":"Row mapping","body":"EmbedValue type set, QueryResult with column names, and","icon":"package"},{"title":"Live-read freshness","body":"DuckDB replays uncheckpointed WAL, so analytics reflect committed writes without a forced checkpoint.","icon":"shield"},{"title":"Vector search","body":"Optional vector feature stores embeddings as packed f32 blobs and ranks them by cosine similarity, adding no dependencies.","icon":"network"}],"related":[{"href":"/project/embeddb-derive-crate/","title":"EmbedDB Derive","copy":"The FromEmbedRow procedural macro companion crate.","icon":"package"}],"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related crates"},"title":"EmbedDB — Single-File Turso + DuckDB Crate","tags":["crates","rust"],"sidebar":{"label":"EmbedDB Crate","order":74},"slug":"/project/embeddb-crate"},{"key":"embeddb_derive_crate","pipeline":"crates","package_name":"embeddb-derive","source_path":"packages/rust/embeddb-derive","version_toml":"packages/rust/embeddb-derive/version.toml","version":"0.1.1","author":"h0lybyte","license":"MIT","status":"active","bento":{"badge":"crates · rust","title":"Row-to-struct derive for","accent":"embeddb","lede":"The #[derive(FromEmbedRow)] procedural macro for embeddb — maps DuckDB analytics rows into your structs by column name, with Option and type-checked conversions.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/embeddb-derive","primary":true,"external":true},{"label":"Features","href":"#features"}],"aside":{"icon":"package","title":"Companion to embeddb","body":"Re-exported through <a href=\"/project/embeddb-crate/\">embeddb</a>'s default derive feature, so #[derive(FromEmbedRow)] works from a single dependency.","points":["<strong>By name</strong> — fields map to columns by identifier, not position.","<strong>Typed</strong> — conversions go through FromEmbedValue with clear errors."]},"stats":[{"label":"Package","value":"embeddb-derive","icon":"package"},{"label":"Edition","value":"2021","icon":"rust"},{"label":"Version","value":"0.1.0","icon":"branch"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"FromEmbedRow derive","body":"Generates a FromEmbedRow impl mapping analytics rows into structs by column name.","icon":"package"},{"title":"Typed conversions","body":"Fields convert through FromEmbedValue — i64, f64, String, bool, i128, Vec<u8>, Option<T>.","icon":"shield"},{"title":"Clear errors","body":"Missing column or type mismatch on a non-Option field errors, naming the column.","icon":"key"}],"related":[{"href":"/project/embeddb-crate/","title":"EmbedDB","copy":"The single-file Turso + DuckDB embedded database this derive serves.","icon":"database"}],"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related crates"},"title":"EmbedDB Derive — FromEmbedRow Macro Crate","tags":["crates","rust"],"sidebar":{"label":"EmbedDB Derive Crate","order":73},"slug":"/project/embeddb-derive-crate"},{"key":"erust_crate","pipeline":"crates","package_name":"erust","source_path":"packages/rust/erust","version_toml":"packages/rust/erust/version.toml","version":"0.1.8","author":"h0lybyte","license":"MIT","status":"active","bento":{"badge":"crates · rust · egui","title":"egui components for","accent":"erust","lede":"A Rust crate that extends egui and eframe with reusable generic states, widgets, and components for building KBVE desktop and WASM apps.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/erust","primary":true,"external":true},{"label":"Features","href":"#features"}],"aside":{"icon":"package","title":"Built on egui + eframe","body":"Generic application state, widgets, and components layered on the immediate-mode GUI stack. ERust depends on the internal <a href=\"/project/holy-crate/\">holy</a> crate and integrates ehttp, image decoding, and Supabase state helpers.","points":["<strong>Native</strong> — desktop via eframe with the glow backend.","<strong>WASM</strong> — wasm32 builds through wasm-bindgen-futures."]},"stats":[{"label":"Language","value":"Rust","icon":"rust"},{"label":"egui / eframe","value":"0.34","icon":"package"},{"label":"Targets","value":"native + WASM","icon":"expand"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"egui / eframe extensions","body":"Generic application state, widgets, and components layered on top of the immediate-mode GUI stack.","icon":"package"},{"title":"Feature-gated backends","body":"The default egui feature enables egui, eframe, and image support; the optional tauri feature integrates with Tauri shells.","icon":"settings"},{"title":"Cross-platform","body":"Builds for native desktop with the glow backend and for WebAssembly via wasm-bindgen-futures.","icon":"expand"},{"title":"State + networking helpers","body":"Bundled Supabase state module and ehttp for making HTTP requests from the UI.","icon":"network"}],"related":[{"href":"/project/holy-crate/","title":"Holy Crate","copy":"Internal dependency ERust builds on.","icon":"package"},{"href":"/project/kbve-crate/","title":"KBVE Crate","copy":"Companion Rust crate in the workspace.","icon":"rust"}],"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related crates"},"title":"ERust — egui and eframe Component Crate","tags":["crates","rust","egui","eframe"],"sidebar":{"label":"ERust Crate","order":74},"slug":"/project/erust-crate"},{"key":"factorio_ctl","pipeline":"docker","app_name":"factorio-ctl","source_path":"apps/vm/factorio-ctl","version_toml":"apps/vm/factorio-ctl/version.toml","version":"0.0.1","author":"h0lybyte","license":"KBVE","status":"active","runner":"ubuntu-latest","image":"kbve/factorio-ctl","deployment_yaml":"apps/kube/agones/factorio/manifests/factorio-ctl.yaml","version_target":"apps/vm/factorio-ctl/Cargo.toml","has_test":false,"kube":{"stack":"agones","environment":"prod","tier":"api","owner":"h0lybyte","criticality":"high"},"bento":{"badge":"agones · factorio · rust · docker","title":"Agones control API for","accent":"Factorio","lede":"A Rust Axum + utoipa REST API for the Agones-managed Factorio dedicated server — reads GameServer status via kube-rs and ClickHouse-backed player telemetry, surfaced through the staff dashboard over a same-origin proxy.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/vm/factorio-ctl","primary":true,"external":true},{"label":"Overview","href":"#overview"},{"label":"Runtime","href":"#runtime"}],"aside":{"icon":"database","title":"Player count from ClickHouse","body":"Player count comes from ClickHouse (<code>gameops.factorio_snapshots</code>), not RCON — RCON binds loopback-only on the gameserver pod and is unreachable cross-pod. The relay sidecar produces telemetry; factorio-ctl reads the latest snapshot.","points":["<strong>Prefix</strong> — routes use <code>/factorio/*</code>, never <code>/fc/*</code>.","<strong>Status</strong> — GameServer read via kube-rs, no CRD vendoring."]},"stats":[{"label":"App","value":"factorio-ctl","icon":"server"},{"label":"Stack","value":"Axum + utoipa","icon":"rust"},{"label":"Listen","value":"9002","icon":"activity"},{"label":"Telemetry","value":"ClickHouse","icon":"database"}],"features":[{"title":"GameServer status","body":"Reads Agones GameServer state / node / address / port via kube-rs with a raw request, so an Agones schema bump can't break the build.","icon":"server"},{"title":"ClickHouse telemetry","body":"Player count from gameops.factorio_snapshots, produced by the relay sidecar — RCON binds loopback-only and is unreachable cross-pod.","icon":"database"},{"title":"Same-origin proxy","body":"Cluster-internal only, surfaced through the staff dashboard via /dashboard/factorio/proxy under DASHBOARD_VIEW.","icon":"shield"},{"title":"OpenAPI spec","body":"Serves a utoipa /openapi.json for the dashboard Scalar viewer.","icon":"info"}],"related":[{"href":"/project/agones-factorio-relay/","title":"Agones Factorio Relay","copy":"Sidecar that produces the telemetry factorio-ctl reads.","icon":"activity"},{"href":"/project/firecracker-ctl/","title":"Firecracker CTL","copy":"The sibling cluster-internal control API this mirrors.","icon":"server"}],"related_heading":"Related"},"title":"Factorio CTL — Agones Control REST API","tags":["agones","factorio","rust","docker"],"sidebar":{"label":"Factorio CTL","order":462},"slug":"/project/factorio-ctl"},{"key":"firecracker_ctl","pipeline":"docker","app_name":"firecracker-ctl","source_path":"apps/vm/firecracker-ctl","version_toml":"apps/vm/firecracker-ctl/version.toml","version":"0.1.42","author":"h0lybyte","license":"KBVE","status":"active","runner":"arc-runner-set","image":"kbve/firecracker-ctl","deployment_yaml":"apps/kube/firecracker/manifests/firecracker-deployment.yaml","deployment_yamls":["apps/kube/firecracker/manifests/firecracker-net-deployment.yaml"],"version_target":"apps/vm/firecracker-ctl/Cargo.toml","has_test":false,"kube":{"stack":"application","environment":"prod","tier":"api","owner":"h0lybyte","criticality":"medium"},"bento":{"badge":"docker · firecracker · rust","title":"MicroVM control API for","accent":"Firecracker","lede":"A Rust Axum REST API for managing Firecracker microVMs — VM lifecycle, ephemeral untrusted code execution, and persistent HTTP endpoints with per-VM TAP networking across two trust-scoped deployments.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/vm/firecracker-ctl","primary":true,"external":true},{"label":"Overview","href":"#overview"},{"label":"Two ecosystems","href":"#ecosystems"},{"label":"Persistent endpoints","href":"#persistent"}],"aside":{"icon":"shield","title":"Two ecosystems by trust level","body":"Firecracker runs in two parallel deployments in the same namespace, chosen by trust level — <code>firecracker-ctl</code> for ephemeral untrusted code (MMDS only) and <code>firecracker-ctl-net</code> for VPN-tunneled persistent endpoints (staff only).","points":["<strong>Untrusted</strong> — MMDS-only, edge + dashboard, ephemeral.","<strong>Networked</strong> — Gluetun/WireGuard VPN, persistent, staff."]},"stats":[{"label":"App","value":"firecracker-ctl","icon":"server"},{"label":"Language","value":"Rust (Axum)","icon":"rust"},{"label":"Service","value":"ClusterIP :9001","icon":"activity"},{"label":"Requires","value":"/dev/kvm","icon":"lock"}],"features":[{"title":"VM lifecycle API","body":"Create, poll status, fetch results, and destroy microVMs with per-VM timeout enforcement and in-memory state via DashMap.","icon":"box"},{"title":"Ephemeral code execution","body":"User code booted into a VM via a raw block drive (/dev/vdb) — written, padded, attached, and exec'd by the VM init.","icon":"code"},{"title":"Persistent endpoints","body":"Named long-lived VMs exposing HTTP servers routed by name from the public edge, on the -net deployment only.","icon":"server"},{"title":"Pre-built rootfs","body":"Alpine minimal / python / node ext4 images built in-cluster via an ArgoCD PostSync hook.","icon":"package"}],"related":[{"href":"/project/firecracker-python-web/","title":"Firecracker Python Web","copy":"Python FastAPI web rootfs image for long-lived endpoints.","icon":"package"},{"href":"/project/firecracker-node-web/","title":"Firecracker Node Web","copy":"Node.js Fastify web rootfs image for long-lived endpoints.","icon":"package"},{"href":"/project/firecracker-python-net/","title":"Firecracker Python Net","copy":"Networked Python endpoint rootfs image.","icon":"network"}],"related_heading":"Related"},"title":"Firecracker CTL — MicroVM Control API","tags":["docker","firecracker","rust"],"sidebar":{"label":"Firecracker CTL","order":54},"slug":"/project/firecracker-ctl"},{"key":"firecracker_node_web","pipeline":"docker","app_name":"firecracker-node-web","source_path":"packages/docker/firecracker/node/web","version_toml":"packages/docker/firecracker/node/web/version.toml","version":"0.1.0","author":"h0lybyte","license":"KBVE","status":"active","runner":"ubuntu-latest","image":"kbve/firecracker-node-web","deployment_yamls":["apps/kube/firecracker/manifests/firecracker-node-web-rootfs-stage.yaml"],"has_test":false,"kube":{"stack":"application","environment":"prod","tier":"web","owner":"h0lybyte","criticality":"medium"},"bento":{"badge":"docker · firecracker · node · fastify · base-image","title":"Fastify-ready Node rootfs for","accent":"Firecracker","lede":"A Fastify-ready Alpine 3.21 + Node.js 22 LTS Firecracker rootfs for long-lived dashboard-IDE endpoints — baking fastify, undici, zod, and pino so staff VMs boot with the server libraries already on disk.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/docker/firecracker/node/web","primary":true,"external":true},{"label":"Overview","href":"#overview"},{"label":"Build","href":"#build"}],"aside":{"icon":"package","title":"Baked for instant boot","body":"This is the long-lived deploy rootfs for Node endpoints submitted through the dashboard IDE — week-to-month TTL VMs where paying a build-time <code>npm install</code> is the right tradeoff for instant boot. Quick one-shot Node VMs keep the smaller <code>alpine-node</code> rootfs plus the shared <code>npm-cache.ext4</code> drive.","points":["<strong>Runtime</strong> — Alpine 3.21 + Node.js 22 LTS + npm.","<strong>Deployment</strong> — staff-side firecracker-ctl-net."]},"stats":[{"label":"Image","value":"firecracker-node-web","icon":"package"},{"label":"Runtime","value":"Node.js 22 LTS","icon":"box"},{"label":"Server lib","value":"Fastify","icon":"server"},{"label":"Network","value":"TAP/WireGuard","icon":"network"}],"features":[{"title":"Fastify stack baked","body":"fastify, @fastify/cors, helmet, static, undici, zod, pino, dotenv, nanoid and more resolved into /usr/lib/node_modules.","icon":"server"},{"title":"Network-ready","body":"ca-certificates, iproute2, and /etc/resolv.conf pointing at 1.1.1.1 and 8.8.8.8 for TAP networking via Gluetun/WireGuard.","icon":"network"},{"title":"cp-entrypoint stage image","body":"Multi-stage Docker build whose final layer ships a cp entrypoint so an in-cluster stage Job copies /rootfs.ext4 onto the rootfs PVC.","icon":"package"},{"title":"Boot init","body":"/init mounts /proc /sys /dev, brings up lo + eth0, exports NODE_PATH, then exec /entrypoint.","icon":"gears"}],"related":[{"href":"/project/firecracker-ctl/","title":"Firecracker CTL","copy":"The Firecracker control plane that deploys this rootfs image.","icon":"server"},{"href":"/project/firecracker-python-web/","title":"Firecracker Python Web","copy":"The Python FastAPI sibling for long-lived endpoints.","icon":"package"}],"related_heading":"Related"},"title":"Firecracker Node Web — Fastify-Ready Alpine Node 22 Rootfs","tags":["docker","firecracker","node","fastify","base-image"],"sidebar":{"label":"FC Node Web","order":57},"slug":"/project/firecracker-node-web"},{"key":"firecracker_python_net","pipeline":"docker","app_name":"firecracker-python-net","source_path":"packages/docker/firecracker/python/net","version_toml":"packages/docker/firecracker/python/net/version.toml","version":"0.1.3","author":"h0lybyte","license":"KBVE","status":"active","runner":"ubuntu-latest","image":"kbve/firecracker-python-net","deployment_yamls":["apps/kube/firecracker/manifests/firecracker-net-rootfs-stage.yaml"],"has_test":false,"kube":{"stack":"application","environment":"prod","tier":"api","owner":"h0lybyte","criticality":"medium"},"bento":{"badge":"docker · firecracker · python · base-image","title":"Network Alpine Python rootfs for","accent":"Firecracker","lede":"A network-capable Alpine 3.21 + Python 3.12 Firecracker rootfs for the staff-side firecracker-ctl-net deployment — baking requests, httpx, certifi, the CA bundle, and public DNS for short-lived networked VMs.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/docker/firecracker/python/net","primary":true,"external":true},{"label":"Overview","href":"#overview"},{"label":"Build","href":"#build"}],"aside":{"icon":"network","title":"The networked opposite of alpine-python","body":"The <code>alpine-python</code> rootfs used by public quick-mode <code>firecracker-ctl</code> VMs ships with no network, no DNS, and no requests — sandboxing without egress is the safety property. This image is the opposite: TAP networking via Gluetun/WireGuard, DNS, and HTTP libraries baked in for the staff persistent deployment.","points":["<strong>Runtime</strong> — Alpine 3.21 + Python 3.12.","<strong>Deployment</strong> — staff-side firecracker-ctl-net."]},"stats":[{"label":"Image","value":"firecracker-python-net","icon":"package"},{"label":"Runtime","value":"Python 3.12","icon":"code"},{"label":"HTTP libs","value":"requests/httpx","icon":"box"},{"label":"Network","value":"TAP/WireGuard","icon":"network"}],"features":[{"title":"HTTP stack baked","body":"py3-pip, py3-requests, py3-httpx, py3-urllib3, py3-certifi ship already resolved so VMs boot with the client libraries on disk.","icon":"box"},{"title":"Network-ready","body":"ca-certificates, iproute2, and /etc/resolv.conf pointing at 1.1.1.1 and 8.8.8.8 for TAP networking via Gluetun/WireGuard.","icon":"network"},{"title":"cp-entrypoint stage image","body":"Multi-stage Docker build whose final Alpine layer ships a cp entrypoint so an in-cluster stage Job copies /rootfs.ext4 onto the rootfs PVC.","icon":"package"},{"title":"Boot init","body":"/init mounts /proc /sys /dev, brings up lo + eth0, then exec /entrypoint.","icon":"gears"}],"related":[{"href":"/project/firecracker-ctl/","title":"Firecracker CTL","copy":"The Firecracker control plane that deploys this rootfs image.","icon":"server"},{"href":"/project/firecracker-python-web/","title":"Firecracker Python Web","copy":"The long-lived sibling that additionally bakes the FastAPI stack.","icon":"package"}],"related_heading":"Related"},"title":"Firecracker Python Net — Network Alpine Python Rootfs","tags":["docker","firecracker","python","base-image"],"sidebar":{"label":"FC Python Net","order":55},"slug":"/project/firecracker-python-net"},{"key":"firecracker_python_web","pipeline":"docker","app_name":"firecracker-python-web","source_path":"packages/docker/firecracker/python/web","version_toml":"packages/docker/firecracker/python/web/version.toml","version":"0.1.0","author":"h0lybyte","license":"KBVE","status":"active","runner":"ubuntu-latest","image":"kbve/firecracker-python-web","deployment_yamls":["apps/kube/firecracker/manifests/firecracker-web-rootfs-stage.yaml"],"has_test":false,"kube":{"stack":"application","environment":"prod","tier":"web","owner":"h0lybyte","criticality":"medium"},"bento":{"badge":"docker · firecracker · python · fastapi · base-image","title":"FastAPI-ready Python rootfs for","accent":"Firecracker","lede":"A FastAPI-ready Alpine 3.21 + Python 3.12 Firecracker rootfs for long-lived dashboard-IDE endpoints — baking fastapi, uvicorn, starlette, websockets, and the requests/httpx stack so staff VMs boot ready.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/docker/firecracker/python/web","primary":true,"external":true},{"label":"Overview","href":"#overview"},{"label":"Build","href":"#build"}],"aside":{"icon":"package","title":"Baked for instant boot","body":"This is the long-lived deploy rootfs for endpoints submitted through the dashboard IDE — week-to-month TTL VMs where paying a build-time <code>pip install</code> is the right tradeoff for instant boot. Quick one-shot VMs keep the smaller <code>alpine-python</code> rootfs plus the shared pip-cache.","points":["<strong>Runtime</strong> — Alpine 3.21 + Python 3.12.","<strong>Deployment</strong> — staff-side firecracker-ctl-net."]},"stats":[{"label":"Image","value":"firecracker-python-web","icon":"package"},{"label":"Runtime","value":"Python 3.12","icon":"code"},{"label":"Server lib","value":"FastAPI","icon":"server"},{"label":"Network","value":"TAP/WireGuard","icon":"network"}],"features":[{"title":"FastAPI stack baked","body":"fastapi, uvicorn, starlette, python-multipart, websockets, anyio, h11 and more ship as musllinux wheels already resolved on disk.","icon":"server"},{"title":"HTTP client stack","body":"py3-pip, py3-requests, py3-httpx, py3-urllib3, py3-certifi via apk on top of the FastAPI server libraries.","icon":"box"},{"title":"cp-entrypoint stage image","body":"Multi-stage Docker build whose final layer ships a cp entrypoint so an in-cluster stage Job copies /rootfs.ext4 onto the rootfs PVC.","icon":"package"},{"title":"Network + boot init","body":"ca-certificates, iproute2, resolv.conf at 1.1.1.1/8.8.8.8; /init mounts /proc /sys /dev, brings up lo + eth0, then exec /entrypoint.","icon":"network"}],"related":[{"href":"/project/firecracker-python-net/","title":"Firecracker Python Net","copy":"The short-lived staff rootfs with networking but no FastAPI stack.","icon":"network"},{"href":"/project/firecracker-ctl/","title":"Firecracker CTL","copy":"The Firecracker control plane that deploys these rootfs images.","icon":"server"}],"related_heading":"Related"},"title":"Firecracker Python Web — FastAPI-Ready Rootfs Image","tags":["docker","firecracker","python","fastapi","base-image"],"sidebar":{"label":"FC Python Web","order":56},"slug":"/project/firecracker-python-web"},{"key":"friendslop_server","pipeline":"docker","app_name":"friendslop-server","source_path":"apps/agones/friendslop/server","version_toml":"apps/agones/friendslop/server/version.toml","version":"0.0.9","author":"h0lybyte","license":"MIT","status":"beta","runner":"arc-runner-set","image":"kbve/friendslop-server","deployment_yaml":"apps/kube/agones/friendslop/manifests/fleet.yaml","version_target":"apps/agones/friendslop/server/Cargo.toml","has_test":false,"kube":{"stack":"agones","environment":"dev","tier":"server","owner":"h0lybyte","criticality":"low"},"bento":{"badge":"game-server · rust · friendslop","title":"Authoritative physics host","accent":"Friendslop Server","lede":"The dedicated authoritative host for Friendslop — the rapier3d sim from the shared q crate on a fixed-tick thread, behind an axum WebSocket transport. Clients send intent; the server decides what it means.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/agones/friendslop/server","primary":true,"external":true},{"label":"Sim core","href":"#internals"},{"label":"Deployment","href":"#internals"}],"aside":{"icon":"server","title":"Intent, not motion","body":"A client says \"I want to go this way\"; the host decides what that means against gravity, speed, and the world. The sim steps at <strong>60 Hz</strong> and fans out <strong>20 Hz</strong> snapshots.","points":["<strong>Shared seed</strong> — terrain is baked, never transmitted.","<strong>Lifecycle</strong> — Agones Ready / Health / Shutdown."]},"stats":[{"label":"App","value":"friendslop-server","icon":"server"},{"label":"Stack","value":"axum + rapier3d","icon":"rust"},{"label":"Lanes","value":"WS + UDP","icon":"network"},{"label":"Listen","value":"0.0.0.0:7980","icon":"activity"}],"features":[{"title":"Authoritative sim","body":"Steps the rapier3d character controllers and rigid bodies at 60 Hz on a dedicated OS thread, so a busy socket can never stall the tick.","icon":"activity"},{"title":"Intent-only inputs","body":"Clients send a wish direction and a jump flag; magnitude is clamped host-side, so an oversized vector buys a cheater nothing.","icon":"key"},{"title":"Seed-baked terrain","body":"Collision heights come from the shared q::worldgen generator, so client and server agree on ground without shipping a heightfield.","icon":"map"},{"title":"Agones lifecycle","body":"Runs the Agones SDK lifecycle (Ready / Health / Shutdown); degrades gracefully outside Agones for local dev.","icon":"server"}],"related":[{"href":"/project/godot-friendslop/","title":"Friendslop","copy":"The Godot client this server hosts.","icon":"gamepad"},{"href":"/project/agones/","title":"Agones","copy":"The GameServer lifecycle SDK used to manage these Fleet pods.","icon":"server"}],"related_heading":"Related"},"title":"Friendslop Server — Authoritative rapier3d Host on Agones","tags":["docker","rust","game-server","friendslop"],"sidebar":{"label":"Friendslop Server","order":97},"slug":"/project/friendslop-server"},{"key":"py_lib_fudster","pipeline":"python","package_name":"python-fudster","pypi_name":"fudster","source_path":"packages/python/fudster","version_toml":"packages/python/fudster/version.toml","version":"1.0.3","author":"h0lybyte","license":"MIT","status":"active","bento":{"badge":"python","title":"Composable ML library & CLI —","accent":"Fudster","lede":"A composable Python ML library and CLI for haystack-ai and pgvector integrations, built as a thin layer around the KBVE core. It bundles broadcast and API models, async HTTP and WebSocket clients, and application clients (RuneLite, Chrome, Discord, screen, noVNC), all exposed through the fudster command-line entry point.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/python/fudster","primary":true,"external":true},{"label":"Features","href":"#features"},{"label":"Usage","href":"#usage"}],"aside":{"icon":"gears","title":"Layered on kbve","body":"Designed for haystack-ai and pgvector integrations on top of the kbve package. Heavy dependencies stay off the core install behind opt-in extras.","points":["<strong>PyPI</strong> — <code>fudster</code>, Python >=3.12,<3.14.","<strong>CLI</strong> — <code>fudster</code> entry point."]},"stats":[{"label":"Package","value":"fudster","icon":"package"},{"label":"Language","value":"Python 3.12+","icon":"code"},{"label":"Focus","value":"haystack + pgvector","icon":"database"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Composable ML core","body":"Designed for haystack-ai and pgvector integrations, layered on top of the kbve package.","icon":"gears"},{"title":"API surface","body":"Routes, CORS, WS, and APIConnector for building FastAPI-backed async HTTP and WebSocket services.","icon":"network"},{"title":"Built-in clients","body":"CoinDeskClient, PoetryDBClient, GroqClient, and WebsocketEchoClient, plus app clients like RuneLiteClient, ChromeClient, and DiscordClient.","icon":"box"},{"title":"Broadcast + data models","body":"BroadcastModel, CommandModel, HandshakeModel, RSS, poem, and game-event models.","icon":"message"},{"title":"Optional extras","body":"automation, browser, ocr, and vnc extras keep heavy dependencies (opencv, seleniumbase, pytesseract, websockify) off the core install.","icon":"package"}],"related":[{"href":"/project/python-kbve/","title":"Python KBVE","copy":"The core kbve package Fudster is built on.","icon":"package"}],"usage":{"label":"install & dev","lang":"bash","code":"pip install fudster\n\n# development inside the KBVE monorepo\npnpm nx test python-fudster\npnpm nx lint python-fudster\npnpm nx build python-fudster\n"},"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related"},"title":"Fudster — Composable ML Library and CLI for KBVE","tags":["python"],"sidebar":{"label":"Fudster","order":80},"slug":"/project/fudster"},{"key":"godot_friendslop","pipeline":"godot","app_name":"friendslop","source_path":"apps/friendslop/godot-friendslop","version_toml":"apps/friendslop/godot-friendslop/version.toml","version":"0.1.6","author":"h0lybyte","license":"KBVE","homepage_url":"https://kbve.itch.io/friendslop","status":"beta","runner":"ubuntu-latest","external_publish":{"itch_user":"kbve","itch_game":"friendslop"},"engine":{"version":"4.7.1","project_path":"apps/friendslop/godot-friendslop","build_targets":["Windows Desktop","macOS","Linux"],"features":["net-godot"],"gdextension":{"package":"q","addon_path":"addons/q"}},"title":"Friendslop — Godot Co-op Slop","tags":["gaming","godot","friendslop"],"sidebar":{"label":"Friendslop","order":96},"slug":"/project/godot-friendslop"},{"unsplash":"1477959858617-67f85cf4f1df","img":"https://images.unsplash.com/photo-1477959858617-67f85cf4f1df?fit=crop&w=1400&h=700&q=75","bento":{"badge":"design","title":"3D visualization of notes","accent":"Graph","lede":"A 3D visualization of interconnected MDX notes, inspired by the Obsidian Graph View. Each node is a note, seamlessly connected to related notes, for an immersive and intuitive way to navigate the web of information.","ctas":[{"label":"Roadmap","href":"#roadmap"}],"stats":[{"label":"Type","value":"3D graph","icon":"chart"},{"label":"Inspiration","value":"Obsidian Graph","icon":"info"},{"label":"Render","value":"Three.js / Babylon.js","icon":"render"}],"features":[{"title":"3D node graph","body":"Each MDX note is a node, connected by edges to related notes in three-dimensional space.","icon":"chart"},{"title":"Interactive navigation","body":"Zoom, pan, rotate, plus node selection and tooltips for exploring relationships.","icon":"expand"},{"title":"Search & filter","body":"Find and highlight nodes by keyword and attributes.","icon":"eye"},{"title":"Obsidian-inspired","body":"Extends the familiar Obsidian Graph View into an immersive 3D space.","icon":"branch"}],"features_eyebrow":"The concept","features_heading":"Features"},"title":"Graph — 3D Visualization of Interconnected MDX Notes","tags":["design"],"sidebar":{"label":"Graph","order":420},"slug":"/project/graph"},{"unsplash":"1566792505656-e82d93abac30","img":"https://images.unsplash.com/photo-1566792505656-e82d93abac30?fit=crop&w=1400&h=700&q=75","key":"herbmail","pipeline":"docker","app_name":"herbmail","source_path":"apps/herbmail","version_toml":"apps/herbmail/version.toml","version":"0.1.2","author":"h0lybyte","license":"KBVE","status":"active","runner":"ubuntu-latest","image":"kbve/herbmail","e2e_name":"herbmail","deployment_yaml":"apps/kube/herbmail/manifest/herbmail-deployment.yaml","version_target":"apps/herbmail/axum-herbmail/Cargo.toml","has_test":true,"kube":{"stack":"application","environment":"prod","tier":"api","owner":"h0lybyte","criticality":"medium"},"bento":{"badge":"design","title":"Gourmet herbs & spices from","accent":"HerbMail","lede":"A global online herbs and spices platform — regional kits, seasonal specials, rare finds, subscription boxes, and an AI Spice Sommelier, served by a Rust axum backend on the KBVE application stack.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/herbmail","primary":true,"external":true},{"label":"Products","href":"#products"},{"label":"Brand","href":"#brand"}],"stats":[{"label":"App","value":"herbmail","icon":"box"},{"label":"Backend","value":"Rust (axum)","icon":"rust"},{"label":"Image","value":"kbve/herbmail","icon":"package"},{"label":"Deploy","value":"prod","icon":"deploy"}],"features":[{"title":"Regional herb kits","body":"Curated selections from specific regions like Provence, Tuscany, Kerala, and Sichuan.","icon":"map"},{"title":"Subscription boxes","body":"A monthly spice box tailored to your culinary preferences, with recipes, usage tips, and the stories behind each spice.","icon":"calendar"},{"title":"Spice Sommelier","body":"An AI-driven tool that pairs the perfect herbs and spices with your meals — just enter your ingredients.","icon":"sensor"},{"title":"Community & workshops","body":"Live online workshops hosted by seasoned chefs and spice experts, plus a loyalty rewards program.","icon":"forum"}],"related":[{"href":"/project/api/","title":"API","copy":"The KBVE core API service.","icon":"server"},{"href":"/project/edge/","title":"Edge","copy":"KBVE edge application services.","icon":"network"}],"related_heading":"Related"},"title":"HerbMail — Global Gourmet Herbs & Spices Delivery Platform","tags":["design"],"sidebar":{"label":"HerbMail","order":11},"slug":"/project/herbmail"},{"key":"vite_herbmail","pipeline":"vite_game","app_name":"herbmail-game","source_path":"apps/herbmail/herbmail-game","version_toml":"apps/herbmail/herbmail-game/version.toml","version":"0.1.21","author":"h0lybyte","license":"KBVE","homepage_url":"https://kbve.itch.io/herbmail","status":"beta","runner":"ubuntu-latest","external_publish":{"itch_user":"kbve","itch_game":"herbmail","itch_channel":"html5"},"engine":{"version":"vite","project_path":"apps/herbmail/herbmail-game","build_targets":["html5"]},"title":"herbmail — PSX Web Dungeon Crawler","tags":["web","game","herbmail","r3f"],"sidebar":{"label":"herbmail (game)","order":95},"slug":"/project/herbmail-game"},{"key":"herbmail_server","pipeline":"docker","app_name":"herbmail-server","source_path":"apps/agones/herbmail/server","version_toml":"apps/agones/herbmail/server/version.toml","version":"0.0.1","author":"h0lybyte","license":"MIT","status":"beta","runner":"arc-runner-set","image":"kbve/herbmail-server","deployment_yaml":"apps/kube/agones/herbmail/manifests/fleet.yaml","version_target":"apps/agones/herbmail/server/Cargo.toml","has_test":false,"kube":{"stack":"agones","environment":"dev","tier":"server","owner":"h0lybyte","criticality":"low"},"bento":{"badge":"game-server · rust · herbmail","title":"Authoritative dungeon host","accent":"Herbmail Server","lede":"The authoritative shared-world host for Herbmail — an axum WebSocket router paired with the simgrid headless Bevy simulation on tokio, with guest and Supabase-account admission.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/agones/herbmail/server","primary":true,"external":true},{"label":"Deployment","href":"#internals"}],"aside":{"icon":"server","title":"Seed-derived world","body":"The dungeon is a pure function of <strong>DUNGEON_SEED</strong> and is never transmitted. Server and client each derive it, pinned against shared parity vectors.","points":["<strong>Auth</strong> — Supabase JWKS (HS256 + ES256) or server-minted guests.","<strong>Lifecycle</strong> — Agones Ready / Health / Shutdown."]},"stats":[{"label":"App","value":"herbmail-server","icon":"server"},{"label":"Stack","value":"axum + Bevy","icon":"rust"},{"label":"Protocol","value":"postcard over WS","icon":"network"},{"label":"Listen","value":"0.0.0.0:7979","icon":"activity"}],"features":[{"title":"Terminate /ws + admit","body":"Terminates the WebSocket upgrade and admits either a Supabase-verified account or a server-minted guest identity.","icon":"key"},{"title":"Drive the sim tick","body":"Runs the simgrid sim tick at 20 Hz on a tokio multi-thread runtime, fanning out authoritative 10 Hz snapshots.","icon":"activity"},{"title":"Derive, never transmit","body":"The dungeon is generated from a seed on both sides and pinned by parity vectors, so no geometry crosses the wire.","icon":"map"},{"title":"Agones lifecycle","body":"Runs the Agones SDK lifecycle (Ready / Health / Shutdown); degrades gracefully outside Agones for local dev.","icon":"server"}],"related":[{"href":"/project/herbmail/","title":"Herbmail","copy":"The Herbmail site and mail stack this game lives under.","icon":"mail"},{"href":"/project/cryptothrone-server/","title":"CryptoThrone Server","copy":"Sibling simgrid host, grid-authoritative rather than continuous.","icon":"server"}],"related_heading":"Related"},"title":"Herbmail Server — Authoritative Axum + Bevy Dungeon Host","tags":["docker","rust","game-server","herbmail"],"sidebar":{"label":"Herbmail Server","order":59},"slug":"/project/herbmail-server"},{"key":"holy_crate","pipeline":"crates","package_name":"holy","source_path":"packages/rust/holy","version_toml":"packages/rust/holy/version.toml","version":"0.2.2","author":"h0lybyte","license":"MIT","status":"active","bento":{"badge":"crates · rust","title":"Derive macros for","accent":"holy","lede":"A Rust proc-macro crate with derive macros for getters, setters, observers, fuzz constructors, and input sanitization to end struct boilerplate.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/holy","primary":true,"external":true}],"aside":{"icon":"gears","title":"Derive away the boilerplate","body":"Ships derive macros for everyday struct chores as a path or crates.io dependency, keeping each consumer free of hand-rolled code and centralizing policy — new sanitize rules, observer hooks — in one crate.","points":["<strong>Sanitize</strong> — trim, lowercase, escape_html, slug, truncate(N), clamp(min, max).","<strong>Fuzz</strong> — random constructors for tests."]},"stats":[{"label":"Package","value":"holy","icon":"package"},{"label":"Type","value":"proc-macro","icon":"rust"},{"label":"Derives","value":"5 macros","icon":"gears"},{"label":"License","value":"MIT","icon":"license"}],"related":[{"href":"https://github.com/KBVE/kbve/tree/main/packages/rust/holy","title":"README","copy":"Full crate reference rendered from the source README.","icon":"book","external":true}],"related_heading":"Reference"},"title":"holy — Rust Proc-Macro Derives for Structs","tags":["crates","rust"],"sidebar":{"label":"Holy Crate","order":75},"slug":"/project/holy-crate"},{"unsplash":"1477959858617-67f85cf4f1df","img":"https://images.unsplash.com/photo-1477959858617-67f85cf4f1df?fit=crop&w=1400&h=700&q=75","title":"KBVE Projects — Rust, Astro, Python and C# Monorepo","tags":["projects"],"sidebar":{"label":"KBVE Projects","order":1},"slug":"/project/index"},{"key":"iot_edge_worker","pipeline":"docker","app_name":"iot-edge-worker","source_path":"apps/vm/iot/edge-worker","version_toml":"apps/vm/iot/edge-worker/version.toml","version":"0.0.1","author":"h0lybyte","license":"KBVE","status":"beta","runner":"arc-runner-set","image":"kbve/iot-edge-worker","version_target":"apps/vm/iot/edge-worker/version.toml","has_test":false,"bento":{"badge":"iot · kubernetes · wireguard · edge · talos","title":"WireGuard cluster node for","accent":"IoT Edge","lede":"A cloud-init template and bootstrap helper that joins a local dev VM (OrbStack, Lima, UTM) to the KBVE Talos cluster as a remote worker over WireGuard — no inbound ports, no full Talos install, a real kubelet.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/vm/iot/edge-worker","primary":true,"external":true},{"label":"Overview","href":"#overview"},{"label":"Workflow","href":"#workflow"}],"aside":{"icon":"info","title":"A template, not a binary","body":"<code>iot-edge-worker</code> does <strong>not</strong> ship as a runtime binary or Docker image — the artifact is the cloud-init template itself, rendered per-laptop and consumed by the VM host at first boot.","points":["<strong>Taint</strong> — edge=true:NoSchedule, labeled role=edge.","<strong>Scope v1</strong> — amd64, container workloads only."]},"stats":[{"label":"App","value":"iot-edge-worker","icon":"server"},{"label":"Artifact","value":"cloud-init","icon":"settings"},{"label":"Network","value":"WireGuard","icon":"network"},{"label":"Cluster","value":"Talos","icon":"box"}],"features":[{"title":"Cloud-init template","body":"A cloud-init.yaml.tmpl with WireGuard config, kubeadm install, and systemd units rendered per-laptop by bootstrap.sh.","icon":"settings"},{"title":"WireGuard tunnel","body":"The laptop dials out to a fixed endpoint — no inbound ports on the home network, and no full Talos OS install.","icon":"network"},{"title":"Real kubelet via kubeadm","body":"A plain kubeadm join on a minimal Alpine/Ubuntu VM gives the Talos control plane a normal worker node.","icon":"box"},{"title":"Edge-only scheduling","body":"The worker is tainted edge=true:NoSchedule and labeled role=edge, so only pods that tolerate the taint and target the label land there.","icon":"lock"}]},"title":"KBVE IoT Edge Worker — WireGuard k8s Node","tags":["iot","kubernetes","wireguard","edge","talos"],"sidebar":{"label":"IoT Edge Worker","order":56},"slug":"/project/iot-edge-worker"},{"key":"irc_gateway","pipeline":"docker","app_name":"irc-gateway","source_path":"apps/irc","version_toml":"apps/irc/version.toml","version":"0.1.29","author":"h0lybyte","license":"KBVE","status":"active","runner":"ubuntu-latest","image":"kbve/irc-gateway","e2e_name":"irc","deployment_yaml":"apps/kube/irc/manifests/irc-gateway-deployment.yaml","version_target":"apps/irc/irc-gateway/Cargo.toml","has_test":true,"kube":{"stack":"application","environment":"prod","tier":"api","owner":"h0lybyte","criticality":"medium"},"bento":{"badge":"docker · networking","title":"WebSocket-to-IRC","accent":"bridge","lede":"A Rust Axum service that bridges WebSocket clients to an Ergo IRC server — adding JWT auth, per-channel Valkey history, rate limiting, and a shared chat schema so web and game clients speak the same vocabulary as the IRC network. Fronts KBVE's /minechat and /gamechat channels.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/irc","primary":true,"external":true},{"label":"Features","href":"#features"},{"label":"Deploy","href":"#deploy"}],"aside":{"icon":"message","title":"Per-channel backscroll","body":"A dedicated listener task per channel holds its own IRC connection and appends every PRIVMSG to a Valkey-backed ring buffer, so freshly connected clients see recent history plus live messages.","points":["<strong>Auth</strong> — JWT verified before channel access.","<strong>Schema</strong> — bevy_chat ChatMessage ⇄ IRC PRIVMSG."]},"stats":[{"label":"Image","value":"kbve/irc-gateway","icon":"box"},{"label":"Language","value":"Rust","icon":"rust"},{"label":"Backend","value":"Ergo + Valkey","icon":"server"},{"label":"Auth","value":"JWT","icon":"key"}],"features":[{"title":"WebSocket ↔ IRC bridge","body":"Proxies WebSocket sessions onto Ergo IRC connections.","icon":"network"},{"title":"JWT auth","body":"Validates tokens before granting channel access.","icon":"key"},{"title":"Per-channel history","body":"A listener task per channel rings recent PRIVMSGs for backscroll.","icon":"clock"},{"title":"Rate limiting","body":"Ingress throttling to protect the IRC backend.","icon":"shield"},{"title":"Shared chat schema","body":"bevy_chat ChatMessage ⇄ IRC PRIVMSG translation.","icon":"message"},{"title":"REST + WebSocket transports","body":"HTTP endpoints alongside the live socket.","icon":"server"}],"related":[{"href":"/project/bevy-chat-crate/","title":"Bevy Chat Crate","copy":"Shared chat message schema.","icon":"message"},{"href":"/project/discordsh/","title":"DiscordSH","copy":"Discord bridge sharing the chat pipeline.","icon":"discord"},{"href":"/project/mc/","title":"Minecraft Server","copy":"Game server feeding the /minechat channel.","icon":"box"}],"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related"},"title":"IRC Gateway — WebSocket-to-IRC Bridge","tags":["docker","networking"],"sidebar":{"label":"IRC Gateway","order":51},"slug":"/project/irc-gateway"},{"key":"isometric","source_path":"apps/kbve/isometric","author":"h0lybyte","license":"KBVE","status":"active","bento":{"badge":"game · bevy · rust · wasm","title":"Multiplayer isometric world in","accent":"Rust + Bevy","lede":"KBVE's flagship multiplayer browser experience — an isometric 3D world built entirely in Rust with Bevy 0.18, networked via lightyear, rendered through WebGPU in the browser, and shipped as a Tauri 2 native desktop app.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/kbve/isometric","primary":true,"external":true},{"label":"Architecture","href":"#architecture"},{"label":"Running locally","href":"#running"}],"aside":{"icon":"network","title":"Client + authoritative server","body":"The game runs as a client connecting to an authoritative headless Bevy server inside axum-kbve — WebTransport (QUIC/UDP) when available, falling back to WebSocket (TCP/TLS) automatically.","points":["<strong>Primary</strong> — WebSocket at wss://kbve.com/ws, all browsers.","<strong>Low-latency</strong> — WebTransport on Chrome/Edge."]},"stats":[{"label":"Engine","value":"Bevy 0.18","icon":"gears"},{"label":"Networking","value":"lightyear","icon":"network"},{"label":"Physics","value":"avian3d","icon":"box"},{"label":"Items","value":"117+","icon":"inventory"}],"features":[{"title":"Procedural terrain","body":"Procedural isometric terrain with tile-based collision.","icon":"map"},{"title":"Day/night cycle","body":"Dynamic lighting and fireflies driving a full day/night cycle.","icon":"render"},{"title":"Resource gathering","body":"Harvest trees, rocks, ores, flowers, and mushrooms across the world.","icon":"bag"},{"title":"Proto-driven inventory","body":"A 16-slot inventory backed by 117+ proto-driven item definitions.","icon":"inventory"},{"title":"Creature AI","body":"A creature system (frogs, fireflies) driven by behavioral AI.","icon":"eye"},{"title":"Server-authoritative","body":"Server-authoritative physics and entity replication.","icon":"server"},{"title":"Supabase auth","body":"JWT authentication with Supabase.","icon":"lock"},{"title":"Pixel-art shader","body":"A pixel-art post-processing shader over the 3D scene.","icon":"render"}],"related":[{"href":"/project/bevy-cam-crate/","title":"Bevy Cam Crate","copy":"The isometric camera controller powering this game.","icon":"eye"},{"href":"/project/bevy-behavior-crate/","title":"bevy_behavior","copy":"Behavior tree engine driving the creature AI.","icon":"gears"},{"href":"/project/cryptothrone-server/","title":"CryptoThrone Server","copy":"Sibling Bevy multiplayer server in the KBVE stack.","icon":"server"}],"features_eyebrow":"What it ships","features_heading":"Features","related_heading":"Related"},"title":"Isometric — Bevy Multiplayer Browser Game (WASM + Tauri)","tags":["game","bevy","rust","wasm"],"sidebar":{"label":"Isometric","order":10},"slug":"/project/isometric"},{"key":"jedi_crate","pipeline":"crates","package_name":"jedi","source_path":"packages/rust/jedi","version_toml":"packages/rust/jedi/version.toml","version":"0.2.3","author":"h0lybyte","license":"MIT","status":"active","bento":{"badge":"crates · rust","title":"Data interchange for","accent":"jedi","lede":"The Juggernaut Electronic Data Interchange (EDI) Rust crate — a data-exchange layer with entity models, JWT/JWKS, RCON, and a shared ClickHouse client.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/jedi","primary":true,"external":true},{"label":"Features","href":"#features"}],"aside":{"icon":"network","title":"Shared data-exchange layer","body":"The Juggernaut EDI package, extended through <a href=\"/project/holy-crate/\">holy</a> and reused across KBVE services for entity modeling, token verification, RCON, and database access. Dry-run: <strong>./kbve.sh -nx jedi:dry --no-cloud</strong>.","points":["<strong>Auth</strong> — jwks and jwt_cache for JWKS-based JWT verification.","<strong>Telemetry</strong> — ClickHouse client batches metrics inserts."]},"stats":[{"label":"Package","value":"jedi","icon":"package"},{"label":"Edition","value":"2024","icon":"rust"},{"label":"Version","value":"0.2.2","icon":"branch"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Entity + builder models","body":"entity, builder, and state modules for structured data exchange.","icon":"database"},{"title":"Auth primitives","body":"jwks and jwt_cache modules for JWKS-based JWT verification with caching.","icon":"key"},{"title":"RCON","body":"An rcon module for remote console command exchange.","icon":"server"},{"title":"Proto types","body":"prost / tonic-generated proto module shared across services.","icon":"package"},{"title":"Optional database plumbing","body":"Postgres (tokio-postgres, bb8) and a ClickHouse client behind feature flags, using rustls TLS throughout.","icon":"database"},{"title":"Sanitization","body":"ammonia for HTML/PII cleaning in the exchange path.","icon":"shield"}],"related":[{"href":"/project/metrics/","title":"Metrics","copy":"Observability service that reuses the Jedi ClickHouse client.","icon":"activity"},{"href":"/project/api/","title":"API","copy":"The axum-kbve API that builds on shared Rust crates.","icon":"server"}],"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related crates"},"title":"Jedi — Juggernaut Electronic Data Interchange Crate","tags":["crates","rust"],"sidebar":{"label":"Jedi Crate","order":71},"slug":"/project/jedi-crate"},{"unsplash":"1604657843102-388d8541ef04","img":"https://images.unsplash.com/photo-1604657843102-388d8541ef04?fit=crop&w=1400&h=700&q=75","key":"jobboard","pipeline":"docker","app_name":"jobboard","source_path":"apps/jobboard","version_toml":"apps/jobboard/version.toml","version":"0.1.9","author":"h0lybyte","license":"KBVE","status":"active","runner":"ubuntu-latest","image":"kbve/jobboard","e2e_name":"jobboard","deployment_yaml":"apps/kube/jobboard/manifest/jobboard-deployment.yaml","version_target":"apps/jobboard/Cargo.toml","has_test":false,"kube":{"stack":"agones","environment":"prod","tier":"web","owner":"h0lybyte","criticality":"medium"},"bento":{"badge":"gamedev · gaming · rust · proto · docker · web","title":"Curated vetted freelance","accent":"Job Board","lede":"A curated, both-sides-vetted freelance platform — think Upwork/Fiverr, but gated and quality-first. Sanctioned members post gigs, others take them up. Game development is the launch vertical, not the ceiling: the data model, taxonomy, and matching are vertical-agnostic by design.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/jobboard","primary":true,"external":true},{"label":"Architecture","href":"#architecture"},{"label":"Protobuf","href":"#protobuf"},{"label":"Roadmap","href":"#roadmap"}],"aside":{"icon":"shield","title":"Curation is the wedge","body":"Both posters and takers are vetted, so quality is the product. Every gig is legit; every applicant is screened. The underlying platform stays general so we can expand without re-platforming.","points":["<strong>Vertical-first</strong> — game dev first, horizontal data model.","<strong>Portfolio-first</strong> — talent is hired by seeing work."]},"stats":[{"label":"App","value":"jobboard","icon":"server"},{"label":"Stack","value":"Rust + Axum","icon":"rust"},{"label":"Auth","value":"Supabase","icon":"key"},{"label":"Port","value":"5400","icon":"activity"}],"features":[{"title":"Curation is the wedge","body":"Both posters and takers are vetted, so quality is the product — every gig is legit, every applicant screened.","icon":"shield"},{"title":"Vertical-first, horizontal model","body":"Win one vertical at a time (game dev first) while the underlying platform stays general, so expansion needs no re-platforming.","icon":"expand"},{"title":"Portfolio-first","body":"Creative/technical talent is hired by seeing work — the portfolio system is a first-class feature across every vertical.","icon":"eye"},{"title":"Decoupled Rust/Axum API","body":"A standalone REST API with Supabase auth and jedi PgCluster over Postgres, reusable across web, future mobile, and integrations.","icon":"network"}],"related":[{"href":"/project/rows/","title":"rows","copy":"The KBVE multi-tenant Rust/Axum service whose auth and PgCluster patterns the Job Board reuses.","icon":"server"}],"related_heading":"Related"},"title":"Job Board — Curated Vetted Freelance Platform (Rust/Axum)","tags":["gamedev","gaming","rust","proto","docker","web"],"sidebar":{"label":"Job Board","order":50,"badge":{"text":"New","variant":"tip"}},"verticals":[{"slug":"game-dev","label":"Game Development","description":"Art, code, audio, design, and QA for games — the launch vertical.","status":"featured","sort_order":0,"disciplines":[["2d-art","2D Art"],["3d-art","3D Art"],["animation","Animation / Rigging"],["programming","Programming"],["technical-art","Technical Art / Shaders"],["audio","Audio (Music / SFX / VO)"],["game-design","Game Design"],["level-design","Level Design"],["narrative","Narrative / Writing"],["ui-ux","UI / UX"],["qa","QA / Testing"],["porting","Porting"],["localization","Localization"],["production","Production / PM"],["community","Community"]],"tools":[["unity","Unity"],["unreal","Unreal"],["godot","Godot"],["gamemaker","GameMaker"],["bevy","Bevy"],["blender","Blender"],["maya","Maya"],["zbrush","ZBrush"],["substance","Substance"],["photoshop","Photoshop"],["spine","Spine"],["fmod","FMOD"],["wwise","Wwise"]],"skills":[["netcode","Netcode"],["humanoid-rigging","Humanoid Rigging"],["pixel-art","Pixel Art"],["procgen","Procedural Generation"],["shader-graph","Shader Graph"],["vertical-slice","Vertical Slice"]]}],"slug":"/project/jobboard"},{"key":"kasm_void","pipeline":"docker","app_name":"kasm-void","source_path":"packages/docker/kasm-void","version_toml":"packages/docker/kasm-void/version.toml","version":"0.0.6","author":"h0lybyte","license":"KBVE","status":"active","runner":"ubuntu-latest","image":"kbve/kasm-void","deployment_yaml":"apps/kube/kasm/manifest/deployment.yaml","has_test":false,"kube":{"stack":"application","environment":"prod","tier":"api","owner":"h0lybyte","criticality":"medium"},"bento":{"badge":"docker · kasm · workspace · discord · cloakbrowser","title":"Discord + browser","accent":"workspace","lede":"The production workspace image used by the kasm-vpn Deployment. It extends kasmweb/discord with CloakBrowser so a single KASM session exposes Discord and a browser side-by-side — the browser is the canonical screen-share target streamed through Discord's video feature.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/docker/kasm-void","primary":true,"external":true},{"label":"Crash recovery","href":"#recovery"},{"label":"Runtime env","href":"#runtime"}],"aside":{"icon":"gears","title":"Self-healing desktop","body":"A custom startup script spawns three supervisor loops that poll every 3–5 seconds via <code>pgrep</code> and relaunch CloakBrowser, Discord, or the nav_shim if they exit — no manual session restart.","points":["<strong>cloak_loop</strong> — respawns the bundled Chromium fork.","<strong>discord_loop</strong> — respawns the upstream Discord.","<strong>nav_shim_loop</strong> — respawns the URL launcher shim."]},"stats":[{"label":"App","value":"kasm-void","icon":"box"},{"label":"Base","value":"kasmweb/discord","icon":"package"},{"label":"Bundles","value":"CloakBrowser","icon":"eye"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"Discord + browser bundle","body":"One supervised container exposes Discord and a browser side-by-side for in-session screen-share.","icon":"video"},{"title":"Supervisor auto-respawn","body":"Three background loops relaunch any component that exits, keeping the desktop populated after a crash.","icon":"gears"},{"title":"Reproducible browser","body":"A known Chromium build gives consistent stream fonts and codecs across sessions.","icon":"eye"},{"title":"Owned resource limits","body":"Bundling lets KBVE own requests/limits against one artifact instead of patching a vendor tag.","icon":"settings"},{"title":"Guarded URL launcher","body":"The nav_shim exposes only CDP Page.navigate behind bearer auth, a scheme allowlist, and a Cilium NetworkPolicy.","icon":"shield"}],"related":[{"href":"/project/discordsh-bot/","title":"DiscordSH Bot","copy":"Discord gateway bot in the same Discord tooling group.","icon":"discord"}],"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related"},"title":"KASM Void — Custom KASM Discord + CloakBrowser Workspace","tags":["docker","kasm","workspace","discord","cloakbrowser"],"sidebar":{"label":"KASM Void","order":470},"slug":"/project/kasm-void"},{"key":"kbve_crate","pipeline":"crates","package_name":"kbve","source_path":"packages/rust/kbve","version_toml":"packages/rust/kbve/version.toml","version":"0.1.26","author":"h0lybyte","license":"MIT","status":"active","bento":{"badge":"crates · rust","title":"Axum + Diesel boilerplate","accent":"kbve","lede":"The KBVE core Rust crate — an Axum and Diesel boilerplate for building backend APIs and micro-services, with auth, Supabase, and gate features.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/kbve","primary":true,"external":true},{"label":"Features","href":"#features"}],"aside":{"icon":"settings","title":"Link only what you need","body":"Bundles authentication, markdown, wallet, referral, and gate modules behind Cargo feature flags so each service links only what it needs.","points":["<strong>gate / gate-auth</strong> — the kbve-gate auth-proxy sidecar.","<strong>supabase / kv</strong> — Supabase plus a Valkey-backed KV layer."]},"stats":[{"label":"Package","value":"kbve","icon":"package"},{"label":"Edition","value":"2021","icon":"rust"},{"label":"Version","value":"0.1.26","icon":"branch"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Axum + Diesel base","body":"HTTP routing plus async Diesel (diesel-async, bb8 pool) for backend micro-services.","icon":"server"},{"title":"Authentication","body":"Argon2 password hashing and JWT (jsonwebtoken) handling.","icon":"lock"},{"title":"supabase / kv","body":"Supabase integration and a Valkey-backed key-value layer via jedi.","icon":"database"},{"title":"gate / gate-auth","body":"An auth-proxy WebSocket surface (the kbve-gate sidecar) fronting services like n8n, Grafana, and Studio.","icon":"shield"},{"title":"image-gen, wallet, referral, markdown, lot","body":"Additional optional modules for the KBVE platform.","icon":"box"},{"title":"legacy-sync-db","body":"The older synchronous Diesel modules (guild, models, runes, schema, spellbook).","icon":"clock"}],"related":[{"href":"/project/kbve-gate/","title":"KBVE Gate","copy":"The auth-proxy sidecar built on this crate's gate feature.","icon":"shield"},{"href":"/project/q-crate/","title":"Q Crate","copy":"Another core Rust crate powering KBVE games.","icon":"rust"}],"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related crates"},"title":"kbve — Axum + Diesel Backend Boilerplate Crate","tags":["crates","rust"],"sidebar":{"label":"KBVE Crate","order":73},"slug":"/project/kbve-crate"},{"key":"kbve_gate","pipeline":"docker","app_name":"kbve-gate","source_path":"apps/kbve/kbve-gate","version_toml":"apps/kbve/kbve-gate/version.toml","version":"0.1.9","author":"h0lybyte","license":"KBVE","status":"active","runner":"ubuntu-latest","image":"kbve/kbve-gate","deployment_yamls":["apps/kube/monitoring/manifests/grafana-gate-deployment.yaml","apps/kube/argocd/manifests/argocd-gate-deployment.yaml","apps/kube/storage/manifests/longhorn-gate-deployment.yaml","apps/kube/forgejo/manifest/forgejo-gate-deployment.yaml","apps/kube/studio/manifests/studio-gate-deployment.yaml","apps/kube/windmill/manifest/windmill-gate-deployment.yaml"],"version_target":"apps/kbve/kbve-gate/Cargo.toml","has_test":false,"kube":{"stack":"application","environment":"prod","tier":"api","owner":"h0lybyte","criticality":"medium"},"bento":{"badge":"docker · networking · auth","title":"Supabase JWT auth","accent":"reverse-proxy","lede":"A thin authentication reverse-proxy built on the kbve crate's feature-gated gate module. It runs as a sidecar in front of an internal service so the upstream binds localhost and only the gate is exposed — fronting n8n, Grafana, Longhorn, ArgoCD, Forgejo, and Supabase Studio.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/kbve/kbve-gate","primary":true,"external":true},{"label":"Auth","href":"#auth"},{"label":"Deployment","href":"#deploy"}],"aside":{"icon":"lock","title":"Validate then proxy","body":"The gate accepts a Supabase JWT from a bearer header, an <code>sb-access-token</code>/<code>kbve_gate</code> cookie, or a query param, then applies an authz policy before forwarding to the localhost-bound upstream.","points":["<strong>jwt-only</strong> — any valid Supabase JWT passes.","<strong>is_staff</strong> — forum.is_staff(sub) must return true."]},"stats":[{"label":"App","value":"kbve-gate","icon":"box"},{"label":"Built on","value":"kbve gate module","icon":"rust"},{"label":"Image","value":"kbve/kbve-gate","icon":"package"},{"label":"Auth","value":"Supabase JWT","icon":"key"}],"features":[{"title":"JWT + authz policy","body":"Validates a Supabase JWT, then enforces jwt-only or is_staff via a short-lived service_role token.","icon":"key"},{"title":"Login bounce","body":"302s unauthed cross-subdomain navigations to the login page and sets a scoped kbve_gate cookie on return.","icon":"route"},{"title":"Sidecar or standalone","body":"Shares a pod with an editable upstream, or runs as its own Deployment + Service + HTTPRoute for ones we don't own.","icon":"expand"},{"title":"Downstream identity injection","body":"Injects basic-auth, bearer tokens, or a trusted user header so gated tools trust the gate-authed staff user.","icon":"shield"},{"title":"Fronts the toolchain","body":"Guards n8n, Grafana, Longhorn, ArgoCD, Forgejo, and Supabase Studio behind one auth model.","icon":"network"}],"related":[{"href":"/project/edge/","title":"Edge","copy":"KBVE edge service tier.","icon":"network"},{"href":"/project/api/","title":"API","copy":"The KBVE core API the gate protects access patterns around.","icon":"server"}],"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related"},"title":"KBVE Gate — Supabase JWT Auth Reverse-Proxy Sidecar","tags":["docker","networking","auth"],"sidebar":{"label":"KBVE Gate","order":52},"slug":"/project/kbve-gate"},{"key":"ue_kbveagones","pipeline":"unreal","plugin_name":"KBVEAgones","plugin_path":"packages/unreal/KBVEAgones","dependency_plugins":"packages/unreal/Agones packages/unreal/KBVEROWS","source_path":"packages/unreal/KBVEAgones","version_toml":"packages/unreal/KBVEAgones/version.toml","version":"0.0.1","author":"h0lybyte","license":"KBVE","status":"active","min_engine_version":"5.4","supported_platforms":["Linux"],"bento":{"badge":"unreal · agones · rows · server","title":"Agones-to-ROWS server bridge","accent":"KBVEAgones","lede":"A server-only glue plugin for Unreal dedicated servers. Agones owns the GameServer lifecycle; the bridge subsystem listens for the Agones ConnectedDelegate and registers the instance with KBVE ROWS via RegisterLauncher, using the address and port Agones reports — without leaking any of it into client or editor builds.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVEAgones","primary":true,"external":true},{"label":"Features","href":"#features"}],"aside":{"icon":"server","title":"Server-only glue","body":"<code>UKBVEAgonesBridgeSubsystem</code> reacts to the Agones ConnectedDelegate and calls <code>UROWSInstanceSubsystem::RegisterLauncher(Address, Port, MaxInstances)</code> with the Agones-reported endpoint.","points":["<strong>Depends on</strong> — Agones (lifecycle) + KBVEROWS (REST client).","<strong>Gated</strong> — TargetAllowList Server + IsRunningDedicatedServer()."]},"stats":[{"label":"Version","value":"0.0.1","icon":"info"},{"label":"Engine","value":"UE 5.4+","icon":"settings"},{"label":"Platforms","value":"Linux","icon":"server"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"Agones → ROWS bridge","body":"UKBVEAgonesBridgeSubsystem reacts to the Agones ConnectedDelegate and registers the instance with ROWS.","icon":"branch"},{"title":"Launcher registration","body":"Calls UROWSInstanceSubsystem::RegisterLauncher(Address, Port, MaxInstances) with the Agones-reported endpoint.","icon":"deploy"},{"title":"Server-only","body":"Module is TargetAllowList: [\"Server\"] and the subsystem gates on IsRunningDedicatedServer(), keeping it out of client/editor builds.","icon":"shield"},{"title":"Clean separation","body":"Depends on Agones for lifecycle and KBVEROWS for REST; KBVEROWS stays a pure REST plugin.","icon":"expand"}],"related":[{"href":"/project/rows/","title":"ROWS","copy":"The Rust game backend the instance registers with.","icon":"server"},{"href":"/project/kbverows/","title":"KBVEROWS","copy":"The Unreal REST client plugin KBVEAgones depends on.","icon":"package"},{"href":"/project/agones/","title":"Agones","copy":"The GameServer fleet manager driving the lifecycle.","icon":"deploy"}],"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related"},"title":"KBVEAgones — Unreal Agones-to-ROWS Server Bridge Plugin","tags":["unreal","agones","rows","server"],"sidebar":{"label":"KBVEAgones","order":95},"slug":"/project/kbveagones"},{"key":"ue_kbvecombat","pipeline":"unreal","plugin_name":"KBVECombat","plugin_path":"packages/unreal/KBVECombat","dependency_plugins":"packages/unreal/KBVEGameplay","source_path":"packages/unreal/KBVECombat","version_toml":"packages/unreal/KBVECombat/version.toml","version":"0.1.0","author":"h0lybyte","license":"KBVE","status":"active","min_engine_version":"5.7","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · gameplay","title":"Server-authoritative combat","accent":"KBVECombat","lede":"The shared combat domain — server-authoritative damage, teams/factions, and death — built on KBVEGameplay primitives (stats + effects). It depends on KBVEGameplay, never the reverse: combat consumes the primitives, it doesn't define them. Backend-agnostic — Mover pawns, CMC characters, and Mass NPC proxies all fight through one interface.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVECombat","primary":true,"external":true},{"label":"Usage","href":"#usage"},{"label":"Features","href":"#features"}],"aside":{"icon":"shield","title":"Authority-only damage","body":"<code>UKBVECombatStatics::ApplyDamage</code> resolves a combatant on any actor and applies an <code>FKBVEDamageEvent</code> against the owner's Health stat via <code>IKBVEStatTarget</code>, composing with KBVEGameplay effects and replicating through the owner's transport.","points":["<strong>Backend-agnostic</strong> — Mover, CMC, and Mass NPC proxies fight through IKBVECombatant.","<strong>Depends on</strong> — KBVEGameplay (stats + effects), never the reverse."]},"stats":[{"label":"Version","value":"0.1.0","icon":"info"},{"label":"Engine","value":"UE 5.7+","icon":"settings"},{"label":"Platforms","value":"Win64 · Linux · Mac","icon":"server"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"UKBVECombatComponent","body":"Resolves damage against the owner's Health stat via IKBVEStatTarget, tracks team + replicated dead state, fires OnDamaged / OnDeath. Implements IKBVECombatant.","icon":"combat"},{"title":"IKBVECombatant","body":"GetTeamId / IsAlive / ApplyDamage — uniform participation regardless of movement backend.","icon":"expand"},{"title":"FKBVEDamageEvent","body":"Amount, EKBVEDamageElement, instigator, and hit info.","icon":"sword"},{"title":"UKBVECombatStatics","body":"ApplyDamage / IsAlive / GetTeamId / AreHostile, resolving a combatant on any actor.","icon":"shield"}],"related":[{"href":"/project/kbvegameplay/","title":"KBVEGameplay","copy":"The stats and effects primitives KBVECombat builds on.","icon":"gears"},{"href":"/project/kbvemover/","title":"KBVEMover","copy":"One of the movement backends whose pawns fight through KBVECombat.","icon":"route"}],"features_eyebrow":"Pieces","features_heading":"Pieces","related_heading":"Related"},"title":"KBVECombat — Server-Authoritative Combat Plugin for Unreal","tags":["unreal","gameplay"],"sidebar":{"label":"KBVECombat","order":93},"slug":"/project/kbvecombat"},{"key":"ue_kbveevents","pipeline":"unreal","plugin_name":"KBVEEvents","plugin_path":"packages/unreal/KBVEEvents","source_path":"packages/unreal/KBVEEvents","version_toml":"packages/unreal/KBVEEvents/version.toml","version":"0.1.0","author":"h0lybyte","license":"KBVE","status":"active","min_engine_version":"5.4","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · events","title":"Typed event bus","accent":"KBVEEvents","lede":"A lightweight typed publish/subscribe event bus for KBVE Unreal Engine games — compile-time-typed channels, pooled payloads, and a lock-free SPSC handoff for moving Mass worker-thread events onto the game thread. A companion to UE's GameplayMessageRouter: use GMR for Blueprint-friendly tag-based messaging, and KBVEEvents when performance or compile-time typing matters.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVEEvents","primary":true,"external":true},{"label":"Usage","href":"#usage"},{"label":"Features","href":"#features"}],"aside":{"icon":"zap","title":"Typed & lock-free","body":"Compile-time-typed channels (<code>TKBVEChannel&lt;TPayload&gt;</code>) dispatch strongly typed payloads with no tag lookups or boxing, while an MPSC queue hands worker-thread events to the game thread.","points":["<strong>Companion to</strong> — UE's GameplayMessageRouter for tag-based Blueprint messaging.","<strong>Cross-thread</strong> — a lock-free MPSC queue drains onto the game thread safely."]},"stats":[{"label":"Version","value":"0.1.0","icon":"info"},{"label":"Engine","value":"UE 5.4+","icon":"settings"},{"label":"Platforms","value":"Win64 · Linux · Mac","icon":"server"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"Compile-time-typed channels","body":"Strongly typed payloads dispatched through TKBVEChannel with no tag lookups or boxing.","icon":"code"},{"title":"Handle-based subscriptions","body":"Subscribe returns an FKBVEEventHandle; cancel via Unsubscribe or let the owning UObject GC, since channels prune stale weak refs before each dispatch.","icon":"key"},{"title":"Synchronous game-thread dispatch","body":"Publish invokes callbacks on the calling thread under an FCriticalSection so the channel itself never tears.","icon":"clock"},{"title":"Lock-free cross-thread path","body":"An MPSC queue lets a worker enqueue POD payloads that a game-thread bridge drains and publishes safely.","icon":"zap"}],"related":[{"href":"/project/kbveworld/","title":"KBVEWorld","copy":"Procedural world toolkit that pairs with the event bus.","icon":"map"},{"href":"/project/kbvepostshader/","title":"KBVEPostShader","copy":"Sibling KBVE Unreal plugin.","icon":"render"}],"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related"},"title":"KBVEEvents — Typed UE Event Bus Plugin","tags":["unreal","events"],"sidebar":{"label":"KBVEEvents","order":89},"slug":"/project/kbveevents"},{"key":"ue_kbvegameplay","pipeline":"unreal","plugin_name":"KBVEGameplay","plugin_path":"packages/unreal/KBVEGameplay","source_path":"packages/unreal/KBVEGameplay","version_toml":"packages/unreal/KBVEGameplay/version.toml","version":"0.1.0","author":"h0lybyte","license":"KBVE","status":"beta","min_engine_version":"5.4","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · gameplay","title":"Consumable & effect framework","accent":"KBVEGameplay","lede":"A game-agnostic consumable + effect framework. A game implements IKBVEStatTarget (mapping its stats to FName ids) and attaches UKBVEEffectComponent; the plugin owns the effect lifecycle from a data-driven FKBVEEffectSpec — restores, over-time regen/DoT, buffs, statuses, cooldowns — plus an agnostic stat layer and melee combat.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVEGameplay","primary":true,"external":true},{"label":"Features","href":"#features"},{"label":"Stats + combat","href":"#stats-combat"}],"aside":{"icon":"gears","title":"Data-driven effects","body":"The game builds an <code>FKBVEEffectSpec</code> from its item definition; effect data lives in the shared itemdb. Tick auto-disables when no effects or cooldowns are active.","points":["<strong>Applied through</strong> — IKBVEStatTarget maps stats to FName ids.","<strong>Also ships</strong> — a Mass parallel regen processor + a melee sweep component."]},"stats":[{"label":"Version","value":"0.1.0 (beta)","icon":"info"},{"label":"Engine","value":"UE 5.4+","icon":"settings"},{"label":"Platforms","value":"Win64 · Linux · Mac","icon":"server"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"Data-driven effects","body":"Restores, regens/DoT, buffs, and statuses from FKBVEEffectSpec.","icon":"package"},{"title":"Cooldown gating","body":"Per-SourceKey gate rejects re-application while hot.","icon":"clock"},{"title":"Auto-disabling tick","body":"The component stops ticking when no effects or cooldowns are live.","icon":"zap"}],"related":[{"href":"/project/kbvecombat/","title":"KBVECombat","copy":"Combat systems that pair with these stats.","icon":"combat"},{"href":"/project/kbveitemdb/","title":"KBVEItemDB","copy":"Item database that supplies effect data.","icon":"inventory"},{"href":"/project/kbvemover/","title":"KBVEMover","copy":"Movement layer that reads movement state.","icon":"route"}],"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related"},"title":"KBVEGameplay — Consumable & Effect Framework","tags":["unreal","gameplay"],"sidebar":{"label":"KBVEGameplay","order":80},"slug":"/project/kbvegameplay"},{"source_path":"packages/unreal/KBVEWorld/Source/KBVEHexWorld","version":"0.1.0","author":"h0lybyte","license":"KBVE","status":"active","min_engine_version":"5.4","bento":{"badge":"unreal · gameplay","title":"Hex-grid topology for","accent":"Unreal","lede":"The hex-grid world topology module of the KBVEWorld Unreal plugin — deterministic world seeds, noise-driven terrain, and a foundation for PCG streaming, all behind a Blueprint-callable master map of hex cells.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVEWorld/Source/KBVEHexWorld","primary":true,"external":true},{"label":"Key facts","href":"#key-facts"}],"aside":{"icon":"info","title":"A module, not a standalone plugin","body":"KBVEHexWorld now ships inside the <strong>KBVEWorld</strong> plugin. Enable KBVEWorld to get both the square-chunk world module and the hex topology module together.","points":["<strong>Square chunks</strong> — the base KBVEWorld world module.","<strong>Hex topology</strong> — this module, layered on top."]},"stats":[{"label":"Module","value":"KBVEHexWorld","icon":"box"},{"label":"Version","value":"0.1.0","icon":"branch"},{"label":"Engine","value":"UE 5.4+","icon":"gears"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"Hex topology","body":"Hex-grid coordinates (FHexCoord) and cell records (FHexCellRecord) with neighbor queries.","icon":"map"},{"title":"Deterministic seeds","body":"HexWorldSeedSubsystem gives reproducible world generation from a fixed seed.","icon":"key"},{"title":"Noise terrain","body":"HexNoiseSubsystem and HexEnvironmentSubsystem drive procedural terrain and environment.","icon":"render"},{"title":"Blueprint-callable map","body":"UHexWorldSubsystem (a GameInstanceSubsystem) registers, unregisters, looks up, and enumerates hex cells.","icon":"code"}],"related":[{"href":"/project/kbverows/","title":"KBVEROWS","copy":"Sibling KBVE Unreal backend integration plugin.","icon":"package"}],"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related"},"title":"KBVEHexWorld — Hex-Grid World Topology Module for Unreal","tags":["unreal","gameplay"],"sidebar":{"label":"KBVEHexWorld","order":88},"slug":"/project/kbvehexworld"},{"key":"ue_kbveitemdb","pipeline":"unreal","plugin_name":"KBVEItemDB","plugin_path":"packages/unreal/KBVEItemDB","dependency_plugins":"packages/unreal/KBVESQLite packages/unreal/KBVEYYJson","source_path":"packages/unreal/KBVEItemDB","version_toml":"packages/unreal/KBVEItemDB/version.toml","version":"0.1.0","author":"h0lybyte","license":"KBVE","status":"beta","min_engine_version":"5.4","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · item","title":"Item database & inventory","accent":"KBVEItemDB","lede":"A game-agnostic item database, inventory model, and dropped-item Mass bridge — the data/inventory half to KBVEGameplay's effect half. It loads the shared itemdb artifact into runtime item defs and looks them up by key or ref.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVEItemDB","primary":true,"external":true},{"label":"Consumables","href":"#consumables"},{"label":"Dropped items","href":"#dropped"},{"label":"Persistence","href":"#persistence"}],"aside":{"icon":"inventory","title":"Data half of a pair","body":"Item <strong>data</strong> stays in the shared itemdb MDX. KBVEItemDB carries it plus the inventory model; <strong>KBVEGameplay</strong> applies the consumable effects (atlas/icon rendering deferred).","points":["<strong>Fields</strong> — aligned to FKBVEEffectSpec so a game maps item → effect.","<strong>Persistence</strong> — durable local inventory via KBVESQLite."]},"stats":[{"label":"Plugin","value":"KBVEItemDB","icon":"inventory"},{"label":"Engine","value":"UE 5.4+","icon":"settings"},{"label":"Platforms","value":"Win64 · Linux · Mac","icon":"box"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"Item def","body":"FKBVEItemDef / FKBVEItemFood — runtime item def with identity, type flags, rarity, stacking, prices, tags, and consumable/food effect fields aligned to FKBVEEffectSpec.","icon":"inventory"},{"title":"Database subsystem","body":"UKBVEItemDatabase (GameInstance subsystem) loads Content/Data/itemdb-data.json via UE Json; lookup by key / ref. Mirrors the chuckItemDB pattern.","icon":"database"},{"title":"Inventory model","body":"FKBVEInventory / FKBVEInventoryBag / FKBVEInventoryStack plus UKBVEInventoryLibrary (TryAdd / CountItem / FindFirstSlot) — a generic inventory model.","icon":"bag"},{"title":"Dropped-item fragment","body":"FKBVEDroppedItemFragment / FKBVEDroppedItemTag — Mass fragment for world-dropped items (key, count, rarity, lifetime, magnet/pickup radius).","icon":"box"}],"related":[{"href":"/project/kbvegameplay/","title":"KBVEGameplay","copy":"The effect half — applies the consumable effects an item def describes.","icon":"zap"},{"href":"/project/kbvesqlite/","title":"KBVESQLite","copy":"The SQLite provider KBVEItemDB uses for durable inventory persistence.","icon":"database"},{"href":"/project/kbvezstd/","title":"KBVEZstd","copy":"Compression plugin in the same Unreal plugin family.","icon":"package"}],"features_heading":"What it ships","related_heading":"Related"},"title":"KBVEItemDB — Item Database & Inventory Plugin for Unreal","tags":["unreal","item"],"sidebar":{"label":"KBVEItemDB","order":78},"slug":"/project/kbveitemdb"},{"key":"ue_kbvelibgit","pipeline":"unreal","plugin_name":"KBVELibGit","plugin_path":"packages/unreal/KBVELibGit","source_path":"packages/unreal/KBVELibGit","version_toml":"packages/unreal/KBVELibGit/version.toml","version":"0.1.0","author":"h0lybyte","license":"KBVE","status":"active","min_engine_version":"5.4","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · editor · git","title":"libgit2 plugin installer","accent":"KBVELibGit","lede":"An editor-only Unreal Engine 5 plugin that uses libgit2 to clone, fetch, and manage public GitHub repositories as local UE plugins — directly from an in-editor installer panel. It loads at PostEngineInit, contains no runtime content, and is currently a beta, experimental plugin.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVELibGit","primary":true,"external":true},{"label":"Features","href":"#features"}],"aside":{"icon":"branch","title":"Editor-only installer","body":"Backed by <a href=\"https://libgit2.org\">libgit2</a> (bundled ThirdParty), it loads at <code>PostEngineInit</code> with no runtime content — an in-editor panel to browse and install repos as plugins.","points":["<strong>Backend</strong> — libgit2 (ThirdParty).","<strong>Status</strong> — beta, experimental."]},"stats":[{"label":"Version","value":"0.1.0","icon":"info"},{"label":"Type","value":"Editor module","icon":"settings"},{"label":"Engine","value":"UE 5.4+","icon":"settings"},{"label":"Platforms","value":"Win64 · Linux · Mac","icon":"server"}],"features":[{"title":"Clone / fetch over libgit2","body":"A fresh clone for new repos, a fetch-latest for ones already on disk, all driven by the bundled libgit2 ThirdParty library.","icon":"branch"},{"title":"Remote HEAD resolution","body":"Resolves a registry HEAD over the wire via ls-remote without a full clone when no local copy exists.","icon":"network"},{"title":"Git Plugin Installer panel","body":"An editor UI (SGitInstallerPanel) that adds a \"Git Plugin Installer\" entry for browsing and installing repos as plugins.","icon":"expand"},{"title":"Plugin registry + validation","body":"A plugin registry, validator, and lock guard keep installed plugins consistent.","icon":"check"}],"related":[{"href":"/project/kbvesupabase/","title":"KBVESupabase","copy":"A KBVE Unreal Engine 5 plugin for Supabase auth and data.","icon":"shield"}],"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related"},"title":"KBVELibGit — libgit2 Git Plugin Installer for UE5","tags":["unreal","editor","git"],"sidebar":{"label":"KBVELibGit","order":87},"slug":"/project/kbvelibgit"},{"key":"ue_kbvemapdb","pipeline":"unreal","plugin_name":"KBVEMapDB","plugin_path":"packages/unreal/KBVEMapDB","source_path":"packages/unreal/KBVEMapDB","version_toml":"packages/unreal/KBVEMapDB/version.toml","version":"0.1.0","author":"h0lybyte","license":"KBVE","status":"beta","min_engine_version":"5.4","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · map","title":"World & map database","accent":"KBVEMapDB","lede":"A game-agnostic Unreal Engine plugin providing world/map data plus a Mass bridge — resource nodes, containers, and stations loaded into runtime world-object defs with ref lookup.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVEMapDB","primary":true,"external":true},{"label":"Features","href":"#features"}],"aside":{"icon":"network","title":"Driven by shared defs","body":"<code>UKBVEMapDatabase</code> reads the shared <code>mapdb-data.json</code> artifact at runtime; placed world objects resolve back to their canonical definition by reference.","points":["<strong>Fragment</strong> — FKBVEWorldObjectFragment carries identity + harvest state into Mass.","<strong>Tag</strong> — FKBVEWorldObjectTag marks harvestable world entities."]},"stats":[{"label":"Plugin","value":"KBVEMapDB","icon":"map"},{"label":"Engine","value":"UE 5.4+","icon":"settings"},{"label":"Platforms","value":"Win64 · Linux · Mac","icon":"box"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"Game-agnostic loader","body":"UKBVEMapDatabase, a GameInstance subsystem, reads the shared mapdb-data.json artifact at runtime.","icon":"database"},{"title":"World-object defs","body":"FKBVEWorldObjectDef records model resource nodes, containers, and stations with harvest yield, amount, time, and spawn weights.","icon":"box"},{"title":"Ref lookup","body":"Resolve placed objects back to their canonical definition by reference.","icon":"route"},{"title":"Mass bridge","body":"FKBVEWorldObjectFragment and FKBVEWorldObjectTag carry object identity and harvest state into Mass for harvestable entities.","icon":"network"}],"related":[{"href":"/project/kbvetinybvh/","title":"KBVETinyBVH","copy":"Sibling Unreal plugin from the KBVE package group.","icon":"package"},{"href":"/project/unreal-chuck-dev/","title":"Unreal Chuck Dev","copy":"UE5 game client that consumes KBVE Unreal plugins.","icon":"box"}],"features_heading":"Features","related_heading":"Related"},"title":"KBVEMapDB — Unreal World/Map Database + Mass Plugin","tags":["unreal","map"],"sidebar":{"label":"KBVEMapDB","order":76},"slug":"/project/kbvemapdb"},{"key":"ue_kbvemover","pipeline":"unreal","plugin_name":"KBVEMover","plugin_path":"packages/unreal/KBVEMover","dependency_plugins":"packages/unreal/KBVEGameplay","source_path":"packages/unreal/KBVEMover","version_toml":"packages/unreal/KBVEMover/version.toml","version":"0.1.0","author":"h0lybyte","license":"KBVE","status":"active","min_engine_version":"5.7","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · gameplay","title":"Networked Mover character","accent":"KBVEMover","lede":"The shared control-character layer built on UE5's Mover plugin — a networked, data-driven pawn that replaces the legacy CharacterMovementComponent. Server-authoritative with client prediction, so it works standalone, listen-server, and on the dedicated server.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVEMover","primary":true,"external":true},{"label":"AKBVEMoverPawn","href":"#features"},{"label":"Usage","href":"#usage"}],"aside":{"icon":"route","title":"Client-predicted, server-authoritative","body":"Built on UE5's <strong>Mover</strong> plugin — client prediction with server authority — so it runs standalone, on a listen-server, and on the dedicated server. Runs parallel to the legacy CMC character; games opt in per game.","points":["<strong>Pawn</strong> — AKBVEMoverPawn replaces the legacy CharacterMovementComponent.","<strong>Pulls in</strong> — Mover + EnhancedInput (depends on KBVEGameplay)."]},"stats":[{"label":"Version","value":"0.1.0","icon":"info"},{"label":"Engine","value":"UE 5.7+","icon":"settings"},{"label":"Platforms","value":"Win64 · Linux · Mac","icon":"server"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"Pawn composition","body":"An APawn with a capsule root, skeletal mesh, third-person camera, and a UCharacterMoverComponent (default Walking / Falling / Flying modes).","icon":"route"},{"title":"Input production","body":"Implements IMoverInputProducerInterface and sets itself as the InputProducer; Enhanced Input accumulates intent, and ProduceInput translates it into the Mover sim's FCharacterDefaultInputs (camera-relative move, orientation intent, jump).","icon":"gears"},{"title":"Networked by default","body":"Server-authoritative with client prediction — standalone, listen-server, and dedicated server, running parallel to the legacy CMC character.","icon":"network"}],"related":[{"href":"/project/kbvegameplay/","title":"KBVEGameplay","copy":"The gameplay plugin KBVEMover depends on.","icon":"gears"},{"href":"/project/kbveui/","title":"KBVEUI","copy":"The shared Slate UI component library for KBVE Unreal games.","icon":"box"}],"features_eyebrow":"The pawn","features_heading":"AKBVEMoverPawn","related_heading":"Related"},"title":"KBVEMover — Networked UE5 Mover Control Character","tags":["unreal","gameplay"],"sidebar":{"label":"KBVEMover","order":92},"slug":"/project/kbvemover"},{"key":"ue_kbvenet","pipeline":"unreal","plugin_name":"KBVENet","plugin_path":"packages/unreal/KBVENet","dependency_plugins":"packages/unreal/KBVESupabase packages/unreal/KBVEWorld packages/unreal/KBVEGameplay packages/unreal/KBVEYYJson packages/unreal/KBVENPCDB","source_path":"packages/unreal/KBVENet","version_toml":"packages/unreal/KBVENet/version.toml","version":"0.1.0","author":"h0lybyte","license":"KBVE","status":"active","min_engine_version":"5.7","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · networking","title":"Iris-ready entity replication","accent":"KBVENet","lede":"The shared networking layer for KBVE games. It provides Iris-ready replication primitives for streaming a server-authoritative simulation (Mass ECS swarms, etc.) to clients that render it locally.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVENet","primary":true,"external":true},{"label":"Replicator","href":"#replicator"},{"label":"Features","href":"#features"}],"aside":{"icon":"network","title":"Iris-ready, transport-agnostic","body":"<code>UKBVENetEntityReplicator</code> holds a delta-compressed <code>FFastArraySerializer</code> of lean per-entity snapshots. FastArrays ride Iris when the ReplicationSystem is on, the classic NetDriver otherwise — the consumer writes no Iris-specific code.","points":["<strong>Depends on</strong> — KBVESupabase, KBVEWorld, KBVEGameplay.","<strong>Snapshot</strong> — Id, quantized Location, packed yaw, Frame, StateByte."]},"stats":[{"label":"Version","value":"0.1.0","icon":"info"},{"label":"Engine","value":"UE 5.7+","icon":"settings"},{"label":"Platforms","value":"Win64 · Linux · Mac","icon":"server"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"Delta-compressed snapshots","body":"An FFastArraySerializer of lean per-entity snapshots — Id, quantized Location, packed YawQ, Frame, and a StateByte.","icon":"package"},{"title":"Transport-agnostic","body":"FastArrays ride Iris when the ReplicationSystem is on, the classic NetDriver otherwise — consumers write no Iris-specific code.","icon":"network"},{"title":"Server-authoritative streaming","body":"Streams a server-authoritative sim (Mass ECS swarms, etc.) to clients that render it locally.","icon":"server"}],"related":[{"href":"/project/kbveulid/","title":"KBVEULID","copy":"ULID generator that supplies stable IDs for replicated events.","icon":"key"},{"href":"/project/unreal-rentearth/","title":"Unreal RentEarth","copy":"A KBVE UE5 game client that consumes shared plugins like KBVENet.","icon":"box"}],"features_eyebrow":"Replication primitives","features_heading":"Features","related_heading":"Related"},"title":"KBVENet — Iris-Ready Entity Replication Plugin for Unreal 5","tags":["unreal","networking"],"sidebar":{"label":"KBVENet","order":91},"slug":"/project/kbvenet"},{"key":"ue_kbvenpcdb","pipeline":"unreal","plugin_name":"KBVENPCDB","plugin_path":"packages/unreal/KBVENPCDB","dependency_plugins":"packages/unreal/KBVEYYJson","source_path":"packages/unreal/KBVENPCDB","version_toml":"packages/unreal/KBVENPCDB/version.toml","version":"0.1.0","author":"h0lybyte","license":"KBVE","status":"beta","min_engine_version":"5.4","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · npc","title":"NPC database & Mass bridge","accent":"KBVENPCDB","lede":"A game-agnostic NPC database plus Mass Entity bridge. It loads the shared npcdb artifact into runtime NPC defs, exposes ref lookup, and spawns Mass entities from db data. Mirrors the itemdb loader pattern as a reusable plugin.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVENPCDB","primary":true,"external":true},{"label":"Details","href":"#features"},{"label":"Sprite module","href":"#sprite"}],"aside":{"icon":"sensor","title":"Data stays in MDX","body":"NPC data lives in the shared npcdb MDX and codegens to <code>npcdb-data.json</code>; the plugin owns only the load and Mass bridge. ChuckRPG calls it to spawn data-driven NPC entities.","points":["<strong>Depends on</strong> — KBVEYYJson.","<strong>Sprite</strong> — optional KBVENPCSprite render module."]},"stats":[{"label":"Plugin","value":"KBVENPCDB","icon":"sensor"},{"label":"Engine","value":"UE 5.4+","icon":"settings"},{"label":"Platforms","value":"Win64 · Linux · Mac","icon":"box"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"NPC database","body":"UKBVENpcDatabase, a GameInstance subsystem, loads Content/Data/npcdb-data.json into FKBVENpcDef records; lookup by ref.","icon":"database"},{"title":"Runtime NPC def","body":"FKBVENpcDef / FKBVENpcStats carry identity, stats, level, faction, abilities, tags, aggro, and first-strike.","icon":"book"},{"title":"Mass fragment","body":"FKBVENpcFragment / FKBVENpcTag carry the NPC's db identity into the entity world.","icon":"network"},{"title":"Spawner","body":"UKBVENpcSpawner (World subsystem) SpawnNpcEntity(Def) creates a Mass entity with the NPC fragment; the game adds its own fragments.","icon":"box"}],"related":[{"href":"/project/kbveitemdb/","title":"KBVEItemDB","copy":"The itemdb loader this plugin's pattern mirrors.","icon":"inventory"},{"href":"/project/rows/","title":"ROWS","copy":"The KBVE game backend the NPC entities live alongside.","icon":"server"}],"features_heading":"Details","related_heading":"Related"},"title":"KBVENPCDB — Unreal NPC Database and Mass Bridge","tags":["unreal","npc"],"sidebar":{"label":"KBVENPCDB","order":79},"slug":"/project/kbvenpcdb"},{"key":"ue_kbveperf","pipeline":"unreal","plugin_name":"KBVEPerf","plugin_path":"packages/unreal/KBVEPerf","source_path":"packages/unreal/KBVEPerf","version_toml":"packages/unreal/KBVEPerf/version.toml","version":"0.1.0","author":"h0lybyte","license":"KBVE","status":"active","min_engine_version":"5.4","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · profiling","title":"Runtime perf instrumentation","accent":"KBVEPerf","lede":"A lightweight, runtime-toggleable performance layer for UE5. Scoped timers and counters feed per-name aggregates that drain to three sinks — the log, an on-screen overlay, and a live HTTP /perf JSON readout — so any KBVE plugin can be profiled by flipping a CVar.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVEPerf","primary":true,"external":true},{"label":"Macros","href":"#macros"},{"label":"CVars","href":"#cvars"}],"aside":{"icon":"zap","title":"Near-zero when disabled","body":"It compiles out of Shipping builds via <code>KBVEPERF_ENABLED=0</code>. When compiled in but disabled at runtime it costs a single atomic load plus a branch per scope, and can be toggled live with the <code>kbve.perf</code> CVar.","points":["<strong>Timers</strong> — RAII scoped <code>KBVEPERF_SCOPE</code>.","<strong>Counters</strong> — gauge samples via <code>KBVEPERF_COUNT</code>."]},"stats":[{"label":"Plugin","value":"KBVEPerf","icon":"activity"},{"label":"Min engine","value":"UE 5.4","icon":"gears"},{"label":"HTTP port","value":"8099","icon":"server"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"Scoped timers & counters","body":"RAII scoped timers and counter gauges feed per-name aggregates, categorized by the name prefix before the first dot.","icon":"clock"},{"title":"Three drain sinks","body":"Aggregates drain to the log, an on-screen overlay, and a live HTTP /perf JSON readout of per-op timings.","icon":"chart"},{"title":"Live HTTP readout","body":"Enable with kbve.perf 1 and curl localhost:8099/perf for count, last, max, avg, and p95 per op plus counter gauges.","icon":"server"},{"title":"Compiles out of Shipping","body":"KBVEPERF_ENABLED=0 removes it from Shipping builds; disabled at runtime it is one atomic load plus a branch per scope.","icon":"zap"}],"related":[{"href":"/project/kbveworld/","title":"KBVEWorld","copy":"The terrain and grass subsystem that is KBVEPerf's first consumer.","icon":"map"},{"href":"/project/kbvepostshader/","title":"KBVEPostShader","copy":"Sibling UE5 rendering plugin in the KBVE stack.","icon":"render"}],"related_heading":"Related"},"title":"KBVEPerf — Runtime Performance Instrumentation for UE5","tags":["unreal","profiling"],"sidebar":{"label":"KBVEPerf","order":89},"slug":"/project/kbveperf"},{"key":"ue_kbvepostshader","pipeline":"unreal","plugin_name":"KBVEPostShader","plugin_path":"packages/unreal/KBVEPostShader","source_path":"packages/unreal/KBVEPostShader","version_toml":"packages/unreal/KBVEPostShader/version.toml","version":"0.1.0","author":"h0lybyte","license":"KBVE","status":"active","min_engine_version":"5.7","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · rendering","title":"Stylized post-process","accent":"KBVEPostShader","lede":"A stylized post-process pipeline targeting a painterly Breath of the Wild / Studio Ghibli look — anisotropic Kuwahara oil-paint smear, cel luminance banding, and depth-driven ink outlines, run as chained RDG passes after the tonemapper and off by default.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVEPostShader","primary":true,"external":true},{"label":"Pipeline","href":"#pipeline"},{"label":"CVars","href":"#cvars"}],"aside":{"icon":"render","title":"RDG scene view extension","body":"It runs as chained RDG passes from a <code>FSceneViewExtension</code>, inserted after the tonemapper, gated by CVars and off by default. Defaults also live under Project Settings → KBVE → KBVE Post Shader.","points":["<strong>Enable</strong> — <code>r.KBVEPost.Enable 1</code>.","<strong>Target</strong> — desktop SM5+, BotW-tuned defaults."]},"stats":[{"label":"Plugin","value":"KBVEPostShader","icon":"render"},{"label":"Min engine","value":"UE 5.7","icon":"gears"},{"label":"Stage","value":"Post-tonemap","icon":"camera"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"Structure tensor flow","body":"RGB Sobel resolved into a local flow tangent plus anisotropy that orients the smear.","icon":"sensor"},{"title":"Anisotropic Kuwahara","body":"An 8-sector generalized Kuwahara over a flow-oriented ellipse produces the oil-paint base.","icon":"render"},{"title":"Ink & cel composite","body":"Depth-driven ink outlines, cel luminance banding with preserved hue, and warm saturation.","icon":"camera"},{"title":"CVar-gated, off by default","body":"Every knob is a CVar mirrored under Project Settings; the effect ships disabled until enabled.","icon":"settings"}],"related":[{"href":"/project/kbveworld/","title":"KBVEWorld","copy":"Procedural world toolkit whose scenes this post-process styles.","icon":"map"},{"href":"/project/kbveevents/","title":"KBVEEvents","copy":"Typed event bus used across KBVE Unreal plugins.","icon":"message"}],"related_heading":"Related"},"title":"KBVEPostShader — Stylized UE5 Post-Process","tags":["unreal","rendering"],"sidebar":{"label":"KBVEPostShader","order":90},"slug":"/project/kbvepostshader"},{"key":"ue_kbvequestdb","pipeline":"unreal","plugin_name":"KBVEQuestDB","plugin_path":"packages/unreal/KBVEQuestDB","dependency_plugins":"packages/unreal/KBVEYYJson","source_path":"packages/unreal/KBVEQuestDB","version_toml":"packages/unreal/KBVEQuestDB/version.toml","version":"0.1.0","author":"h0lybyte","license":"KBVE","status":"beta","min_engine_version":"5.4","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · quest","title":"Quest database loader","accent":"KBVEQuestDB","lede":"A game-agnostic quest catalog. UKBVEQuestDatabase loads the shared questdb-data.json artifact into runtime quest defs — objectives, rewards, category, and chain — with ref lookup. Quest progress stays game-side.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVEQuestDB","primary":true,"external":true},{"label":"Features","href":"#features"},{"label":"Usage","href":"#usage"}],"aside":{"icon":"book","title":"Catalog, not tracker","body":"KBVEQuestDB loads <strong>static</strong> quest definitions only — progress and state stay game-side. It mirrors the itemdb and npcdb loader pattern.","points":["<strong>Depends on</strong> — KBVEYYJson for JSON parsing.","<strong>Scope</strong> — GameInstance subsystem."]},"stats":[{"label":"Plugin","value":"KBVEQuestDB","icon":"book"},{"label":"Engine","value":"UE 5.4+","icon":"settings"},{"label":"Platforms","value":"Win64 · Linux · Mac","icon":"box"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"GameInstance subsystem","body":"UKBVEQuestDatabase loads at game-instance scope.","icon":"server"},{"title":"Data-driven defs","body":"Parses questdb-data.json into FKBVEQuestDef records.","icon":"database"},{"title":"Rich quest shape","body":"Objectives, rewards, category, and chain per quest.","icon":"book"},{"title":"Ref lookup","body":"Resolve quest definitions by reference.","icon":"route"},{"title":"Consistent pattern","body":"Mirrors the itemdb and npcdb loaders.","icon":"expand"}],"related":[{"href":"/project/kbveyyjson/","title":"KBVEYYJson","copy":"JSON parsing dependency.","icon":"code"},{"href":"/project/kbvenpcdb/","title":"KBVENPCDB","copy":"Sibling NPC database loader.","icon":"database"},{"href":"/project/kbveitemdb/","title":"KBVEItemDB","copy":"Sibling item database loader.","icon":"inventory"}],"features_heading":"Features","related_heading":"Related"},"title":"KBVEQuestDB — Quest Database Loader for Unreal","tags":["unreal","quest"],"sidebar":{"label":"KBVEQuestDB","order":77},"slug":"/project/kbvequestdb"},{"key":"ue_kbverows","pipeline":"unreal","plugin_name":"KBVEROWS","plugin_path":"packages/unreal/KBVEROWS","source_path":"packages/unreal/KBVEROWS","version_toml":"packages/unreal/KBVEROWS/version.toml","version":"1.0.0","author":"h0lybyte","license":"KBVE","status":"active","min_engine_version":"5.4","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · server","title":"Rust Open World Server backend","accent":"KBVEROWS","lede":"A unified Unreal Engine 5 backend integration plugin for the Rust Open World Server — auth, instance management, character persistence, and global data subsystems that talk to the ROWS REST API through a single plugin.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVEROWS","primary":true,"external":true},{"label":"Features","href":"#features"}],"aside":{"icon":"server","title":"One plugin, whole backend","body":"An Unreal client signs in, manages character data, and joins server instances through <code>KBVEROWS</code> (module <code>ROWS</code>). Transport is pluggable.","points":["<strong>HTTP</strong> — ROWSHttpTransport for REST.","<strong>gRPC</strong> — ROWSGrpcTransport backend."]},"stats":[{"label":"Plugin","value":"KBVEROWS","icon":"server"},{"label":"Version","value":"1.0","icon":"package"},{"label":"Engine","value":"UE 5.4+","icon":"settings"},{"label":"Platforms","value":"Win64 · Linux · Mac","icon":"box"}],"features":[{"title":"Auth","body":"ROWSAuthSubsystem with login widgets (ROWSLoginWidget, ROWSLoadingWidget) and a ROWSLoginController.","icon":"key"},{"title":"Character persistence","body":"ROWSCharacterSubsystem for character data.","icon":"database"},{"title":"Instance management","body":"ROWSInstanceSubsystem to allocate and join server instances.","icon":"server"},{"title":"Pluggable transport","body":"ROWSTransport with ROWSHttpTransport and ROWSGrpcTransport backends.","icon":"network"}],"related":[{"href":"/project/agones/","title":"Agones","copy":"Server lifecycle SDK used alongside ROWS-backed dedicated servers.","icon":"server"},{"href":"/project/kbveyyjson/","title":"KBVEYYJson","copy":"Fast JSON plugin used across the KBVE Unreal stack.","icon":"code"}],"features_heading":"Features","related_heading":"Related"},"title":"KBVEROWS — Rust Open World Server Backend Plugin for UE5","tags":["unreal","server"],"sidebar":{"label":"KBVEROWS","order":86},"slug":"/project/kbverows"},{"key":"ue_kbvesqlite","pipeline":"unreal","plugin_name":"KBVESQLite","plugin_path":"packages/unreal/KBVESQLite","source_path":"packages/unreal/KBVESQLite","version_toml":"packages/unreal/KBVESQLite/version.toml","version":"3.51.3","author":"h0lybyte","license":"KBVE","status":"active","min_engine_version":"5.4","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · database","title":"Embedded SQLite for","accent":"KBVESQLite","lede":"An embedded SQLite database plugin for Unreal Engine — a vendored sqlite3 amalgamation plus a thin RAII wrapper so consumers never touch raw sqlite3_* calls.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVESQLite","primary":true,"external":true},{"label":"Access seam","href":"#features"},{"label":"Rules","href":"#rules"}],"aside":{"icon":"alert","title":"One sqlite provider","body":"Never link the engine's <code>SQLiteCore</code> in the same module — duplicate <code>sqlite3_*</code> symbols crash the build and run. KBVESQLite is the single sqlite provider for KBVE code.","points":["<strong>Not a Mass hot-loop datasource</strong> — a persistence boundary only.","<strong>WAL</strong> — many readers + one writer across separate connections."]},"stats":[{"label":"SQLite","value":"3.51.3","icon":"database"},{"label":"Min engine","value":"UE 5.4","icon":"box"},{"label":"Platforms","value":"Win · Linux · Mac","icon":"gears"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"FKBVESQLiteConnection","body":"RAII connection: <code>Open(path, bUseWAL)</code> / <code>Close</code> / <code>Exec</code> / <code>Prepare</code> / <code>Begin</code> / <code>Commit</code> / <code>Rollback</code>.","icon":"database"},{"title":"FKBVESQLiteStatement","body":"RAII prepared statement: <code>Bind*</code>, <code>Step</code> / <code>Execute</code> / <code>Reset</code>, <code>Column*</code> accessors.","icon":"code"},{"title":"FKBVESettingsStore","body":"Scoped key/value prefs on a connection (<code>kv_settings(scope, key, value)</code>, UPSERT) — typed Set/Get String, Int, Float, Bool plus RemoveKey and LoadScope. Agnostic settings persistence; UI is KBVEUI's job.","icon":"settings"}],"related":[{"href":"/project/kbveitemdb/","title":"KBVEItemDB","copy":"Item database and inventory plugin that persists through KBVESQLite.","icon":"inventory"},{"href":"/project/kbvezstd/","title":"KBVEZstd","copy":"Compression plugin in the same Unreal plugin family.","icon":"package"}],"features_heading":"Access seam","related_heading":"Related"},"title":"KBVESQLite — Embedded SQLite Database Plugin for Unreal","tags":["unreal","database"],"sidebar":{"label":"KBVESQLite","order":93},"slug":"/project/kbvesqlite"},{"key":"ue_kbvesupabase","pipeline":"unreal","plugin_name":"KBVESupabase","plugin_path":"packages/unreal/KBVESupabase","dependency_plugins":"packages/unreal/KBVEROWS","source_path":"packages/unreal/KBVESupabase","version_toml":"packages/unreal/KBVESupabase/version.toml","version":"0.1.0","author":"h0lybyte","license":"KBVE","status":"active","min_engine_version":"5.4","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · backend · supabase","title":"Supabase account layer","accent":"KBVESupabase","lede":"A drop-in Supabase account layer for KBVE games on Unreal Engine 5 — GoTrue auth, JWT storage with auto-refresh, PostgREST helpers, storage, edge functions, and a realtime chat client, all Blueprint-friendly.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVESupabase","primary":true,"external":true},{"label":"Features","href":"#features"},{"label":"Usage","href":"#usage"}],"aside":{"icon":"key","title":"Blueprint-friendly","body":"Every public method is a <code>BlueprintCallable</code> <code>UFUNCTION</code> and delegates are <code>BlueprintAssignable</code>, so auth, database, storage, and chat wire up in Blueprints as well as C++.","points":["<strong>Depends on</strong> — KBVEROWS.","<strong>Config</strong> — via Project Settings."]},"stats":[{"label":"Plugin","value":"KBVESupabase","icon":"shield"},{"label":"Engine","value":"UE 5.4+","icon":"settings"},{"label":"Platforms","value":"Win64 · Linux · Mac","icon":"box"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"Auth","body":"Email/password, anonymous sign-in, magic-link OTP (email + SMS), password recovery, and full OAuth (Google/GitHub/Discord/Twitch/Apple/Azure) via PKCE and an RFC 8252 loopback flow.","icon":"key"},{"title":"Session management","body":"Refresh-token timer (RefreshLeadSeconds before expiry), persistent per-project disk session, and automatic refresh + retry on HTTP 401.","icon":"clock"},{"title":"JWT","body":"Client-side claims decode with kbve_username hoisted from user/app metadata to match the kbve.com GoTrue Custom Access Token hook.","icon":"lock"},{"title":"Storage","body":"UKBVESupabaseStorage for upload, download, list, sign URL, remove, move, copy, and public URL helpers.","icon":"package"},{"title":"Database (PostgREST)","body":"DbSelect / DbInsert / DbUpdate / DbDelete / DbUpsert / DbRpc plus raw RestRequest.","icon":"database"},{"title":"Edge Functions","body":"InvokeFunction(name, body) against /functions/v1/<name>.","icon":"zap"},{"title":"Chat","body":"UKBVESupabaseChat WebSocket client for the KBVE irc-gateway (chat.kbve.com/ws) with JWT-on-upgrade and backoff reconnect.","icon":"message"},{"title":"Blueprint-friendly","body":"All public methods are BlueprintCallable, delegates BlueprintAssignable, configured via Project Settings.","icon":"check"}],"related":[{"href":"/project/kbvelibgit/","title":"KBVELibGit","copy":"An editor-only KBVE Unreal plugin for installing Git-hosted plugins.","icon":"branch"}],"usage":{"label":"MyClass.cpp","lang":"cpp","code":"#include \"KBVESupabaseSubsystem.h\"\n\nUKBVESupabaseSubsystem* Sb = GetGameInstance()->GetSubsystem<UKBVESupabaseSubsystem>();\nSb->OnSignedIn.AddDynamic(this, &UMyClass::HandleSignedIn);\nSb->OnAuthError.AddDynamic(this, &UMyClass::HandleAuthError);\n\nSb->SignInWithPassword(TEXT(\"user@example.com\"), TEXT(\"hunter2\"));\n"},"features_heading":"Features","related_heading":"Related"},"title":"KBVESupabase — Supabase Auth and Data Plugin for UE5","tags":["unreal","backend","supabase"],"sidebar":{"label":"KBVESupabase","order":85},"slug":"/project/kbvesupabase"},{"key":"ue_kbvetinybvh","pipeline":"unreal","plugin_name":"KBVETinyBVH","plugin_path":"packages/unreal/KBVETinyBVH","source_path":"packages/unreal/KBVETinyBVH","version_toml":"packages/unreal/KBVETinyBVH/version.toml","version":"1.6.7","author":"h0lybyte","license":"KBVE","status":"active","min_engine_version":"5.4","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · raytracing","title":"Ray-tracing BVH for","accent":"KBVETinyBVH","lede":"An Unreal Engine wrapper for TinyBVH 1.6.7 — a single-header BVH (bounding volume hierarchy) construction and traversal library for ray tracing. It packages the upstream tiny_bvh.h header plus OpenCL and compute traversal kernels as a runtime third-party plugin.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVETinyBVH","primary":true,"external":true},{"label":"Features","href":"#features"}],"aside":{"icon":"render","title":"Traversal kernels bundled","body":"Ships OpenCL (<code>.cl</code>) and compute (<code>.comp</code>) traversal kernels for BVH2, BVH4, CWBVH, TLAS, and wavefront paths. Categorized as a Third Party plugin, <strong>not</strong> enabled by default.","points":["<strong>Upstream</strong> — jbikker/tinybvh, single-header.","<strong>Platforms</strong> — Win64, Linux, Mac."]},"stats":[{"label":"TinyBVH","value":"1.6.7","icon":"render"},{"label":"Min engine","value":"UE 5.4","icon":"box"},{"label":"Platforms","value":"Win · Linux · Mac","icon":"gears"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"Single-header BVH","body":"Wraps the upstream <code>tiny_bvh.h</code> library for compact BVH construction and traversal.","icon":"render"},{"title":"Ray-tracing ready","body":"Bundles OpenCL (<code>.cl</code>) and compute (<code>.comp</code>) traversal kernels for BVH2, BVH4, CWBVH, TLAS, and wavefront paths.","icon":"eye"},{"title":"Runtime third-party module","body":"Categorized as a Third Party plugin, loaded at the Default phase and not enabled by default.","icon":"gears"},{"title":"Cross-platform","body":"Builds for Win64, Linux, and Mac on Unreal Engine 5.4 and newer.","icon":"expand"}],"related":[{"href":"/project/kbvemapdb/","title":"KBVEMapDB","copy":"Sibling Unreal plugin from the KBVE package group.","icon":"map"},{"href":"/project/unreal-chuck-dev/","title":"Unreal Chuck Dev","copy":"UE5 game client that consumes KBVE Unreal plugins.","icon":"box"}],"related_heading":"Related"},"title":"KBVETinyBVH — Unreal TinyBVH Ray Tracing Plugin","tags":["unreal","raytracing"],"sidebar":{"label":"KBVETinyBVH","order":84},"slug":"/project/kbvetinybvh"},{"key":"ue_kbveui","pipeline":"unreal","plugin_name":"KBVEUI","plugin_path":"packages/unreal/KBVEUI","dependency_plugins":"packages/unreal/KBVEROWS packages/unreal/KBVESupabase","source_path":"packages/unreal/KBVEUI","version_toml":"packages/unreal/KBVEUI/version.toml","version":"0.1.0","author":"h0lybyte","license":"KBVE","status":"active","min_engine_version":"5.4","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · ui","title":"Shared Slate UI library","accent":"KBVEUI","lede":"A shared Slate UI component library for KBVE Unreal games — game-agnostic Core + Slate visual primitives like movable frames, settings rows, hotbar, slots, tooltips, info panels, an equipment paper-doll, a loading panel, and a dev overlay HUD.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVEUI","primary":true,"external":true},{"label":"Overview","href":"#overview"},{"label":"Modules","href":"#modules"}],"aside":{"icon":"box","title":"Core + Slate, dependency-light","body":"The base module stays Core + Slate so the primitives are game-agnostic. Domain-aware UI — Supabase auth, irc chat — composes on top via KBVEUIAuth and KBVEUIChat, pulling in Engine, HTTP, and KBVESupabase only when a game links them.","points":["<strong>State</strong> — <code>FKBVEUIState</code> panel-flag masks.","<strong>Dev HUD</strong> — <code>SKBVEDevOverlay</code> FPS/ms."]},"stats":[{"label":"Plugin","value":"KBVEUI","icon":"box"},{"label":"Modules","value":"3","icon":"package"},{"label":"Min engine","value":"UE 5.4","icon":"gears"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"Visual primitives","body":"Movable frames, settings rows (toggle / slider / combo), hotbar, slots, tooltips, and info panels.","icon":"expand"},{"title":"Equipment & loading panels","body":"SKBVEEquipmentPanel paper-doll (11 generic equip slots) and SKBVELoadingPanel full-screen loader.","icon":"inventory"},{"title":"UI state helpers","body":"FKBVEUIState tracks open panels and derives cursor / movement / camera policy without re-rolling the bitfield.","icon":"settings"},{"title":"Composable auth & chat","body":"KBVEUIAuth (Supabase login / account) and KBVEUIChat (irc-gateway window) layer on the pure base.","icon":"message"}],"related":[{"href":"/project/kbvesupabase/","title":"KBVESupabase","copy":"The Supabase subsystem KBVEUIAuth and KBVEUIChat drive.","icon":"shield"},{"href":"/project/kbverows/","title":"KBVEROWS","copy":"A dependency plugin used by the UI stack.","icon":"server"}],"related_heading":"Related"},"title":"KBVEUI — Shared Slate UI Component Library for Unreal","tags":["unreal","ui"],"sidebar":{"label":"KBVEUI","order":90},"slug":"/project/kbveui"},{"key":"ue_kbveulid","pipeline":"unreal","plugin_name":"KBVEULID","plugin_path":"packages/unreal/KBVEULID","source_path":"packages/unreal/KBVEULID","version_toml":"packages/unreal/KBVEULID/version.toml","version":"0.1.0","author":"h0lybyte","license":"KBVE","status":"active","min_engine_version":"5.4","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · utility · ulid","title":"ULID generator for","accent":"KBVEULID","lede":"An Unreal Engine 5 runtime plugin that generates ULIDs — Universally Lexicographically Sortable Identifiers. Each ID is 128 bits (a 48-bit millisecond timestamp plus 80 bits of FGuid-derived entropy) encoded as a 26-character Crockford Base32 string.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVEULID","primary":true,"external":true},{"label":"Features","href":"#features"},{"label":"Usage","href":"#usage"}],"aside":{"icon":"clock","title":"Sorts by creation time","body":"Because the timestamp leads, ULIDs sort by creation time — well suited to <strong>database IDs</strong>, replicated event IDs, save records, and marketplace lots.","points":["<strong>Runtime module</strong> — Default phase, no content deps.","<strong>Platforms</strong> — Win64, Linux, Mac."]},"stats":[{"label":"ULID","value":"128-bit","icon":"key"},{"label":"Encoding","value":"Base32","icon":"code"},{"label":"Min engine","value":"UE 5.4","icon":"box"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"128-bit ULIDs","body":"48-bit millisecond timestamp + 80-bit <code>FGuid</code> entropy.","icon":"key"},{"title":"Crockford Base32","body":"26-character string encoding via <code>FKBVEUlid::ToString()</code>.","icon":"code"},{"title":"Lexicographic sortability","body":"The timestamp prefix orders IDs by creation time.","icon":"clock"},{"title":"Lean runtime module","body":"A single <code>FKBVEUlid</code> struct plus <code>KBVEULID::Generate()</code>, loaded in the Default phase with no content dependencies.","icon":"gears"}],"related":[{"href":"/project/kbvenet/","title":"KBVENet","copy":"KBVE's Unreal networking plugin, which can carry ULID-keyed event IDs.","icon":"network"}],"usage":{"label":"KBVEULID.h","lang":"cpp","code":"#include \"KBVEULID.h\"\n\nFKBVEUlid Id = FKBVEUlid::New();\nFString IdStr = Id.ToString();\n\nFString Quick = KBVEULID::Generate();\n"},"related_heading":"Related"},"title":"KBVEULID — ULID Generator Plugin for Unreal Engine 5","tags":["unreal","utility","ulid"],"sidebar":{"label":"KBVEULID","order":83},"slug":"/project/kbveulid"},{"key":"ue_kbvewasm","pipeline":"unreal","plugin_name":"KBVEWASM","plugin_path":"packages/unreal/KBVEWASM","source_path":"packages/unreal/KBVEWASM","version_toml":"packages/unreal/KBVEWASM/version.toml","version":"2.2.0","author":"h0lybyte","license":"KBVE","status":"active","min_engine_version":"5.4","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · wasm","title":"WebAssembly runtime for","accent":"KBVEWASM","lede":"An Unreal Engine plugin wrapping the WebAssembly Micro Runtime (WAMR) 2.2.0, letting UE projects load and execute sandboxed WebAssembly modules from inside the engine — so logic authored in any Wasm-targeting language can run within UE across Win64, Linux, and Mac.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVEWASM","primary":true,"external":true},{"label":"Features","href":"#features"}],"aside":{"icon":"lock","title":"Sandboxed execution","body":"Runs WebAssembly modules in an isolated runtime rather than native UE code, so game and tooling logic authored in <strong>any</strong> Wasm-targeting language executes safely in-engine.","points":["<strong>Runtime</strong> — WAMR, lightweight and embeddable.","<strong>Platforms</strong> — Win64, Linux, Mac."]},"stats":[{"label":"WAMR","value":"2.2.0","icon":"package"},{"label":"Min engine","value":"UE 5.4","icon":"box"},{"label":"Platforms","value":"Win · Linux · Mac","icon":"gears"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"WAMR-backed runtime","body":"Embeds WebAssembly Micro Runtime 2.2.0 for executing Wasm modules in-engine.","icon":"package"},{"title":"Sandboxed execution","body":"Runs WebAssembly modules in an isolated runtime rather than native UE code.","icon":"lock"},{"title":"Cross-platform","body":"Supported on Win64, Linux, and Mac under Unreal Engine 5.4+.","icon":"expand"}],"related":[{"href":"/project/kbvenpcdb/","title":"KBVENPCDB","copy":"Another KBVE Unreal Engine plugin in the same collection.","icon":"database"},{"href":"/project/kbveagones/","title":"KBVEAgones","copy":"Server-side KBVE Unreal plugin bridging Agones and ROWS.","icon":"server"}],"related_heading":"Related"},"title":"KBVEWASM — WebAssembly Runtime Plugin for Unreal","tags":["unreal","wasm"],"sidebar":{"label":"KBVEWASM","order":94},"slug":"/project/kbvewasm"},{"key":"ue_kbvewebsurface","pipeline":"unreal","plugin_name":"KBVEWebSurface","plugin_path":"packages/unreal/KBVEWebSurface","source_path":"packages/unreal/KBVEWebSurface","version_toml":"packages/unreal/KBVEWebSurface/version.toml","version":"0.3.0","author":"h0lybyte","license":"MIT","status":"beta","min_engine_version":"5.6","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · web · ui","title":"Web content on 3D surfaces","accent":"KBVEWebSurface","lede":"A game-agnostic Unreal Engine plugin that renders interactive web content onto world surfaces — flat panels, curved or holographic meshes, and drop-in terminal or kiosk actors — built for reuse across chuckrpg, future KBVE titles, and external Fab distribution.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVEWebSurface","primary":true,"external":true},{"label":"Features","href":"#features"},{"label":"When to use","href":"#usecases"}],"aside":{"icon":"alert","title":"CEF is expensive","body":"The plugin ships a per-surface frame-rate cap, offscreen pause, snapshot fallback at distance, and a <code>UKBVEWebSurfacePool</code> LRU cap on concurrent live surfaces.","points":["<strong>Good for</strong> — marketplaces, social screens, admin terminals, billboards.","<strong>Not for</strong> — combat HUDs, per-NPC labels, hundreds of objects."]},"stats":[{"label":"Plugin","value":"KBVEWebSurface","icon":"render"},{"label":"Engine","value":"UE 5.6+","icon":"settings"},{"label":"Platforms","value":"Win64 · Linux · Mac","icon":"box"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Flat panel","body":"UKBVEWebSurfaceComponent wraps a UWidgetComponent with an embedded UMG WebBrowser.","icon":"render"},{"title":"Curved / holographic","body":"UKBVEWebRenderSurfaceComponent pipes the browser through a render target onto an arbitrary mesh + material.","icon":"expand"},{"title":"Actor","body":"AKBVEWebSurfaceActor ships as a drop-in for terminals and kiosks.","icon":"box"},{"title":"Input","body":"UKBVEWebInputRouter maps player line traces to widget-pixel coordinates. Hit UVs come from FindCollisionUV, so Support UV From Hit Results must be enabled on the project.","icon":"sensor"},{"title":"Bridge","body":"UKBVEWebBridge exposes a typed message bus between embedded JS and Blueprint/C++. Pages call window.kbveBridge.send(channel, payload); the bridge re-broadcasts via OnMessage.","icon":"network"},{"title":"Performance","body":"Per-surface frame-rate cap, offscreen pause, snapshot fallback at distance, and a UKBVEWebSurfacePool LRU cap on concurrent live surfaces.","icon":"zap"},{"title":"Backend","body":"The default backend wraps Unreal's stock UWebBrowser (CEF). Alternate backends (Ultralight, WebUI) plug in via IKBVEWebBackend as separate plugins.","icon":"settings"}],"related":[{"href":"/project/kbveui/","title":"KBVEUI","copy":"The Slate/UMG component library for HUD and in-game UI.","icon":"box"},{"href":"/project/marketplace/","title":"Marketplace","copy":"An auction-house surface KBVEWebSurface can render.","icon":"bag"}],"features_heading":"Features","related_heading":"Related"},"title":"KBVEWebSurface — Web Content on 3D Surfaces for Unreal","tags":["unreal","web","ui"],"sidebar":{"label":"KBVEWebSurface","order":95},"slug":"/project/kbvewebsurface"},{"key":"ue_kbveworld","pipeline":"unreal","plugin_name":"KBVEWorld","plugin_path":"packages/unreal/KBVEWorld","dependency_plugins":"packages/unreal/KBVESQLite packages/unreal/KBVEPerf","source_path":"packages/unreal/KBVEWorld","version_toml":"packages/unreal/KBVEWorld/version.toml","version":"0.1.0","author":"h0lybyte","license":"KBVE","status":"active","min_engine_version":"5.4","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · gameplay","title":"Procedural world toolkit","accent":"KBVEWorld","lede":"A game-agnostic procedural world toolkit for Unreal Engine. It generates noise-driven terrain chunks, caches them in SQLite, places grass and foliage asynchronously, supplies sky plus post-process defaults, and ships a hex-world module for hex-grid worlds.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVEWorld","primary":true,"external":true},{"label":"Key facts","href":"#facts"},{"label":"Features","href":"#features"}],"aside":{"icon":"map","title":"Three runtime modules","body":"KBVEWorld ships <code>KBVEWorldCore</code> (noise and seed), <code>KBVEWorld</code> (terrain, grass, foliage, chunk cache), and <code>KBVEHexWorld</code> (hex-grid world subsystems), backed by the in-repo KBVESQLite and KBVEPerf plugins.","points":["<strong>Depends</strong> — MassGameplay, ProceduralMeshComponent.","<strong>Cache</strong> — SQLite chunk blobs, rehydrated on demand."]},"stats":[{"label":"Plugin","value":"KBVEWorld","icon":"map"},{"label":"Modules","value":"3","icon":"package"},{"label":"Min engine","value":"UE 5.4","icon":"gears"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"Noise-driven terrain","body":"KBVEWorldCore provides seeds and noise; terrain chunk actors build meshes from the sampled heightfield.","icon":"map"},{"title":"SQLite chunk cache","body":"Generated chunks are persisted and rehydrated through the KBVESQLite-backed chunk cache and blob format.","icon":"database"},{"title":"Async grass & foliage","body":"HISM-based grass and foliage placement with GPU compute-shader placement, kept off the game thread.","icon":"zap"},{"title":"Hex world","body":"KBVEHexWorld adds hex-grid noise, seed, terrain, and environment subsystems for hex-tile worlds.","icon":"route"}],"related":[{"href":"/project/kbvepostshader/","title":"KBVEPostShader","copy":"Stylized post-process that complements the world sky defaults.","icon":"render"},{"href":"/project/kbveevents/","title":"KBVEEvents","copy":"Typed event bus used across KBVE Unreal plugins.","icon":"message"}],"related_heading":"Related"},"title":"KBVEWorld — Procedural World UE Plugin","tags":["unreal","gameplay"],"sidebar":{"label":"KBVEWorld","order":81},"slug":"/project/kbveworld"},{"key":"ue_kbvexxhash","pipeline":"unreal","plugin_name":"KBVEXXHash","plugin_path":"packages/unreal/KBVEXXHash","source_path":"packages/unreal/KBVEXXHash","version_toml":"packages/unreal/KBVEXXHash/version.toml","version":"0.8.3","author":"h0lybyte","license":"KBVE","status":"active","min_engine_version":"5.4","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · hashing","title":"Fast hashing for","accent":"KBVEXXHash","lede":"An Unreal Engine plugin wrapping xxHash 0.8.3, an extremely fast non-cryptographic hash algorithm. A runtime module for UE 5.4+ giving KBVE games a high-throughput hash for checksums, hash-table keys, and change detection.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVEXXHash","primary":true,"external":true},{"label":"Features","href":"#features"},{"label":"Usage","href":"#usage"}],"aside":{"icon":"alert","title":"Non-cryptographic","body":"xxHash is optimized for throughput — meant for checksums, hash tables, and change detection, <strong>not</strong> security. Do not use it where a cryptographic hash is required.","points":["<strong>Upstream</strong> — <a href=\"https://github.com/Cyan4973/xxHash\">Cyan4973/xxHash</a>.","<strong>Cross-platform</strong> — Win64, Linux, Mac."]},"stats":[{"label":"xxHash","value":"0.8.3","icon":"key"},{"label":"Min engine","value":"UE 5.4","icon":"box"},{"label":"Platforms","value":"Win · Linux · Mac","icon":"gears"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"xxHash 0.8.3 wrapper","body":"Bundles the upstream library as a UE third-party dependency.","icon":"key"},{"title":"Runtime module","body":"Loads in the Default phase for use during gameplay.","icon":"gears"},{"title":"Non-cryptographic speed","body":"Optimized for throughput on checksums and lookups.","icon":"zap"},{"title":"Cross-platform","body":"Builds for Win64, Linux, and Mac.","icon":"expand"}],"related":[{"href":"/project/kbvezstd/","title":"KBVEZstd","copy":"Zstandard compression plugin for Unreal.","icon":"package"},{"href":"/project/kbveyyjson/","title":"KBVEYYJson","copy":"Fast JSON parsing plugin for Unreal.","icon":"code"},{"href":"/project/uedevops/","title":"UEDevOps","copy":"DevOps toolkit that depends on KBVEXXHash.","icon":"gears"}],"related_heading":"Related"},"title":"KBVEXXHash — Fast Hashing Plugin for Unreal","tags":["unreal","hashing"],"sidebar":{"label":"KBVEXXHash","order":90},"slug":"/project/kbvexxhash"},{"key":"ue_kbveyyjson","pipeline":"unreal","plugin_name":"KBVEYYJson","plugin_path":"packages/unreal/KBVEYYJson","source_path":"packages/unreal/KBVEYYJson","version_toml":"packages/unreal/KBVEYYJson/version.toml","version":"0.12.0","author":"h0lybyte","license":"KBVE","status":"active","min_engine_version":"5.4","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · json","title":"High-performance JSON for","accent":"KBVEYYJson","lede":"An Unreal Engine 5 plugin wrapping yyjson 0.12.0, a high-performance C JSON library. It gives KBVE Unreal projects low-overhead JSON parsing and serialization through a single runtime module, replacing the slower built-in engine JSON utilities for high-volume payloads.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVEYYJson","primary":true,"external":true},{"label":"Features","href":"#features"}],"aside":{"icon":"zap","title":"Opt-in, one JSON provider","body":"A single <code>KBVEYYJson</code> runtime module in the default phase. Third-party category, <strong>not</strong> enabled by default, so projects pull it in only where fast JSON matters.","points":["<strong>Upstream</strong> — yyjson, MIT licensed.","<strong>Fit</strong> — ROWS backend payloads, codegen databases."]},"stats":[{"label":"yyjson","value":"0.12.0","icon":"code"},{"label":"Min engine","value":"UE 5.4","icon":"box"},{"label":"Platforms","value":"Win · Linux · Mac","icon":"gears"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"yyjson-backed","body":"Wraps the yyjson 0.12.0 C library for fast JSON parsing and serialization.","icon":"code"},{"title":"Runtime module","body":"A single <code>KBVEYYJson</code> runtime module loaded in the default phase.","icon":"gears"},{"title":"Cross-platform","body":"Builds on Win64, Linux, and Mac under UE 5.4+.","icon":"expand"},{"title":"Opt-in","body":"Third-party category, not enabled by default, so projects pull it in only where fast JSON matters.","icon":"check"}],"related":[{"href":"/project/kbverows/","title":"KBVEROWS","copy":"ROWS backend plugin that serializes REST payloads.","icon":"server"},{"href":"/project/kbvehexworld/","title":"KBVEHexWorld","copy":"Sibling KBVE Unreal world module.","icon":"map"}],"related_heading":"Related"},"title":"KBVEYYJson — High-Performance yyjson JSON Plugin for Unreal","tags":["unreal","json"],"sidebar":{"label":"KBVEYYJson","order":91},"slug":"/project/kbveyyjson"},{"key":"ue_kbvezstd","pipeline":"unreal","plugin_name":"KBVEZstd","plugin_path":"packages/unreal/KBVEZstd","source_path":"packages/unreal/KBVEZstd","version_toml":"packages/unreal/KBVEZstd/version.toml","version":"1.5.7","author":"h0lybyte","license":"KBVE","status":"active","min_engine_version":"5.4","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · compression","title":"Zstandard compression for","accent":"KBVEZstd","lede":"An Unreal Engine plugin wrapping Facebook's Zstandard (zstd) 1.5.7, bringing fast real-time lossless compression into Unreal projects as a Third Party runtime module that vendors a single zstd provider.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/KBVEZstd","primary":true,"external":true},{"label":"Features","href":"#features"}],"aside":{"icon":"package","title":"One zstd provider","body":"The Facebook Zstandard amalgamation ships as a vendored Third Party dependency, so projects link exactly one <code>zstd</code> provider. The runtime module <code>FKBVEZstdModule</code> is opt-in, not enabled by default.","points":["<strong>Loading</strong> — loads at the Default phase.","<strong>Fit</strong> — save data, world chunks, network payloads."]},"stats":[{"label":"zstd","value":"1.5.7","icon":"package"},{"label":"Min engine","value":"UE 5.4","icon":"box"},{"label":"Platforms","value":"Win · Linux · Mac","icon":"gears"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"Vendored zstd 1.5.7","body":"The Facebook Zstandard amalgamation is included as a Third Party dependency, so projects link one zstd provider.","icon":"package"},{"title":"Runtime module","body":"<code>FKBVEZstdModule</code> loads at the Default phase; not enabled by default, opt in per project.","icon":"gears"},{"title":"Cross-platform","body":"Builds for Win64, Linux, and Mac.","icon":"expand"},{"title":"Real-time friendly","body":"Zstandard's ratio-to-speed trade-off suits save data, world chunks, and network payloads.","icon":"zap"}],"related":[{"href":"/project/kbvesqlite/","title":"KBVESQLite","copy":"Embedded SQLite database plugin that pairs with compression for persistence.","icon":"database"},{"href":"/project/kbveitemdb/","title":"KBVEItemDB","copy":"Item database plugin in the same Unreal plugin family.","icon":"inventory"}],"related_heading":"Related"},"title":"KBVEZstd — Zstandard Compression Plugin for Unreal","tags":["unreal","compression"],"sidebar":{"label":"KBVEZstd","order":92},"slug":"/project/kbvezstd"},{"key":"khashvault","pipeline":"npm","package_name":"khashvault","source_path":"packages/npm/khashvault","version_toml":"packages/npm/khashvault/version.toml","version":"1.0.12","author":"h0lybyte","license":"MIT","status":"active","bento":{"badge":"npm · crypto · webcrypto","title":"Browser crypto & secure storage —","accent":"KhashVault","lede":"A browser-side cryptography and secure-storage library built on the Web Crypto API and OpenPGP. It bundles symmetric encryption, hashing, key derivation, PGP key management, and encrypted persistence behind a small TypeScript API, with optional Web Worker offloading for heavy operations.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/npm/khashvault","primary":true,"external":true},{"label":"Features","href":"#features"}],"aside":{"icon":"lock","title":"Off-thread crypto","body":"KhashVaultWorkerClient plus SharedArrayBuffer helpers let heavy crypto run off the main thread in cross-origin-isolated contexts.","points":["<strong>Foundations</strong> — Web Crypto API + OpenPGP.","<strong>Storage</strong> — SecureLocalStorage + SecureIndexedDB."]},"stats":[{"label":"Language","value":"TypeScript","icon":"code"},{"label":"Symmetric","value":"AES-GCM","icon":"lock"},{"label":"Keys","value":"PGP + PBKDF2","icon":"key"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"AES-GCM encryption","body":"aesEncrypt / aesDecrypt plus password-based variants.","icon":"lock"},{"title":"Hashing","body":"sha256, sha512, and generic hash / hashBytes.","icon":"shield"},{"title":"Key derivation","body":"deriveKey and deriveRawBits (PBKDF2).","icon":"key"},{"title":"Key management","body":"generateAesKey, exportKey, importKey, randomBytes.","icon":"key"},{"title":"PGP","body":"pgpGenerateKeyPair, pgpEncrypt, pgpDecrypt via OpenPGP.","icon":"shield"},{"title":"Secure storage","body":"SecureLocalStorage and SecureIndexedDB for encrypted browser persistence.","icon":"database"},{"title":"Web Worker offload","body":"KhashVaultWorkerClient with SharedArrayBuffer helpers for cross-origin-isolated contexts.","icon":"gears"}],"related":[{"href":"/project/devops/","title":"DevOps","copy":"A companion KBVE npm helper library for CI/CD and codegen.","icon":"gears"}],"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related"},"title":"KhashVault — Browser Cryptography and Secure Storage","tags":["npm","crypto","webcrypto"],"sidebar":{"label":"KhashVault","order":63},"slug":"/project/khashvault"},{"key":"kilobase","pipeline":"docker","app_name":"kilobase","source_path":"apps/kbve/kilobase","version_toml":"apps/kbve/kilobase/version.toml","version":"17.6.1","author":"h0lybyte","license":"KBVE","status":"active","runner":"ubuntu-latest","image":"kbve/kilobase","has_test":false,"bento":{"badge":"docker · database","title":"Custom Supabase Postgres with","accent":"pgrx","lede":"KBVE's custom Supabase-based PostgreSQL image. It builds a pgrx Rust extension plus pg_failover_slots against PostgreSQL 17 and bakes them into a Supabase-compatible container — shipping extra SQL functions (backed by the jedi library) without forking the upstream database.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/kbve/kilobase","primary":true,"external":true},{"label":"Features","href":"#features"}],"aside":{"icon":"database","title":"jedi regex inside Postgres","body":"The kilobase extension compiles Rust into a Postgres <code>cdylib</code>, exposing immutable, parallel-safe functions like <code>pgrx_extract_email</code> that reuse zero-copy jedi regex helpers so extraction runs directly inside the database.","points":["<strong>Base</strong> — Supabase Postgres (PostgreSQL 17).","<strong>Toolchain</strong> — cargo-pgrx 0.16.1."]},"stats":[{"label":"App","value":"kilobase","icon":"box"},{"label":"Image","value":"ghcr.io/kbve/kilobase","icon":"database"},{"label":"Base","value":"PostgreSQL 17","icon":"database"},{"label":"Toolchain","value":"cargo-pgrx 0.16.1","icon":"rust"}],"features":[{"title":"Custom pgrx extension","body":"Compiles Rust into a Postgres cdylib, exposing immutable, parallel-safe functions like pgrx_extract_email and pgrx_extract_github_username.","icon":"rust"},{"title":"jedi integration","body":"Reuses zero-copy regex helpers from the jedi library so extraction runs directly inside Postgres.","icon":"zap"},{"title":"Failover slots","body":"pg_failover_slots is built and layered in for replication slot failover.","icon":"branch"},{"title":"Supabase-compatible","body":"Extends the upstream Supabase Postgres image rather than forking it, tagged after the base version.","icon":"database"}],"related":[{"href":"/project/bevy-supa-crate/","title":"bevy_supa","copy":"Supabase/PostgREST client crate that can target this database.","icon":"shield"},{"href":"/project/arc-runner/","title":"ARC Runner","copy":"CI runner that bakes the dbmate migrator used against Kilobase.","icon":"gears"}],"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related"},"title":"Kilobase — Custom Supabase Postgres Image with pgrx","tags":["docker","database"],"sidebar":{"label":"Kilobase","order":54},"slug":"/project/kilobase"},{"key":"kubectl","pipeline":"docker","app_name":"kbve-kubectl","source_path":"apps/vm/kubectl","version_toml":"apps/vm/kubectl/version.toml","version":"0.1.10","author":"h0lybyte","license":"KBVE","status":"active","runner":"arc-runner-set","image":"kbve/kubectl","e2e_name":"kubectl-e2e","deployment_yamls":["apps/kube/kubevirt/autologon/job.yaml","apps/kube/kubevirt/autologon/scaled-job.yaml","apps/kube/kubevirt/runner/job.yaml","apps/kube/kubevirt/runner/scaled-job.yaml","apps/kube/kubevirt/keda/scaled-jobs.yaml","apps/kube/agones/factorio/manifests/rotation-deployment.yaml","apps/kube/agones/palworld/manifests/rotation-deployment.yaml","apps/kube/agones/palworld/jobs/config-restart-job.yaml","apps/kube/namespace/manifests/pod-gc-cronjob.yaml","apps/kube/ca-staleness-monitor/manifests/ca-staleness-monitor.yaml","apps/kube/crossplane/providers/s3-healthcheck-cronjob.yaml","apps/kube/github/runners/manifests/runner-reaper.yaml","apps/kube/forgejo/manifest/forgejo-oauth-register-job.yaml","apps/kube/kilobase/manifests/backup-restore-test.yaml","apps/kube/kilobase/manifests/backup-watchdog.yaml"],"version_target":"apps/vm/kubectl/Cargo.toml","has_test":true,"test_framework":"typescript","kube":{"stack":"infrastructure","environment":"prod","tier":"api","owner":"h0lybyte","criticality":"critical"},"bento":{"badge":"docker · rust · kubernetes · kubevirt","title":"Alpine musl kubectl with a","accent":"Rust CLI","lede":"An Alpine + musl kubectl container image with Rust CLI extensions for KubeVirt VM lifecycle management and Agones GameServer rotation. Built end-to-end on rust:alpine so the binary has zero glibc dependencies, it replaces the distroless kubectl image that lacks /bin/sh.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/vm/kubectl","primary":true,"external":true},{"label":"CLI","href":"#overview"},{"label":"Usage","href":"#usage"}],"aside":{"icon":"server","title":"Shell-capable by design","body":"The distroless <code>registry.k8s.io/kubectl</code> image lacks <code>/bin/sh</code> and breaks Kubernetes Job scripts. This image ships Alpine ash plus a static musl Rust CLI, so Jobs can run shell and drive KubeVirt VMs from one artifact.","points":["<strong>guest-exec</strong> — run commands inside a KubeVirt VM.","<strong>rotate-gameserver</strong> — roll a drifted Agones GameServer."]},"stats":[{"label":"App","value":"kbve-kubectl","icon":"box"},{"label":"Base","value":"Alpine + musl","icon":"package"},{"label":"Image","value":"kbve/kubectl","icon":"box"},{"label":"CLI","value":"Rust","icon":"rust"}],"features":[{"title":"Shell-capable image","body":"Ships /bin/sh (Alpine ash) so Kubernetes Job scripts run, unlike the distroless upstream.","icon":"code"},{"title":"Static musl Rust CLI","body":"kbve-kubectl is built on rust:alpine with zero glibc dependencies.","icon":"rust"},{"title":"guest-exec into VMs","body":"Runs commands inside a KubeVirt VM via the QEMU Guest Agent.","icon":"server"},{"title":"rotate-gameserver","body":"Rolls an Agones GameServer when its desired image drifts from the running pod (delete-only; ArgoCD recreates).","icon":"gears"},{"title":"Pinned across manifests","body":"One image tag is kept in sync across every manifest in the deployment_yamls field via the post-publish version sync.","icon":"deploy"}],"related":[{"href":"/project/aria2-proxy/","title":"Aria2 Proxy","copy":"Download-proxy image used alongside kubectl in KubeVirt provisioning.","icon":"box"}],"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related"},"title":"KBVE Kubectl — Alpine musl kubectl Image with Rust CLI","tags":["docker","rust","kubernetes","kubevirt"],"sidebar":{"label":"Kubectl","order":55},"slug":"/project/kubectl"},{"key":"laser","pipeline":"npm","package_name":"laser","source_path":"packages/npm/laser","version_toml":"packages/npm/laser/version.toml","version":"0.2.0","author":"h0lybyte","license":"MIT","status":"active","bento":{"badge":"npm · typescript · phaser · react · gamedev","title":"Phaser + R3F for React 19 —","accent":"Laser","lede":"A lightweight integration layer for Phaser and React Three Fiber (R3F) in React 19 applications. It provides React hooks and components for embedding Phaser games and R3F scenes with a shared event bus, used across KBVE's browser games as the glue between the game canvas and the React tree.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/npm/laser","primary":true,"external":true},{"label":"Features","href":"#features"},{"label":"Usage","href":"#usage"}],"aside":{"icon":"zap","title":"Hybrid 2D/3D UIs","body":"A shared LaserEventBus decouples communication between the Phaser and R3F layers, so 2D game canvases and 3D scenes stay wired to the same React tree.","points":["<strong>Peers</strong> — react/react-dom (>= 18), required.","<strong>Optional</strong> — Phaser (>= 3.80), three (>= 0.160) + fiber/drei."]},"stats":[{"label":"Language","value":"TypeScript","icon":"code"},{"label":"Registry","value":"npm","icon":"package"},{"label":"Targets","value":"Phaser + R3F","icon":"render"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Phaser integration","body":"A PhaserGame component with ref-based access, a usePhaserGame context hook, and usePhaserEvent for subscribing to Phaser events.","icon":"box"},{"title":"React Three Fiber integration","body":"A Stage component and a useGameLoop hook for frame-synced game logic.","icon":"render"},{"title":"Shared event bus","body":"LaserEventBus for decoupled communication between the Phaser and R3F layers.","icon":"network"},{"title":"TypeScript-first","body":"Full type definitions with exported types for configs, events, and geometry primitives.","icon":"code"}],"related":[{"href":"/project/droid/","title":"Droid","copy":"Sibling KBVE npm package managing web, shared, and service workers.","icon":"gears"}],"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related"},"title":"Laser — Phaser + React Three Fiber Integration for React 19","tags":["npm","typescript","phaser","react","gamedev"],"sidebar":{"label":"Laser","order":61},"slug":"/project/laser"},{"unsplash":"1602089266537-57cb22e5235b","img":"https://images.unsplash.com/photo-1602089266537-57cb22e5235b?fit=crop&w=1400&h=700&q=75","bento":{"badge":"design","title":"AI lo-fi that follows","accent":"your reading","lede":"A Chrome extension that auto-generates lo-fi music from whatever page you are reading — page metadata to ChatGPT prompts to a custom-trained MusicGen model, streamed back as an ambient track to help you focus.","ctas":[{"label":"Live demo","href":"https://lofifocus.kbve.com/#","primary":true,"external":true},{"label":"Chrome extension repo","href":"https://github.com/KBVE/lofifocus-chrome-extension","external":true},{"label":"Overview","href":"#overview"}],"aside":{"icon":"activity","title":"Custom-trained MusicGen","body":"The team fine-tuned Facebook's MusicGen small model on non-copyright lo-fi clips paired with descriptive text prompts — 100 epochs at a 1e-5 learning rate on an RTX 4090.","points":["<strong>Dataset</strong> — 30s clips paired with mood/instrument prompts.","<strong>Pipeline</strong> — N8N + ChatGPT prompts to a Flask MusicGen API."]},"stats":[{"label":"Model","value":"MusicGen","icon":"activity"},{"label":"Training","value":"100 epochs","icon":"chart"},{"label":"GPU","value":"RTX 4090","icon":"server"},{"label":"Extension","value":"Chrome","icon":"package"}],"features":[{"title":"Reads the page","body":"Content scripts analyze the current webpage and hand its metadata to the generation pipeline.","icon":"eye"},{"title":"AI-generated lo-fi","body":"A unique, customized lo-fi track is generated per page via AudioCraft's MusicGen model.","icon":"activity"},{"title":"N8N + Flask pipeline","body":"An N8N workflow orchestrates ChatGPT prompts and a Python Flask REST API that drives generation on GPU.","icon":"gears"},{"title":"In-browser controls","body":"Adjust volume, pause, start, play, and re-generate the lo-fi music from a polished popup UI.","icon":"settings"}],"related":[{"href":"/project/charles/","title":"Charles","copy":"The KBVE GPU machine-learning build behind model training.","icon":"server"}],"features_eyebrow":"What it does","features_heading":"Features","related_heading":"Related"},"title":"LofiFocus — AI Lo-Fi Music Generator Chrome Extension","tags":["design"],"sidebar":{"label":"LofiFocus","order":15},"slug":"/project/lofifocus"},{"unsplash":"1590840960672-db24958eef9a","img":"https://images.unsplash.com/photo-1590840960672-db24958eef9a?fit=crop&w=1400&h=700&q=75","bento":{"badge":"gamedev · gaming · rust · proto · assets","title":"Open catalog for game","accent":"Assets","lede":"An open marketplace for game assets — think Fab / itch.io / CraftPix / GameDevMarket, scoped strictly to game assets: 3D models, 2D art, audio, VFX, shaders, tools/plugins, and complete projects. A decoupled Rust/Axum API sharing KBVE identity, media, transport, and vocabulary with the Job Board.","ctas":[{"label":"Architecture","href":"#architecture","primary":true},{"label":"Licensing","href":"#licensing"},{"label":"Preview gating","href":"#preview-gating"},{"label":"Protobuf","href":"#protobuf"}],"aside":{"icon":"shield","title":"Private source, public previews","body":"The buyer never sees or receives the real asset before they're entitled to it. Listings show derived, watermarked, degraded previews generated server-side; source files stay private and grant-gated.","points":["<strong>Game-native</strong> — engine/format facets, not generic categories.","<strong>Shared identity</strong> — one KBVE account across both products."]},"stats":[{"label":"Status","value":"Spec / arch","icon":"book"},{"label":"Stack","value":"Rust + Axum","icon":"rust"},{"label":"Storage","value":"Cloudflare R2","icon":"database"},{"label":"Wire","value":"protobuf","icon":"network"}],"features":[{"title":"Game-native catalog","body":"Categories and facets speak game dev — engine version, render pipeline, tris/verts, humanoid rig, atlas size, sample rate — not generic graphics/audio.","icon":"box"},{"title":"Open supply, curated trust","body":"Anyone can list (volume), but verification badges, ratings, and moderation surface quality. Trust is earned and displayed, not gatekept at the door.","icon":"shield"},{"title":"Shared ecosystem","body":"One KBVE account, one identity, one engine/tool vocabulary across the Job Board and the Asset Marketplace — a freelancer can take gigs and sell assets.","icon":"expand"},{"title":"Preview protection","body":"Source files live in private R2 with no public URL, served only via short-lived signed URLs gated on a LicenseGrant; the public only ever sees watermarked derivatives.","icon":"lock"}],"related":[{"href":"/project/jobboard/","title":"Job Board","copy":"The sibling product that sells services — shares identity, media, transport, and vocabulary.","icon":"server"}],"related_heading":"Related"},"title":"Asset Marketplace","tags":["gamedev","gaming","rust","proto","assets"],"sidebar":{"label":"Asset Marketplace","order":51,"badge":{"text":"New","variant":"tip"}},"slug":"/project/marketplace"},{"key":"mc","pipeline":"docker","app_name":"mc","source_path":"apps/mc","version_toml":"apps/mc/version.toml","version":"1.0.67","runner":"ubuntu-latest","image":"kbve/mc","e2e_name":"mc","deployment_yaml":"apps/kube/agones/mc/manifests/fleet.yaml","has_test":true,"external_publish":{"modrinth_mod_id":"QoFCg0tO","modrinth_pack_id":"86Wqkiak","modrinth_version_type":"release","modrinth_game_versions":"[\"1.21.11\"]","modrinth_loaders":"[\"fabric\"]","modrinth_server_address":"mc.kbve.com"},"kube":{"stack":"agones","environment":"prod","tier":"api","owner":"h0lybyte","criticality":"high"},"bento":{"badge":"minecraft · agones · fabric","title":"Fabric Minecraft on","accent":"Agones","lede":"A Fabric Minecraft 1.21.11 dedicated server deployed via Agones on Kubernetes. A multi-stage Docker build compiles a Rust JNI behavior-tree AI mod and bundles it alongside a performance mod stack, an Old Combat Mod, and Modrinth mods.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/mc","primary":true,"external":true},{"label":"Mod stack","href":"#mods"}],"aside":{"icon":"gears","title":"Rust AI over JNI","body":"<code>behavior_statetree</code> is a Rust/Tokio NPC AI mod compiled to a <code>cdylib</code>, bundled into the server JAR via Gradle/Fabric Loom and a Docker multi-stage build, driving NPC behavior over JNI.","points":["<strong>Loader</strong> — Fabric, Minecraft 1.21.11.","<strong>Orchestration</strong> — Agones Fleet on Kubernetes."]},"stats":[{"label":"Image","value":"kbve/mc","icon":"box"},{"label":"Loader","value":"Fabric 1.21.11","icon":"package"},{"label":"Base","value":"itzg java21","icon":"server"},{"label":"Orchestration","value":"Agones Fleet","icon":"server"}],"features":[{"title":"Fabric performance stack","body":"C2ME, VMP, Lithium, FerriteCore, ServerCore, and Chunky for chunk, memory, and server optimization.","icon":"zap"},{"title":"Old Combat Mod","body":"Restores 1.8-style combat mechanics.","icon":"sword"},{"title":"Rust JNI AI","body":"behavior_statetree NPC AI compiled to a cdylib and bundled via Loom.","icon":"gears"},{"title":"Agones Fleet","body":"Scheduled and scaled as an Agones GameServer fleet.","icon":"server"}],"related":[{"href":"/project/agones-factorio/","title":"Agones Factorio","copy":"Sibling Agones dedicated server.","icon":"server"},{"href":"/project/agones/","title":"Agones","copy":"The game-server orchestration platform.","icon":"server"},{"href":"https://github.com/KBVE/kbve/tree/main/apps/mc/behavior_statetree","title":"behavior_statetree","copy":"Rust AI mod source.","icon":"github"}],"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related"},"title":"Minecraft Server — Fabric on Agones","tags":["minecraft","agones","fabric"],"sidebar":{"label":"Minecraft","order":450},"slug":"/project/mc"},{"key":"mc_lobby","pipeline":"docker","app_name":"mc-lobby","source_path":"apps/mc/lobby","version_toml":"apps/mc/lobby/version.toml","version":"1.0.11","runner":"ubuntu-latest","image":"kbve/mc-lobby","e2e_name":"mc-lobby","deployment_yaml":"apps/kube/agones/mc/manifests/lobby-deployment.yaml","has_test":true,"kube":{"stack":"application","environment":"prod","tier":"api","owner":"h0lybyte","criticality":"high"},"bento":{"badge":"minecraft · paper · lobby · velocity","title":"PaperMC landing &","accent":"fallback","lede":"A PaperMC 1.21.11 lobby server that sits alongside the Fabric survival backend in the KBVE MC stack. It is the first server new players land on and the fallback when the Fabric backend disconnects — instead of being kicked, players are moved here until Fabric comes back.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/mc/lobby","primary":true,"external":true},{"label":"World & plugins","href":"#world"},{"label":"Velocity","href":"#velocity"}],"aside":{"icon":"map","title":"Superflat peaceful world","body":"A vanilla superflat preset (bedrock + 2 dirt + grass, plains biome, no structures, no mob spawning) with <code>DIFFICULTY=peaceful</code> for zero combat. Nether and End are disabled, keeping all activity on the overworld.","points":["<strong>Default</strong> — the proxy's first try target.","<strong>Fallback</strong> — catches players when mc disconnects."]},"stats":[{"label":"App","value":"mc-lobby","icon":"box"},{"label":"Type","value":"PaperMC 1.21.11","icon":"package"},{"label":"World","value":"Superflat peaceful","icon":"map"},{"label":"Role","value":"Lobby + fallback","icon":"server"}],"features":[{"title":"Default landing target","body":"The first server new players connect to, listed as the Velocity proxy's default try target.","icon":"route"},{"title":"Failover fallback","body":"failover-on-unexpected-server-disconnect routes disconnected mc players back here instead of kicking them.","icon":"shield"},{"title":"Superflat peaceful world","body":"Vanilla superflat, plains biome, peaceful difficulty, Nether and End disabled — zero combat.","icon":"map"},{"title":"Cross-server permissions","body":"LuckPerms syncs permissions over the pluginmsg channel, same wire format as Fabric + Velocity.","icon":"key"},{"title":"Velocity forwarding","body":"Paper native Velocity forwarding via the paper-global.yml secret, registered with the proxy as lobby.","icon":"network"}],"related":[{"href":"/project/mc/","title":"mc (Fabric survival backend)","copy":"The Fabric survival backend the lobby falls back from.","icon":"box"},{"href":"/project/mc-velocity/","title":"mc-velocity","copy":"Custom Velocity proxy + command plugin fronting the stack.","icon":"network"}],"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related"},"title":"Minecraft Lobby — PaperMC Landing and Fallback Server","tags":["minecraft","paper","lobby","velocity"],"sidebar":{"label":"MC Lobby","order":451},"slug":"/project/mc-lobby"},{"key":"mc_velocity","pipeline":"docker","app_name":"mc-velocity","source_path":"apps/mc/velocity","version_toml":"apps/mc/velocity/version.toml","version":"1.1.13","runner":"ubuntu-latest","image":"kbve/mc-velocity","e2e_name":"mc-velocity","deployment_yaml":"apps/kube/agones/mc/manifests/velocity-deployment.yaml","has_test":true,"kube":{"stack":"application","environment":"prod","tier":"api","owner":"h0lybyte","criticality":"high"},"bento":{"badge":"minecraft · velocity · proxy · kotlin","title":"Velocity proxy with","accent":"Kotlin plugins","lede":"A custom Velocity 3.4 proxy image that swaps the generic itzg/bungeecord base for two source-built Kotlin plugins — teleport aliases, a cross-server chat bridge, last-server persistence, and a Discord chat relay.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/mc/velocity","primary":true,"external":true},{"label":"Discord relay","href":"#relay"},{"label":"Build","href":"#build"}],"aside":{"icon":"package","title":"Independently rollable","body":"The two plugins have separate <code>@Plugin</code> IDs, versions, and no source dependency, so they can be enabled, disabled, and rolled back independently even though they ship in one image.","points":["<strong>Commands</strong> — teleport, chat bridge, last-server.","<strong>Relay</strong> — MC ↔ Discord chat with staff commands."]},"stats":[{"label":"App","value":"mc-velocity","icon":"server"},{"label":"Proxy","value":"Velocity 3.4","icon":"network"},{"label":"Plugins","value":"2 Kotlin","icon":"package"},{"label":"Runtime","value":"JDK 21","icon":"box"}],"features":[{"title":"Teleport command aliases","body":"Brigadier commands — /lobby, /hub route to the PaperMC lobby; /mc, /survival route to the Fabric survival backend.","icon":"route"},{"title":"Cross-server chat bridge","body":"Per-player local/global chat mode in an in-memory map, toggled via /chat; global re-emits a server-tagged component to every backend.","icon":"message"},{"title":"Last-server persistence","body":"Tracks the last backend a player joined and restores it on reconnect, falling back to Velocity's normal try list.","icon":"clock"},{"title":"Discord chat relay","body":"kbve-discord-relay bridges in-game chat to and from a Discord channel via a self-provisioned webhook, with role-gated console commands.","icon":"discord"}],"related":[{"href":"/project/mc/","title":"mc (Fabric survival backend)","copy":"The survival backend the /mc and /survival aliases connect to.","icon":"box"},{"href":"/project/mc-lobby/","title":"mc-lobby (PaperMC lobby)","copy":"The PaperMC lobby the /lobby and /hub aliases connect to.","icon":"box"}],"related_heading":"Related"},"title":"Minecraft Velocity Proxy — Kotlin Plugins","tags":["minecraft","velocity","proxy","kotlin"],"sidebar":{"label":"MC Velocity","order":452},"slug":"/project/mc-velocity"},{"key":"memes","pipeline":"docker","app_name":"memes","source_path":"apps/memes","version_toml":"apps/memes/version.toml","version":"0.1.9","author":"h0lybyte","license":"KBVE","status":"active","runner":"ubuntu-latest","image":"kbve/memes","e2e_name":"memes","deployment_yaml":"apps/kube/memes/manifest/memes-deployment.yaml","version_target":"apps/memes/axum-memes/Cargo.toml","has_test":true,"kube":{"stack":"application","environment":"prod","tier":"web","owner":"h0lybyte","criticality":"high"},"bento":{"badge":"docker · web","title":"The web service behind","accent":"meme.sh","lede":"The KBVE web service behind meme.sh — an axum + Askama Rust backend and an Astro static frontend, packaged as kbve/memes and served through a Cilium gateway on Kubernetes.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/memes","primary":true,"external":true},{"label":"Routing","href":"#routing"},{"label":"Gateway gotcha","href":"#gotcha"}],"aside":{"icon":"shield","title":"One listener per multi-SAN cert","body":"Cilium derives the Envoy filter chain SNI list from the <strong>cert SAN</strong>, not the listener hostname. Splitting apex and www across two listeners on one cert emits duplicate filter chain matches that Envoy rejects — a silent fall-through 404.","points":["<strong>Do</strong> — one listener, HTTPRoute enumerates hostnames.","<strong>Or</strong> — one cert per hostname so SNI lists don't collide."]},"stats":[{"label":"App","value":"memes","icon":"server"},{"label":"Domain","value":"meme.sh","icon":"network"},{"label":"Stack","value":"axum + Astro","icon":"rust"},{"label":"Service","value":"memes-service:4321","icon":"activity"}],"features":[{"title":"Askama-templated backend","body":"apps/memes/axum-memes is a Rust backend rendering Askama templates behind the meme.sh origin.","icon":"code"},{"title":"Astro static frontend","body":"apps/memes/astro-memes builds the static frontend packaged alongside the backend into the kbve/memes image.","icon":"box"},{"title":"Cilium gateway routing","body":"Cloudflare → gateway.kbve.com → Cilium LB → kbve-gateway https-memes listener → memes-route → memes-service:4321.","icon":"network"},{"title":"Cross-namespace TLS","body":"memes-cert (RSA 2048, letsencrypt-http HTTP-01) lives in memes/memes-tls and is consumed by kbve-gateway via a ReferenceGrant.","icon":"lock"}],"related":[{"href":"/project/firecracker-node-web/","title":"Firecracker Node Web","copy":"A sibling Docker-pipeline service in the KBVE stack.","icon":"box"}],"related_heading":"Related"},"title":"Memes — meme.sh Axum + Astro Web Service on Kubernetes","tags":["docker","web"],"sidebar":{"label":"Memes","order":50},"slug":"/project/memes"},{"unsplash":"1551288049-bebda4e38f71","img":"https://images.unsplash.com/photo-1551288049-bebda4e38f71?fit=crop&w=1400&h=700&q=75","key":"metrics","pipeline":"docker","app_name":"metrics","source_path":"apps/metrics","version_toml":"apps/metrics/version.toml","version":"0.1.5","author":"h0lybyte","license":"KBVE","status":"active","runner":"ubuntu-latest","image":"kbve/metrics","e2e_name":"metrics","deployment_yaml":"apps/kube/metrics/manifest/metrics-deployment.yaml","version_target":"apps/metrics/Cargo.toml","has_test":false,"nx_project":"met","kube":{"stack":"data","environment":"prod","tier":"database","owner":"h0lybyte","criticality":"high"},"bento":{"badge":"rust · axum · observability · clickhouse · telemetry · docker","title":"In-house telemetry pipeline","accent":"Metrics","lede":"KBVE's in-house observability platform — a scoped Rust/axum service that ingests client telemetry into a self-hosted ClickHouse database, replacing Sentry, Datadog, and PostHog with one pipeline over a single wide table.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/metrics","primary":true,"external":true},{"label":"Ingest pipeline","href":"#pipeline"},{"label":"Deployment","href":"#deployment"}],"aside":{"icon":"chart","title":"Three lenses, one table","body":"One pipeline exposes <strong>errors</strong>, <strong>performance</strong>, and <strong>product</strong> lenses over a single wide table correlated by <code>session_id</code> — no SaaS error/metrics tooling.","points":["<strong>Sink</strong> — telemetry.errors_distributed on ClickHouse.","<strong>Grouping</strong> — sha256(project + type + top-5 frames)."]},"stats":[{"label":"App","value":"metrics","icon":"server"},{"label":"Stack","value":"Rust + axum","icon":"rust"},{"label":"Sink","value":"ClickHouse","icon":"database"},{"label":"Listen","value":"port 5500","icon":"activity"}],"features":[{"title":"Three lenses over one table","body":"Errors, performance, and product views over a single wide table correlated by session_id, replacing Sentry / Datadog / PostHog.","icon":"chart"},{"title":"Off-thread batched inserts","body":"A background tokio mpsc flusher batches rows by size and interval through the shared jedi ClickHouse client — no new database plumbing.","icon":"zap"},{"title":"Hardened ingest","body":"Requests are CORS-allowlisted, per-IP rate-limited, body-capped, and run through a noise/PII sanitizer before insert.","icon":"shield"},{"title":"Client-agnostic","body":"A platform field (web / unreal / unity / …) lets every client feed the same pipe, so the errors lens extends to game clients with no schema changes.","icon":"expand"}],"related":[{"href":"/project/jedi-crate/","title":"Jedi","copy":"The shared crate whose ClickHouse client Metrics reuses for inserts.","icon":"package"},{"href":"/project/unity-rareicon/","title":"Unity RareIcon","copy":"A game client that feeds telemetry into Metrics.","icon":"box"}],"related_heading":"Related"},"title":"Metrics — In-House Observability & Telemetry Platform","tags":["rust","axum","observability","clickhouse","telemetry","docker"],"sidebar":{"label":"Metrics","order":51,"badge":{"text":"New","variant":"tip"}},"slug":"/project/metrics"},{"unsplash":"1590880449155-b54f958ce314","img":"https://images.unsplash.com/photo-1590880449155-b54f958ce314?fit=crop&w=1400&h=700&q=75","bento":{"badge":"gaming","title":"Pirate Game Jam","accent":"devlog","lede":"Planning and devlog notes across KBVE's Pirate game jams — team structure, GDD format, and asset sourcing for Jam 17, plus the Jam 16 entry that switched from Unity to Godot mid-jam under the theme \"You Are The Weapon\".","ctas":[{"label":"Pirate 17","href":"#pirate-17"},{"label":"Pirate 16","href":"#pirate-16"}],"stats":[{"label":"Pirate Jam 17","value":"Planning","icon":"calendar"},{"label":"Pirate Jam 16","value":"Godot","icon":"gears"},{"label":"Theme (16)","value":"You Are The Weapon","icon":"sword"},{"label":"Squad","value":"5-person","icon":"forum"}],"related":[{"href":"/project/ar/","title":"AR","copy":"Another KBVE interactive-media research project.","icon":"box"}],"related_heading":"Related"},"title":"Pirate Game Jam — KBVE Jam 17 and Jam 16 DevLog Notes","tags":["gaming"],"sidebar":{"label":"Pirate Jam 17","order":999,"hidden":false,"badge":{"text":"New","variant":"tip"}},"slug":"/project/pirate"},{"key":"py_lib_kbve","pipeline":"python","package_name":"python-kbve","pypi_name":"kbve","source_path":"packages/python/kbve","version_toml":"packages/python/kbve/version.toml","version":"1.0.14","author":"h0lybyte","license":"MIT","status":"active","bento":{"badge":"python","title":"Async API core —","accent":"Python KBVE","lede":"An API layer and complexity handler for async HTTP, WebSocket, gRPC, and broadcasting. It provides the shared core that other KBVE Python packages (such as Fudster) build on, plus opt-in tooling for ARPG sprite baking, OSRS item-corpus analysis, and whole-site SEO/SEM auditing.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/python/kbve","primary":true,"external":true},{"label":"Features","href":"#features"},{"label":"Usage","href":"#usage"}],"aside":{"icon":"package","title":"Core deps","body":"Built on pydantic, aiohttp, fastapi, uvicorn, grpcio, and protobuf — the shared async foundation the rest of the KBVE Python stack reuses.","points":["<strong>PyPI</strong> — <code>kbve</code>, Python >=3.12,<3.14.","<strong>Extras</strong> — sprite, osrs, seo (opt-in)."]},"stats":[{"label":"Package","value":"kbve","icon":"package"},{"label":"Language","value":"Python 3.12+","icon":"code"},{"label":"Serves","value":"HTTP · WS · gRPC","icon":"network"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Async API core","body":"Modules spanning api, grpc, proto, server, and health for HTTP, WebSocket, gRPC, and broadcasting.","icon":"network"},{"title":"Sprite toolchain","body":"Extra sprite — kbve.sprite.* scripts (skin-variant, sprite-postprocess, ship-footprint) for ARPG sprite baking; adds Pillow and numpy.","icon":"camera"},{"title":"OSRS corpus tooling","body":"Extra osrs — kbve.osrs.* survey/audit/family scripts for OSRS item pages, including canonical-page collapse and the axum-kbve 301 table.","icon":"book"},{"title":"SEO/SEM auditor","body":"Extra seo — kbve.seo.* static frontmatter and MDX analysis for the whole site.","icon":"chart"}],"related":[{"href":"/project/fudster/","title":"Fudster","copy":"Composable ML library built on top of this kbve core.","icon":"gears"}],"usage":{"label":"install & dev","lang":"bash","code":"pip install kbve\n\n# development inside the KBVE monorepo\npnpm nx test python-kbve\npnpm nx lint python-kbve\npnpm nx build python-kbve\n"},"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related"},"title":"Python KBVE — Async API Layer for HTTP, WebSocket, and gRPC","tags":["python"],"featured":true,"sidebar":{"label":"Python KBVE","order":81},"slug":"/project/python-kbve"},{"key":"q_crate","pipeline":"crates","package_name":"q","source_path":"packages/rust/q","version_toml":"packages/rust/q/version.toml","version":"0.1.7","author":"h0lybyte","license":"MIT","status":"active","bento":{"badge":"crates · rust","title":"Godot game client and server","accent":"q","lede":"A Rust crate powering KBVE games — a Godot GDExtension client with a tokio game manager, plus a bevy + axum + rapier2d server flavor.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/q","primary":true,"external":true},{"label":"Features","href":"#features"}],"aside":{"icon":"expand","title":"One crate, two flavors","body":"The default build is a Godot GDExtension (cdylib) with a tokio-backed game manager; feature flags expose a parallel server flavor built on bevy, axum, and rapier2d.","points":["<strong>Mutually exclusive</strong> — client and server gated by a compile_error in lib.rs."]},"stats":[{"label":"Package","value":"q","icon":"package"},{"label":"Edition","value":"2024","icon":"rust"},{"label":"Crate types","value":"cdylib + rlib","icon":"box"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Client flavor","body":"Godot GDExtension with dashmap, crossbeam, bitflags, and a tokio runtime; the default build.","icon":"box"},{"title":"Server flavor","body":"Headless Bevy ECS driven from a tokio task, mutually exclusive with client.","icon":"server"},{"title":"Protocol","body":"postcard wire format plus bincode snapshot framing (proto-shared, proto-client, proto-server).","icon":"network"},{"title":"Physics","body":"rapier2d for spatial queries (client) and authoritative sim step (server).","icon":"gears"},{"title":"Networking","body":"WS client for the Godot extension, Axum for the server (net-client / net-server).","icon":"network"},{"title":"Supabase auth","body":"Server-side HS256 JWT verification to admit players.","icon":"key"}],"related":[{"href":"/project/kbve-crate/","title":"KBVE Crate","copy":"The core Axum + Diesel backend crate.","icon":"rust"},{"href":"/project/unity-rareicon/","title":"Unity RareIcon","copy":"A KBVE game project in the same ecosystem.","icon":"box"}],"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related crates"},"title":"q — Godot GDExtension Game Crate with Server Flavor","tags":["crates","rust"],"sidebar":{"label":"Q Crate","order":70},"slug":"/project/q-crate"},{"unsplash":"1522071820081-009f0129c71c","img":"https://images.unsplash.com/photo-1522071820081-009f0129c71c?fit=crop&w=1400&h=700&q=75","key":"rareicon","pipeline":"docker","app_name":"axum-rareicon","source_path":"apps/rareicon/axum-rareicon","version_toml":"apps/rareicon/axum-rareicon/version.toml","version":"0.1.3","author":"h0lybyte","license":"KBVE","status":"beta","runner":"ubuntu-latest","image":"kbve/rareicon","e2e_name":"axum-rareicon-e2e","deployment_yaml":"apps/kube/rareicon/manifest/deployment.yaml","version_target":"apps/rareicon/axum-rareicon/Cargo.toml","has_test":true,"kube":{"stack":"agones","environment":"beta","tier":"api","owner":"h0lybyte","criticality":"low"},"bento":{"badge":"game · api · unity","title":"A galactic quest for the","accent":"rare icons","lede":"A 2D pixel-art sci-fi action-RPG set in a future universe — drawing on Zelda and Pokemon Red/Blue — where every rare icon is generated by the game's own machine-learning system, so no two playthroughs are alike.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/rareicon/axum-rareicon","primary":true,"external":true},{"label":"Features","href":"#features"},{"label":"DevLog","href":"#devlog"}],"aside":{"icon":"zap","title":"Machine-learning icons","body":"At the heart of RareIcon is its use of machine learning to generate icons — no two are the same, offering a truly unique collectible each session. Player choices influence icon attributes, making each icon both rare and personal.","points":["<strong>Client</strong> — Unity DOTS/ECS, Steamworks pipeline.","<strong>Backend</strong> — Rust axum on the Agones stack."]},"stats":[{"label":"Game API","value":"axum-rareicon","icon":"server"},{"label":"Genre","value":"Action-RPG","icon":"sword"},{"label":"Client","value":"Unity DOTS","icon":"box"},{"label":"Deploy","value":"Agones","icon":"activity"}],"features":[{"title":"Pixelated graphics","body":"Gameboy-era pixel art that keeps the focus on strategy and storytelling.","icon":"box"},{"title":"Machine-learning icons","body":"One-of-a-kind icons generated by AI, making every playthrough unique.","icon":"zap"},{"title":"Dynamic storylines","body":"Your decisions shape the narrative, leading to different endings and interactions.","icon":"book"},{"title":"Multiplayer elements","body":"Trade icons, share tips, and compete or cooperate in special multiplayer zones.","icon":"network"},{"title":"Regular updates","body":"An ever-expanding universe — new planets, icons, and story arcs on a regular cadence.","icon":"activity"}],"related":[{"href":"/project/arpg-server/","title":"ARPG Server","copy":"Another KBVE Agones-hosted game backend.","icon":"server"},{"href":"/project/cryptothrone/","title":"CryptoThrone","copy":"A sibling KBVE isometric game project.","icon":"crown"}],"related_heading":"Related"},"title":"RareIcon — 2D Sci-Fi Action-RPG Bullet-Hell Roguelite","tags":["game","api"],"featured":true,"sidebar":{"label":"RareIcon","order":5},"slug":"/project/rareicon"},{"unsplash":"1478720568477-152d9b164e26","img":"https://images.unsplash.com/photo-1478720568477-152d9b164e26?fit=crop&w=1400&h=700&q=75","key":"reel","pipeline":"docker","app_name":"reel","source_path":"apps/media/reel","version_toml":"apps/media/reel/version.toml","version":"0.1.45","author":"h0lybyte","license":"KBVE","status":"active","runner":"ubuntu-latest","image":"kbve/reel","deployment_yaml":"apps/kube/reel/manifest/reel.yaml","version_target":"apps/media/reel/Cargo.toml","has_test":false,"kube":{"stack":"application","environment":"prod","tier":"api","owner":"h0lybyte","criticality":"low"},"bento":{"badge":"media · rust","title":"Ephemeral media fetch & stream","accent":"Reel","lede":"A Rust/Axum service that fetches legal torrents behind a WireGuard VPN, holds the content as an ephemeral hot-cache reaped on idle, and progressively streams it to the browser as raw MP4 or live HLS.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/media/reel","primary":true,"external":true},{"label":"How it works","href":"#product"}],"stats":[{"label":"App","value":"reel","icon":"server"},{"label":"Stack","value":"Rust + Axum","icon":"rust"},{"label":"Delivery","value":"MP4 + HLS","icon":"activity"},{"label":"Status","value":"active","icon":"check"}],"features":[{"title":"VPN-isolated fetch","body":"librqbit embedded in the binary leeches and seeds legal torrents entirely behind a Gluetun/WireGuard sidecar with a killswitch — no traffic leaves the tunnel.","icon":"shield"},{"title":"Ephemeral hot-cache","body":"Content is a cache, not a library — a TTL reaper deletes entries after they go idle, freeing disk and stopping seeding through one unified delete path.","icon":"zap"},{"title":"Progressive delivery","body":"ffprobe picks the cheapest correct route per file — raw byte-range MP4 while still downloading, remux-HLS, or transcode-HLS — so anything plays in the browser.","icon":"activity"},{"title":"Same-origin player","body":"An astro-kbve hls.js island streams through the axum-kbve proxy at /api/v1/reel, staff-gated, with the service token injected server-side.","icon":"server"}]},"title":"Reel — Ephemeral Media Fetch & Stream","tags":["media","rust"],"sidebar":{"label":"Reel","order":421},"slug":"/project/reel"},{"key":"rows","pipeline":"docker","app_name":"rows","source_path":"apps/rows","version_toml":"apps/rows/version.toml","version":"0.1.38","author":"h0lybyte","license":"KBVE","status":"beta","runner":"ubuntu-latest","image":"kbve/rows","deployment_yaml":"apps/kube/rows/manifest/rows-deployment.yaml","deployment_yamls":["apps/kube/rows/tenants/base/deployment.yaml"],"version_target":"apps/rows/Cargo.toml","has_test":false,"kube":{"stack":"application","environment":"beta","tier":"api","owner":"h0lybyte","criticality":"low"},"bento":{"badge":"docker · rust · ows","title":"Single-binary Rust","accent":"Open World Server","lede":"A single-binary Rust reimplementation of the OWS game backend, combining REST (Axum) and gRPC (Tonic) on one multiplexed port — replacing the five-service .NET OWS stack with one multi-tenant service.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/rows","primary":true,"external":true},{"label":"Authentication","href":"#auth"},{"label":"Procedural world","href":"#procedural"}],"aside":{"icon":"server","title":"One binary, five services","body":"ROWS consolidates the five .NET OWS microservices (PublicAPI, InstanceManagement, CharacterPersistence, GlobalData, Management) into a single multi-tenant process exposing REST (Axum) and gRPC (Tonic) on one multiplexed port.","points":["<strong>Tenant</strong> — customer_guid pinned from OWS_API_KEY.","<strong>Isolation</strong> — X-CustomerGUID enforced per process."]},"stats":[{"label":"App","value":"rows","icon":"server"},{"label":"Stack","value":"Axum + Tonic","icon":"rust"},{"label":"Port","value":"4322 (REST + gRPC)","icon":"network"},{"label":"Tenancy","value":"multi-tenant","icon":"expand"}],"features":[{"title":"REST + gRPC on one port","body":"Axum player-facing REST and Tonic internal gRPC multiplexed on port 4322 for service-to-service and UE5 dedicated-server coordination.","icon":"network"},{"title":"Single binary, five services","body":"Consolidates PublicAPI, InstanceManagement, CharacterPersistence, GlobalData, and Management into one Docker image (ghcr.io/kbve/rows).","icon":"package"},{"title":"Multi-tenant by deployment","body":"One process per game + environment pins its customer_guid from OWS_API_KEY at boot; a shared Postgres DB is isolated by the customerguid column.","icon":"expand"},{"title":"Three-identity auth","body":"Tenant (OWS_API_KEY), player (Supabase JWT), and trusted server (argon2 service key) are distinct axes with per-gate enforcement.","icon":"key"}],"related":[{"href":"/project/kbverows/","title":"KBVEROWS","copy":"The Unreal Engine REST client plugin for ROWS.","icon":"box"},{"href":"/project/kbveagones/","title":"KBVEAgones","copy":"Registers UE dedicated-server instances with ROWS.","icon":"server"}],"related_heading":"Related"},"title":"ROWS — Single-Binary Rust Open World Server (REST + gRPC)","tags":["docker","rust","ows"],"sidebar":{"label":"ROWS","order":66},"slug":"/project/rows"},{"key":"soul_crate","pipeline":"crates","package_name":"soul","source_path":"packages/rust/soul","version_toml":"packages/rust/soul/version.toml","version":"0.1.1","author":"h0lybyte","license":"MIT","status":"active","bento":{"badge":"crates · rust","title":"Shared utilities for KBVE Rust","accent":"soul","lede":"A Rust utility crate in the KBVE monorepo, published as part of the shared crates pipeline for reuse across KBVE Rust projects and services.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/soul","primary":true,"external":true},{"label":"Features","href":"#features"}],"aside":{"icon":"package","title":"Reuse across the workspace","body":"Maintained under packages/rust/soul and published through the shared crates pipeline so it can be reused across KBVE Rust projects and services, with versioning tracked in version.toml.","points":["<strong>Pipeline</strong> — released alongside the other workspace crates.","<strong>MIT</strong> — open for use across the KBVE workspace."]},"stats":[{"label":"Package","value":"soul","icon":"package"},{"label":"Version","value":"0.1.1","icon":"branch"},{"label":"Pipeline","value":"crates","icon":"gears"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Workspace crate","body":"Part of the KBVE Rust crates collection, versioned and released through the shared crates pipeline.","icon":"package"},{"title":"Reusable","body":"Intended for reuse across KBVE Rust projects rather than a single application.","icon":"expand"},{"title":"MIT licensed","body":"Open for use alongside the other KBVE workspace crates.","icon":"license"}],"related":[{"href":"/project/erust-crate/","title":"ERust Crate","copy":"egui/eframe component crate in the same workspace.","icon":"package"},{"href":"/project/kbve-crate/","title":"KBVE Crate","copy":"Core shared Rust crate.","icon":"rust"}],"features_eyebrow":"What it gives you","features_heading":"Features","related_heading":"Related crates"},"title":"Soul — KBVE Rust Utility Crate","tags":["crates","rust"],"sidebar":{"label":"Soul Crate","order":72},"slug":"/project/soul-crate"},{"key":"steamcmd_ubuntu","pipeline":"docker","app_name":"steamcmd-ubuntu","source_path":"packages/docker/steamcmd-ubuntu","version_toml":"packages/docker/steamcmd-ubuntu/version.toml","version":"0.1.0","author":"h0lybyte","license":"KBVE","status":"active","runner":"ubuntu-latest","image":"kbve/steamcmd-ubuntu","has_test":false,"bento":{"badge":"docker · infrastructure · steam","title":"Steam upload base","accent":"SteamCMD Ubuntu","lede":"An Ubuntu 24.04 Docker base image with steamcmd preinstalled, used for local config.vdf capture and the CI Steam build upload step — no credentials baked in.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/docker/steamcmd-ubuntu","primary":true,"external":true},{"label":"Local capture","href":"#local-capture"},{"label":"Pipeline","href":"#pipeline"}],"aside":{"icon":"lock","title":"No credentials baked in","body":"Each consumer brings its own <code>config.vdf</code> — a volume mount locally, or the <code>STEAM_CONFIG_VDF</code> secret restored in CI. Steam Guard mobile auth runs once; the resulting machine token blob authenticates Linux runners on subsequent runs.","points":["<strong>Local</strong> — interactive docker run to capture the vdf.","<strong>CI</strong> — ci-unity.yml deploy_steam runs run_app_build."]},"stats":[{"label":"Image","value":"steamcmd-ubuntu","icon":"package"},{"label":"Base","value":"Ubuntu 24.04","icon":"box"},{"label":"Tag","value":"24.04","icon":"branch"},{"label":"Creds","value":"none baked","icon":"lock"}],"features":[{"title":"steamcmd preinstalled","body":"steamcmd lives at /opt/steamcmd/ with a /usr/local/bin/steamcmd shim for direct invocation.","icon":"package"},{"title":"No credentials baked in","body":"Each consumer supplies its own config.vdf — a volume mount locally or the STEAM_CONFIG_VDF secret in CI.","icon":"lock"},{"title":"Build-time self-update","body":"Self-update runs at image build time so the first invocation isn't paying the steamcmd bootstrap cost.","icon":"zap"},{"title":"32-bit runtime dep","body":"lib32gcc-s1 is the one non-obvious runtime dependency — steamcmd is a 32-bit Linux binary.","icon":"settings"}]},"title":"SteamCMD Ubuntu — Steam Upload Base Image","tags":["docker","infrastructure","steam"],"sidebar":{"label":"SteamCMD Base","order":901},"slug":"/project/steamcmd-ubuntu"},{"key":"ue_devops","pipeline":"unreal","plugin_name":"UEDevOps","plugin_path":"packages/unreal/UEDevOps","dependency_plugins":"packages/unreal/KBVEYYJson packages/unreal/KBVEXXHash packages/unreal/KBVEZstd","itch_game_id":"uedevops","source_path":"packages/unreal/UEDevOps","version_toml":"packages/unreal/UEDevOps/version.toml","version":"0.1.0","author":"h0lybyte","license":"KBVE","status":"active","min_engine_version":"5.4","supported_platforms":["Win64","Linux","Mac"],"bento":{"badge":"unreal · devops","title":"Telemetry & DevOps toolkit","accent":"UEDevOps","lede":"A DevOps toolkit plugin for Unreal Engine that streamlines debugging, observability, and telemetry inside a project. It captures player errors, runtime gameplay events, and editor diagnostics, then ships them to a backend, git, or analytics stack — exposed as Blueprint nodes and editor utilities.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/unreal/UEDevOps","primary":true,"external":true},{"label":"Key facts","href":"#facts"},{"label":"Usage","href":"#usage"}],"aside":{"icon":"chart","title":"Blueprint-powered telemetry","body":"Telemetry is exposed as Blueprint nodes and editor utilities across runtime and editor — capture errors and gameplay events, send structured POST logs, and auto-create GitHub issues without writing C++.","points":["<strong>Runtime</strong> — <code>UEDevOps</code> module.","<strong>Editor</strong> — <code>UEDevOpsEditor</code> module."]},"stats":[{"label":"Plugin","value":"UEDevOps","icon":"chart"},{"label":"Modules","value":"Runtime + Editor","icon":"package"},{"label":"Min engine","value":"UE 5.4","icon":"gears"},{"label":"License","value":"KBVE","icon":"license"}],"features":[{"title":"Unified telemetry pipeline","body":"Capture player errors, runtime events, and editor diagnostics through one pipeline.","icon":"activity"},{"title":"Structured log shipping","body":"Send structured POST logs to a backend or analytics stack.","icon":"deploy"},{"title":"GitHub integration","body":"Auto-create issues from captured diagnostics.","icon":"github"},{"title":"Runtime + Editor modules","body":"Works both in-game and inside the editor, with Blueprint nodes for both.","icon":"settings"}],"related":[{"href":"/project/kbveyyjson/","title":"KBVEYYJson","copy":"Fast JSON parsing dependency.","icon":"code"},{"href":"/project/kbvexxhash/","title":"KBVEXXHash","copy":"Fast hashing dependency.","icon":"zap"},{"href":"/project/kbvezstd/","title":"KBVEZstd","copy":"Zstandard compression dependency.","icon":"package"}],"related_heading":"Related"},"title":"UEDevOps — Telemetry & DevOps Plugin for Unreal","tags":["unreal","devops"],"sidebar":{"label":"UEDevOps","order":95},"slug":"/project/uedevops"},{"key":"uniti_crate","pipeline":"crates","package_name":"uniti","source_path":"packages/rust/bevy/uniti","version_toml":"packages/rust/bevy/uniti/version.toml","version":"0.1.0","version_source":"packages/rust/bevy/uniti/Cargo.toml","author":"h0lybyte","license":"MIT","status":"active","version_target":"packages/rust/bevy/uniti/Cargo.toml","bento":{"badge":"crates · rust · bevy · ffi · unity","title":"Bevy game-logic crates to Unity via","accent":"uniti","lede":"A Rust cdylib that exposes the KBVE Bevy game-logic crates — pathfinder, inventory, battle, skills — to the Unity runtime used by RareIcon, through generated csbindgen C# bindings.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/packages/rust/bevy/uniti","primary":true,"external":true},{"label":"Overview","href":"#overview"},{"label":"Build","href":"#build"}],"aside":{"icon":"package","title":"Four crates in one dylib","body":"uniti compiles as a cdylib and is loaded by Unity as a native plugin, bundling the KBVE Bevy game-logic crates plus two runtime helpers so Unity needs nothing on the host.","points":["<strong>Logic</strong> — bevy_pathfinder, bevy_inventory, bevy_battle, bevy_skills.","<strong>Helpers</strong> — bundled rusqlite + pure-Rust zstd."]},"stats":[{"label":"Crate","value":"Rust cdylib","icon":"rust"},{"label":"Bindings","value":"csbindgen C#","icon":"code"},{"label":"Consumer","value":"Unity","icon":"box"},{"label":"License","value":"MIT","icon":"license"}],"features":[{"title":"Bundles game-logic crates","body":"Bundles bevy_pathfinder, bevy_inventory, bevy_battle, and bevy_skills into a single native plugin.","icon":"package"},{"title":"Generated C# bindings","body":"build.rs invokes csbindgen at build time to write the C# wrapper Uniti.g.cs into the Unity project.","icon":"code"},{"title":"No host dependencies","body":"Statically bundles rusqlite (bundled feature) and pure-Rust zstd, so Unity loads the dylib without host libraries.","icon":"shield"},{"title":"Per-platform Nx builds","body":"Nx targets build the release cdylib and copy it into the Unity Plugins tree for macOS, Windows, and Linux.","icon":"gears"}],"related":[{"href":"/project/isometric/","title":"Isometric","copy":"Sibling KBVE Bevy game consuming the same shared crates.","icon":"box"},{"href":"/project/bevy-behavior-crate/","title":"bevy_behavior","copy":"Game-agnostic Bevy behavior engine in the same crate family.","icon":"gears"}],"related_heading":"Related"},"title":"Uniti — C FFI Bridge from KBVE Bevy Crates to Unity","tags":["crates","rust","bevy","ffi","unity"],"sidebar":{"label":"Uniti"},"slug":"/project/uniti"},{"key":"unity_rareicon","pipeline":"unity","app_name":"rareicon","source_path":"apps/rareicon/unity-rareicon","version_toml":"apps/rareicon/unity-rareicon/version.toml","version":"0.1.9","author":"h0lybyte","license":"KBVE","homepage_url":"https://kbve.itch.io/rareicon","status":"beta","runner":"ubuntu-latest","external_publish":{"itch_user":"kbve","itch_game":"rareicon","steam_apps":[{"app_id":"3791950","label":"demo","branch":"beta","promote_to_branch":"default"},{"app_id":"2238370","label":"main","branch":"beta"}]},"engine":{"version":"6000.3.10f1","project_path":"apps/rareicon/unity-rareicon","build_targets":["StandaloneLinux64","StandaloneWindows64","StandaloneOSX","Android","iOS"],"license_method":"personal"},"bento":{"badge":"unity · game · rareicon","title":"DOTS hex-world game client","accent":"RareIcon","lede":"A Unity DOTS hex-world game client with a Burst-driven simulation — shipping to itch.io as Win/Linux/macOS standalone and to Steam as a demo.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/rareicon/unity-rareicon","primary":true,"external":true},{"label":"Build","href":"#build"},{"label":"itch.io","href":"https://kbve.itch.io/rareicon","external":true}],"aside":{"icon":"package","title":"Two destinations, one build","body":"The same ci-unity.yml run reads external_publish to pick which post-build deploy fires — itch.io standalone or Steam.","points":["<strong>itch.io</strong> — Win/Linux/macOS standalone builds.","<strong>Steam</strong> — demo (AppID 3791950) + main (AppID 2238370)."]},"stats":[{"label":"Engine","value":"Unity DOTS","icon":"box"},{"label":"Pipeline","value":"unity","icon":"gears"},{"label":"Ships to","value":"itch.io + Steam","icon":"package"},{"label":"Status","value":"beta","icon":"activity"}],"features":[{"title":"ECS DOTS world","body":"A Burst-driven hex-world simulation covering hex tiles, items, logistics, buildings, units, combat, professions, and quests.","icon":"box"},{"title":"Standalone-only Steam","body":"Steam integration is locked to standalone via RareIcon.Platform.asmdef plus a SteamPluginPlatformGate editor hook, so mobile builds compile without seeing Steamworks types.","icon":"shield"},{"title":"Two publish destinations","body":"One build ships to itch.io as Win/Linux/macOS standalone and to Steam with a demo and main app.","icon":"package"},{"title":"Manifest-driven CI","body":"The unity pipeline dispatches ci-main.yml to ci-unity.yml whenever the MDX version outpaces version.toml.","icon":"gears"}],"related":[{"href":"/project/cryptothrone/","title":"CryptoThrone.com","copy":"Another KBVE game client.","icon":"crown"},{"href":"/project/metrics/","title":"Metrics","copy":"Observability pipeline that ingests telemetry from Unity clients.","icon":"chart"}],"related_heading":"Related"},"title":"Unity RareIcon — DOTS Hex-World Game Client","tags":["unity","game","rareicon"],"sidebar":{"label":"Unity RareIcon","order":96},"slug":"/project/unity-rareicon"},{"key":"unreal_chuck_beta","pipeline":"unreal_game","app_name":"chuck","source_path":"apps/chuckrpg/unreal-chuck","version_toml":"apps/chuckrpg/unreal-chuck/version.toml","version":"0.3.45","author":"h0lybyte","license":"KBVE","homepage_url":"https://kbve.itch.io/chuckrpg","status":"beta","runner":"arc-runner-ue","shell_path":"apps/chuckrpg/unreal-chuck","external_publish":{"itch_user":"kbve","itch_game":"chuckrpg"},"engine":{"version":"5.8.0","project_path":"chuck","build_targets":["Win64","Linux","Mac"],"external_repo_url":"https://github.com/kbve/chuck","server_target":"chuckServer","server_config":"Shipping","client_config":"Shipping","maps":["/Game/Menus/L_MainMenu","/Game/Map/L_ChuckWorld"],"game_mode":"/Script/Chuck.ChuckGameMode","custom_config":"Beta","use_logging_in_shipping":"1"},"bento":{"badge":"ue5 · game · chuck · beta","title":"UE5 standalone Shipping client for","accent":"Chuck RPG","lede":"The cooked, non-editor Shipping release of the Chuck RPG UE5 client — Win64, Linux, and Mac builds compiled from the external KBVE/chuck repo and shipped to itch.io as kbve/chuckrpg via the ci-unreal pipeline.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/chuckrpg/unreal-chuck","primary":true,"external":true},{"label":"Build","href":"#build"},{"label":"itch.io","href":"https://kbve.itch.io/chuckrpg","external":true}],"aside":{"icon":"branch","title":"Built from external KBVE/chuck","body":"engine.external_repo_url makes the builder clone <a href=\"https://github.com/kbve/chuck\">KBVE/chuck</a> instead of using the monorepo shell; Content blobs come from the chuck Forgejo LFS endpoint. The version gate still lives in this monorepo.","points":["<strong>Client</strong> — cooked Shipping, -cook -pak of main.","<strong>Server</strong> — bundled Linux chuckServerBeta for the Agones fleet."]},"stats":[{"label":"Engine","value":"UE 5.8.0","icon":"box"},{"label":"Client config","value":"Shipping","icon":"settings"},{"label":"Platforms","value":"Win/Linux/Mac","icon":"box"},{"label":"Ships to","value":"itch.io","icon":"package"}],"features":[{"title":"Cooked Shipping build","body":"The non-editor <code>-cook -pak</code> Shipping release of the main branch.","icon":"box"},{"title":"External chuck repo","body":"Compiled from the external KBVE/chuck game repo with Content pulled from the chuck Forgejo LFS endpoint.","icon":"branch"},{"title":"Bundled dedicated server","body":"The chuckServerBeta target is cooked to the OWS PVC, where the chuckrpg-beta Agones fleet reads it.","icon":"server"},{"title":"itch.io distribution","body":"Ships to itch.io kbve/chuckrpg, one channel per platform (windows / linux / macos).","icon":"package"}],"related":[{"href":"/project/unreal-chuck-dev/","title":"Unreal Chuck Dev","copy":"The editor/Development counterpart build of the Chuck RPG UE5 client.","icon":"branch"}],"related_heading":"Related"},"title":"Unreal Chuck Beta — Chuck RPG UE5 Standalone Shipping Client","tags":["ue5","game","chuck","beta"],"sidebar":{"label":"Unreal Chuck Beta","order":95},"slug":"/project/unreal-chuck-beta"},{"key":"unreal_chuck_dev","pipeline":"unreal_game","app_name":"chuck-dev","source_path":"apps/chuckrpg/unreal-chuck","version_toml":"apps/chuckrpg/unreal-chuck/version-dev.toml","version":"0.3.20","author":"h0lybyte","license":"KBVE","homepage_url":"https://kbve.itch.io/chuckrpg","status":"beta","runner":"arc-runner-ue","shell_path":"apps/chuckrpg/unreal-chuck","external_publish":{"itch_user":"kbve","itch_game":"chuckrpg","itch_channel":"dev"},"engine":{"version":"5.8.0","project_path":"chuck","build_targets":["Win64","Linux","Mac"],"external_repo_url":"https://github.com/kbve/chuck","external_repo_ref":"dev","server_target":"chuckServerDev","server_config":"Development","client_config":"Development","maps":["/Game/Menus/L_MainMenu","/Game/Map/L_ChuckWorld"],"game_mode":"/Script/Chuck.ChuckGameMode"},"bento":{"badge":"ue5 · game · chuck · dev","title":"UE5 dev client build for","accent":"Chuck RPG","lede":"The Chuck RPG UE5 dev client — built from the external KBVE/chuck repo and shipped to itch.io as kbve/chuckrpg beside Unreal Chuck Beta.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/chuckrpg/unreal-chuck","primary":true,"external":true},{"label":"Build","href":"#build"},{"label":"itch.io","href":"https://kbve.itch.io/chuckrpg","external":true}],"aside":{"icon":"branch","title":"Built from external KBVE/chuck","body":"Like the beta, the builder clones <a href=\"https://github.com/kbve/chuck\">KBVE/chuck</a> (default branch) with Content pulled from the chuck Forgejo LFS endpoint. It differs only in distribution — the Development build ships to the demo channel.","points":["<strong>Client</strong> — Development config, Win64 + Linux + Mac.","<strong>Server</strong> — bundled Linux dedicated server, same version."]},"stats":[{"label":"Engine","value":"UE 5.8.0","icon":"box"},{"label":"Client config","value":"Development","icon":"settings"},{"label":"Platforms","value":"Win/Linux/Mac","icon":"box"},{"label":"Channel","value":"demo","icon":"package"}],"features":[{"title":"Dev client build","body":"The Development-config counterpart of the cooked Shipping beta client.","icon":"box"},{"title":"External chuck repo","body":"Builds from the external KBVE/chuck repo with Content pulled from the chuck Forgejo LFS endpoint.","icon":"branch"},{"title":"Bundled dedicated server","body":"The chuckServerDev target is staged to the OWS InstanceLauncher PVC for rows integration.","icon":"server"},{"title":"itch.io demo channel","body":"The client ships to itch.io as kbve/chuckrpg on the demo channel when deploy_to_itch is set.","icon":"package"}],"related":[{"href":"/project/kbvemapdb/","title":"KBVEMapDB","copy":"Unreal world/map plugin from the KBVE package group.","icon":"map"},{"href":"/project/kbvetinybvh/","title":"KBVETinyBVH","copy":"Unreal ray-tracing plugin from the KBVE package group.","icon":"render"}],"related_heading":"Related"},"title":"Unreal Chuck Dev — Chuck RPG UE5 Dev Client Build","tags":["ue5","game","chuck","dev"],"sidebar":{"label":"Unreal Chuck Dev","order":96},"slug":"/project/unreal-chuck-dev"},{"key":"unreal_deathslayer","pipeline":"unreal_game","app_name":"deathslayer","source_path":"apps/deathslayer/unreal-deathslayer","version_toml":"apps/deathslayer/unreal-deathslayer/version.toml","version":"0.1.0","author":"kbve","license":"KBVE","homepage_url":"https://kbve.itch.io/deathslayer","status":"beta","runner":"arc-runner-ue","shell_path":"apps/deathslayer/unreal-deathslayer","external_publish":{"itch_user":"kbve","itch_game":"deathslayer"},"engine":{"version":"5.8.0","project_path":"deathslayer","build_targets":["Win64","Linux","Mac"],"external_repo_url":"https://github.com/KBVE/deathslayer","server_target":"deathslayerServer","server_config":"Shipping","client_config":"Shipping","maps":["/Game/Menus/L_MainMenu","/Game/Maps/L_DeathSlayerWorld"],"game_mode":"/Script/DeathSlayer.DeathSlayerGameMode"},"title":"Unreal Death Slayer","tags":["ue5","game","deathslayer","action"],"sidebar":{"label":"Unreal Death Slayer","order":96},"slug":"/project/unreal-deathslayer"},{"key":"unreal_rareicon","pipeline":"ue5_server","app_name":"unreal-rareicon","source_path":"apps/rareicon/unreal-rareicon","version_toml":"apps/rareicon/unreal-rareicon/version.toml","version":"0.0.1","author":"h0lybyte","license":"KBVE","status":"active","runner":"arc-runner-ue","shell_path":"apps/rareicon/unreal-rareicon","bento":{"badge":"ue5 · server · gaming","title":"UE5 Linux dedicated server build for","accent":"RareIcon","lede":"The RareIcon UE5 Linux dedicated server build — uses the stock Epic Games Unreal Engine Docker image on the arc-runner-ue Kubernetes runner for CI.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/rareicon/unreal-rareicon","primary":true,"external":true},{"label":"Build","href":"#build"}],"aside":{"icon":"server","title":"Stock engine, no custom build","body":"The server build runs off the cached <code>ghcr.io/epicgames/unreal-engine:dev-5.7.4</code> stock Epic Games Docker image on the arc-runner-ue Kubernetes runner, so no custom engine build is required for CI.","points":["<strong>Task</strong> — dedicated-server via ci-unreal.yml.","<strong>Runner</strong> — arc-runner-ue Kubernetes runner."]},"stats":[{"label":"Engine","value":"UE 5.7.4","icon":"box"},{"label":"Pipeline","value":"ue5_server","icon":"gears"},{"label":"Runner","value":"arc-runner-ue","icon":"server"},{"label":"Status","value":"active","icon":"activity"}],"features":[{"title":"Stock Epic UE image","body":"Builds off the cached ghcr.io/epicgames/unreal-engine:dev-5.7.4 Docker image, so no custom engine build is required.","icon":"box"},{"title":"Dedicated server target","body":"Managed via the ci-unreal.yml workflow with <code>task: server</code>.","icon":"server"},{"title":"Kubernetes runner","body":"Runs on the arc-runner-ue Kubernetes runner.","icon":"deploy"},{"title":"Manifest dispatch","body":"Triggered from the CI - Unreal Engine workflow by selecting the dedicated-server task and setting shell_path.","icon":"gears"}],"related":[{"href":"/project/unity-rareicon/","title":"Unity RareIcon","copy":"The RareIcon game's Unity DOTS project.","icon":"box"},{"href":"/project/rareicon/","title":"RareIcon","copy":"The RareIcon project overview.","icon":"crown"}],"related_heading":"Related"},"title":"Unreal RareIcon — UE5 Linux Dedicated Server Build","tags":["ue5","server","gaming"],"sidebar":{"label":"Unreal RareIcon","order":97},"slug":"/project/unreal-rareicon"},{"key":"unreal_rentearth","pipeline":"unreal_game","app_name":"rentearth","source_path":"apps/rentearth/unreal-rentearth","version_toml":"apps/rentearth/unreal-rentearth/version.toml","version":"0.0.1","author":"h0lybyte","license":"KBVE","status":"beta","runner":"arc-runner-ue","external_publish":{"itch_user":"kbve","itch_game":"rentearth"},"engine":{"version":"5.8.0","project_path":"apps/rentearth/unreal-rentearth","build_targets":["Win64","Linux"]},"bento":{"badge":"ue5 · game · rentearth","title":"UE5.8 game client built from the monorepo —","accent":"RentEarth","lede":"A UE5.8 game client built directly from the monorepo shell at apps/rentearth/unreal-rentearth via the shared unreal_game pipeline, shipping to itch.io.","ctas":[{"label":"View source","href":"https://github.com/KBVE/kbve/tree/main/apps/rentearth/unreal-rentearth","primary":true,"external":true},{"label":"Build","href":"#build"}],"aside":{"icon":"box","title":"Built straight from the monorepo","body":"With no engine.external_repo_url, the builder checks out the monorepo and builds the .uproject under engine.project_path — the same way the early Chuck demo did — against prebuilt UE5.8 on the UE5-Win KubeVirt VM.","points":["<strong>Win64</strong> — native on the UE5-Win KubeVirt VM.","<strong>Linux</strong> — Epic UE5.8 Docker image on arc-runner-ue."]},"stats":[{"label":"Engine","value":"UE 5.8.0","icon":"box"},{"label":"Pipeline","value":"unreal_game","icon":"gears"},{"label":"Targets","value":"Win64/Linux","icon":"box"},{"label":"Ships to","value":"itch.io","icon":"package"}],"features":[{"title":"Monorepo shell build","body":"Compiles apps/rentearth/unreal-rentearth directly, with no external game repo.","icon":"box"},{"title":"Shared unreal_game pipeline","body":"Wired to the same manifest-driven pipeline as the Chuck game clients.","icon":"gears"},{"title":"Two-platform build","body":"Win64 natively on the UE5-Win KubeVirt VM and Linux in the Epic UE5.8 Docker image on arc-runner-ue.","icon":"box"},{"title":"itch.io distribution","body":"The client ships to itch.io as kbve/rentearth when deploy_to_itch is set.","icon":"package"}],"related":[{"href":"/project/unreal-chuck-dev/","title":"Unreal Chuck (dev)","copy":"The sibling UE5 game project RentEarth forked its shell from.","icon":"branch"},{"href":"/project/kbvenet/","title":"KBVENet","copy":"Shared UE5 networking plugin available to KBVE game clients.","icon":"network"}],"related_heading":"Related"},"title":"Unreal RentEarth — UE5.8 Game Client Built From the Monorepo","tags":["ue5","game","rentearth"],"sidebar":{"label":"Unreal RentEarth","order":98},"slug":"/project/unreal-rentearth"},{"unsplash":"1590840960672-db24958eef9a","img":"https://images.unsplash.com/photo-1590840960672-db24958eef9a?fit=crop&w=1400&h=700&q=75","bento":{"badge":"twitch","title":"Premium membership —","accent":"KBVE VIP","lede":"A prestigious membership tier for the KBVE community — exclusive tools, advanced features, premium plugins, priority support, and early access to beta tests of what ships next.","ctas":[{"label":"Membership benefits","href":"#benefits"},{"label":"How to join","href":"#join"}],"aside":{"icon":"key","title":"Early access & beta tests","body":"VIP members participate in beta tests of upcoming features and tools, and their feedback shapes what ships — meeting the high standards of discerning members.","points":["<strong>Billing</strong> — monthly or yearly membership.","<strong>Platforms</strong> — purchasable via Patreon, Twitch, etc."]},"stats":[{"label":"Billing","value":"Monthly / yearly","icon":"calendar"},{"label":"Platforms","value":"Patreon · Twitch","icon":"twitch"},{"label":"Access","value":"Early beta","icon":"key"},{"label":"Support","value":"Priority","icon":"shield"}],"features":[{"title":"Exclusive tools","body":"A suite of premium tools and features unavailable to the regular user base, for enhanced functionality and performance.","icon":"key"},{"title":"Cutting-edge plugins","body":"A treasure trove of plugins that transform projects with new functionality and optimizations, integrated seamlessly.","icon":"package"},{"title":"Early releases & beta tests","body":"Participate in beta tests of upcoming features and tools; your feedback shapes their development.","icon":"zap"},{"title":"Priority support","body":"Top-tier customer service that prioritizes VIP inquiries for swift, effective assistance.","icon":"shield"}],"related":[{"href":"/project/lofifocus/","title":"LofiFocus","copy":"A KBVE community project available to members.","icon":"box"}],"features_eyebrow":"What you get","features_heading":"Why join KBVE VIP","related_heading":"Related"},"title":"KBVE VIP — Premium Membership, Tools, and Early Access","tags":["twitch"],"sidebar":{"label":"VIP","order":12},"slug":"/project/vip"},{"bento":{"badge":"project · astro-kbve · axum-kbve · vrm","title":"Persistent VRM concierge for","accent":"kbve.com","lede":"An always-available concierge that ships inside the right-side dock on every kbve.com page — persistent across ClientRouter navigation, deferred until opened, with the heavy VRM model, Three.js scene, and AudioContext only landing in the browser when the user opts in.","ctas":[{"label":"Architecture","href":"#architecture"},{"label":"Public surface","href":"#surface"}],"aside":{"icon":"lock","title":"No React, no webcam","body":"The chat panel is vanilla DOM because it lives inside a transition:persist node the ClientRouter swap-mutates — breaking React reconciliation. Yuki never requests camera access; pose is canned or audio-derived from lipsync.","points":["<strong>Vanilla panel</strong> — saves the React payload on first open.","<strong>Audio-driven</strong> — lipsync from the speak source, not a mirror."]},"stats":[{"label":"Frontend","value":"Vanilla DOM","icon":"code"},{"label":"Avatar","value":"three-vrm","icon":"render"},{"label":"Stream","value":"SSE","icon":"activity"},{"label":"Backend","value":"axum-kbve","icon":"server"}],"features":[{"title":"Persistent corner dock","body":"A FAB plus collapsed panel that survives ClientRouter navigation via transition:persist, restoring state from localStorage.","icon":"box"},{"title":"Lazy-loaded heavy parts","body":"The VRM model, Three.js scene, and AudioContext only load in the browser once the user opens the dock and opts in.","icon":"clock"},{"title":"VRM avatar + lipsync","body":"A three-vrm scene with idle/blink animation and aa/ih/ou lipsync driven by an AnalyserNode tap on the audio.","icon":"render"},{"title":"SSE-streamed replies","body":"The panel streams tokens from GET /api/v1/yuki/chat into the bubble, then hands the assembled text to speak() for lipsync.","icon":"message"}],"related":[{"href":"/project/api/","title":"API","copy":"The axum-kbve service that hosts Yuki's chat endpoint.","icon":"server"},{"href":"/","title":"KBVE.com","copy":"The site Yuki's concierge dock ships on.","icon":"box"}],"features_eyebrow":"What she is","features_heading":"Features","related_heading":"Related"},"title":"Yuki — Persistent VRM Concierge for kbve.com","tags":["project","astro-kbve","axum-kbve","vrm"],"sidebar":{"label":"Yuki","order":5},"slug":"/project/yuki"}],"key":{"agones":0,"Agones Unreal SDK — Server-Only GameServer Lifecycle Plugin":0,"Agones":0,"agones-factorio":1,"Agones Factorio — Managed Dedicated Server":1,"Agones Factorio":1,"agones-factorio-relay":2,"Agones Factorio Relay":2,"agones-palworld":3,"Agones Palworld — Managed Dedicated Server":3,"Agones Palworld":3,"agones-palworld-relay":4,"Agones Palworld Relay":4,"agones-palworld-savetool":5,"Agones Palworld Savetool":5,"api":6,"KBVE API — Central Multi-Tenant API Service":6,"API":6,"ar":7,"AR — Augmented Reality Glasses and SDK Research Notes":7,"AR":7,"arc-runner":8,"ARC Runner — Custom GitHub Actions Runner Image":8,"ARC Runner":8,"aria2-proxy":9,"Aria2 Proxy — KubeVirt Download Proxy Image":9,"Aria2 Proxy":9,"arpg-server":10,"ARPG Server — Authoritative Grid Game Host on Axum":10,"ARPG Server":10,"arpg-web":11,"ARPG Web — Standalone Vite Game Client and CDN":11,"ARPG Web":11,"atlas":12,"Atlas - Machine Learning Agent Notes":12,"Atlas":12,"axum-rentearth":13,"RentEarth API — itch.io Download Backend":13,"RentEarth API":13,"bevy-battle-crate":14,"Bevy Battle — Turn-Based Combat Crate":14,"Bevy Battle":14,"bevy-behavior-crate":15,"bevy_behavior — Game-Agnostic Behavior Tree Engine for Bevy":15,"bevy_behavior":15,"bevy-cam-crate":16,"Bevy Cam — Isometric Camera Crate":16,"Bevy Cam":16,"bevy-chat-crate":17,"bevy_chat — IRC Chat & Event Bridge Crate":17,"bevy_chat":17,"bevy-db-crate":18,"bevy_db — Async Key-Value Persistence for Bevy":18,"bevy_db":18,"bevy-inventory-crate":19,"bevy_inventory — Slot-Based Inventory Crate for Bevy":19,"bevy_inventory":19,"bevy-items-crate":20,"bevy_items — Proto-Driven Item Registry Crate":20,"uevy items":20,"bevy-kbve-net-crate":21,"bevy_kbve_net — Shared Lightyear Multiplayer Protocol Crate":21,"bevy_kbve_net":21,"bevy-mapdb-crate":22,"bevy_mapdb — Proto-Driven Map Registry Crate for Bevy":22,"uevy mapdb":22,"bevy-npc-crate":23,"Bevy NPC — Proto-Driven NPC Registry Crate":23,"Bevy NPC":23,"bevy-pathfinder-crate":24,"Bevy Pathfinder — Flow Field Crate":24,"bevy_pathfinder":24,"bevy-player-crate":25,"Bevy Player — Character Controller Crate":25,"Bevy Player":25,"bevy-quests-crate":26,"bevy_quests — Proto-Driven Quest Registry for Bevy Games":26,"bevy_quests":26,"bevy-skills-crate":27,"bevy_skills — Skill Progression Crate for Bevy":27,"uevy skills":27,"bevy-spells-crate":28,"bevy_spells — Proto-Driven Spell Registry Crate":28,"uevy spells":28,"bevy-statemachine-crate":29,"bevy_statemachine — State Snapshot Bridge for Bevy":29,"uevy statemachine":29,"bevy-supa-crate":30,"bevy_supa — Agnostic Supabase PostgREST Client Crate":30,"bevy_supa":30,"bevy-tasker-crate":31,"bevy_tasker — Cross-Platform Async Task Crate":31,"uevy tasker":31,"brackeys":32,"Brackeys Game Jam — KBVE Godot + Rust Idle Space Shooter":32,"Barckeys Game Jam":32,"charles":33,"Charles — KBVE Internal Machine Learning GPU Cluster":33,"Charles":33,"chisel":34,"Chisel Ubuntu Axum — Minimal Runtime Base Image":34,"Chisel Base":34,"chuckrpg":35,"ChuckRPG — Open World RPG Backend API":35,"ChuckRPG":35,"cityvote":36,"CityVote — Deckbuilder Civ Strategy Game":36,"CityVote":36,"cryptothrone":37,"CryptoThrone.com — King of the Hill Strategy Game":37,"CryptoThrone":37,"cryptothrone-server":38,"CryptoThrone Server — Authoritative Axum + Bevy Grid Host":38,"CryptoThrone Server":38,"devops":39,"@kbve/devops — Proto-to-Zod Codegen and CI/CD Helper Library":39,"DevOps":39,"discordsh":40,"DiscordSH — Discord Server Topsite with Voting and Bump":40,"DiscordSH":40,"discordsh-bot":41,"DiscordSH Bot — Standalone Discord Gateway Bot":41,"DiscordSH Bot":41,"droid":42,"Droid — Web, Shared & Service Worker Manager for JavaScript":42,"Droid":42,"edge":43,"Edge Functions — Supabase Deno Workers and Firecracker":43,"Edge":43,"embeddb-crate":44,"EmbedDB — Single-File Turso + DuckDB Crate":44,"EmbedDB Crate":44,"embeddb-derive-crate":45,"EmbedDB Derive — FromEmbedRow Macro Crate":45,"EmbedDB Derive Crate":45,"erust-crate":46,"ERust — egui and eframe Component Crate":46,"ERust Crate":46,"factorio-ctl":47,"Factorio CTL — Agones Control REST API":47,"Factorio CTL":47,"firecracker-ctl":48,"Firecracker CTL — MicroVM Control API":48,"Firecracker CTL":48,"firecracker-node-web":49,"Firecracker Node Web — Fastify-Ready Alpine Node 22 Rootfs":49,"FC Node Web":49,"firecracker-python-net":50,"Firecracker Python Net — Network Alpine Python Rootfs":50,"FC Python Net":50,"firecracker-python-web":51,"Firecracker Python Web — FastAPI-Ready Rootfs Image":51,"FC Python Web":51,"friendslop-server":52,"Friendslop Server — Authoritative rapier3d Host on Agones":52,"Friendslop Server":52,"fudster":53,"Fudster — Composable ML Library and CLI for KBVE":53,"Fudster":53,"godot-friendslop":54,"Friendslop — Godot Co-op Slop":54,"Friendslop":54,"graph":55,"Graph — 3D Visualization of Interconnected MDX Notes":55,"Graph":55,"herbmail":56,"HerbMail — Global Gourmet Herbs & Spices Delivery Platform":56,"HerbMail":56,"herbmail-game":57,"herbmail — PSX Web Dungeon Crawler":57,"herbmail (game)":57,"herbmail-server":58,"Herbmail Server — Authoritative Axum + Bevy Dungeon Host":58,"Herbmail Server":58,"holy-crate":59,"holy — Rust Proc-Macro Derives for Structs":59,"Holy Crate":59,"index":60,"KBVE Projects — Rust, Astro, Python and C# Monorepo":60,"KBVE Projects":60,"iot-edge-worker":61,"KBVE IoT Edge Worker — WireGuard k8s Node":61,"IoT Edge Worker":61,"irc-gateway":62,"IRC Gateway — WebSocket-to-IRC Bridge":62,"IRC Gateway":62,"isometric":63,"Isometric — Bevy Multiplayer Browser Game (WASM + Tauri)":63,"Isometric":63,"jedi-crate":64,"Jedi — Juggernaut Electronic Data Interchange Crate":64,"Jedi Crate":64,"jobboard":65,"Job Board — Curated Vetted Freelance Platform (Rust/Axum)":65,"Job Board":65,"kasm-void":66,"KASM Void — Custom KASM Discord + CloakBrowser Workspace":66,"KASM Void":66,"kbve-crate":67,"kbve — Axum + Diesel Backend Boilerplate Crate":67,"KBVE Crate":67,"kbve-gate":68,"KBVE Gate — Supabase JWT Auth Reverse-Proxy Sidecar":68,"KBVE Gate":68,"kbveagones":69,"KBVEAgones — Unreal Agones-to-ROWS Server Bridge Plugin":69,"KBVEAgones":69,"kbvecombat":70,"KBVECombat — Server-Authoritative Combat Plugin for Unreal":70,"KBVECombat":70,"kbveevents":71,"KBVEEvents — Typed UE Event Bus Plugin":71,"KBVEEvents":71,"kbvegameplay":72,"KBVEGameplay — Consumable & Effect Framework":72,"KBVEGameplay":72,"kbvehexworld":73,"KBVEHexWorld — Hex-Grid World Topology Module for Unreal":73,"KBVEHexWorld":73,"kbveitemdb":74,"KBVEItemDB — Item Database & Inventory Plugin for Unreal":74,"KBVEItemDB":74,"kbvelibgit":75,"KBVELibGit — libgit2 Git Plugin Installer for UE5":75,"KBVELibGit":75,"kbvemapdb":76,"KBVEMapDB — Unreal World/Map Database + Mass Plugin":76,"KBVEMapDB":76,"kbvemover":77,"KBVEMover — Networked UE5 Mover Control Character":77,"KBVEMover":77,"kbvenet":78,"KBVENet — Iris-Ready Entity Replication Plugin for Unreal 5":78,"KBVENet":78,"kbvenpcdb":79,"KBVENPCDB — Unreal NPC Database and Mass Bridge":79,"KBVENPCDB":79,"kbveperf":80,"KBVEPerf — Runtime Performance Instrumentation for UE5":80,"KBVEPerf":80,"kbvepostshader":81,"KBVEPostShader — Stylized UE5 Post-Process":81,"KBVEPostShader":81,"kbvequestdb":82,"KBVEQuestDB — Quest Database Loader for Unreal":82,"KBVEQuestDB":82,"kbverows":83,"KBVEROWS — Rust Open World Server Backend Plugin for UE5":83,"KBVEROWS":83,"kbvesqlite":84,"KBVESQLite — Embedded SQLite Database Plugin for Unreal":84,"KBVESQLite":84,"kbvesupabase":85,"KBVESupabase — Supabase Auth and Data Plugin for UE5":85,"KBVESupabase":85,"kbvetinybvh":86,"KBVETinyBVH — Unreal TinyBVH Ray Tracing Plugin":86,"KBVETinyBVH":86,"kbveui":87,"KBVEUI — Shared Slate UI Component Library for Unreal":87,"KBVEUI":87,"kbveulid":88,"KBVEULID — ULID Generator Plugin for Unreal Engine 5":88,"KBVEULID":88,"kbvewasm":89,"KBVEWASM — WebAssembly Runtime Plugin for Unreal":89,"KBVEWASM":89,"kbvewebsurface":90,"KBVEWebSurface — Web Content on 3D Surfaces for Unreal":90,"KBVEWebSurface":90,"kbveworld":91,"KBVEWorld — Procedural World UE Plugin":91,"KBVEWorld":91,"kbvexxhash":92,"KBVEXXHash — Fast Hashing Plugin for Unreal":92,"KBVEXXHash":92,"kbveyyjson":93,"KBVEYYJson — High-Performance yyjson JSON Plugin for Unreal":93,"KBVEYYJson":93,"kbvezstd":94,"KBVEZstd — Zstandard Compression Plugin for Unreal":94,"KBVEZstd":94,"khashvault":95,"KhashVault — Browser Cryptography and Secure Storage":95,"KhashVault":95,"kilobase":96,"Kilobase — Custom Supabase Postgres Image with pgrx":96,"Kilobase":96,"kubectl":97,"KBVE Kubectl — Alpine musl kubectl Image with Rust CLI":97,"Kubectl":97,"laser":98,"Laser — Phaser + React Three Fiber Integration for React 19":98,"Laser":98,"lofifocus":99,"LofiFocus — AI Lo-Fi Music Generator Chrome Extension":99,"LofiFocus":99,"marketplace":100,"Asset Marketplace":100,"mc":101,"Minecraft Server — Fabric on Agones":101,"Minecraft":101,"mc-lobby":102,"Minecraft Lobby — PaperMC Landing and Fallback Server":102,"MC Lobby":102,"mc-velocity":103,"Minecraft Velocity Proxy — Kotlin Plugins":103,"MC Velocity":103,"memes":104,"Memes — meme.sh Axum + Astro Web Service on Kubernetes":104,"Memes":104,"metrics":105,"Metrics — In-House Observability & Telemetry Platform":105,"Metrics":105,"pirate":106,"Pirate Game Jam — KBVE Jam 17 and Jam 16 DevLog Notes":106,"Pirate Jam 17":106,"python-kbve":107,"Python KBVE — Async API Layer for HTTP, WebSocket, and gRPC":107,"Python KBVE":107,"q-crate":108,"q — Godot GDExtension Game Crate with Server Flavor":108,"Q Crate":108,"rareicon":109,"RareIcon — 2D Sci-Fi Action-RPG Bullet-Hell Roguelite":109,"RareIcon":109,"reel":110,"Reel — Ephemeral Media Fetch & Stream":110,"Reel":110,"rows":111,"ROWS — Single-Binary Rust Open World Server (REST + gRPC)":111,"ROWS":111,"soul-crate":112,"Soul — KBVE Rust Utility Crate":112,"Soul Crate":112,"steamcmd-ubuntu":113,"SteamCMD Ubuntu — Steam Upload Base Image":113,"SteamCMD Base":113,"uedevops":114,"UEDevOps — Telemetry & DevOps Plugin for Unreal":114,"UEDevOps":114,"uniti":115,"Uniti — C FFI Bridge from KBVE Bevy Crates to Unity":115,"Uniti":115,"unity-rareicon":116,"Unity RareIcon — DOTS Hex-World Game Client":116,"Unity RareIcon":116,"unreal-chuck-beta":117,"Unreal Chuck Beta — Chuck RPG UE5 Standalone Shipping Client":117,"Unreal Chuck Beta":117,"unreal-chuck-dev":118,"Unreal Chuck Dev — Chuck RPG UE5 Dev Client Build":118,"Unreal Chuck Dev":118,"unreal-deathslayer":119,"Unreal Death Slayer":119,"unreal-rareicon":120,"Unreal RareIcon — UE5 Linux Dedicated Server Build":120,"Unreal RareIcon":120,"unreal-rentearth":121,"Unreal RentEarth — UE5.8 Game Client Built From the Monorepo":121,"Unreal RentEarth":121,"vip":122,"KBVE VIP — Premium Membership, Tools, and Early Access":122,"VIP":122,"yuki":123,"Yuki — Persistent VRM Concierge for kbve.com":123,"Yuki":123}}