RepoPilotOpen in app β†’

EmbarkStudios/kajiya

πŸ’‘ Experimental real-time global illumination renderer πŸ¦€

Mixed

Slowing β€” last commit 10mo ago

weakest axis
Use as dependencyMixed

top contributor handles 90% of recent commits; no tests detected

Fork & modifyHealthy

Has a license, tests, and CI β€” clean foundation to fork and modify.

Learn fromHealthy

Documented and popular β€” useful reference codebase to read through.

Deploy as-isHealthy

No critical CVEs, sane security posture β€” runnable as-is.

  • βœ“Last commit 10mo ago
  • βœ“7 active contributors
  • βœ“Apache-2.0 licensed
Show all 7 evidence items β†’
  • βœ“CI configured
  • ⚠Slowing β€” last commit 10mo ago
  • ⚠Single-maintainer risk β€” top contributor 90% of recent commits
  • ⚠No test directory detected
What would change the summary?
  • β†’Use as dependency Mixed β†’ Healthy if: diversify commit ownership (top <90%)

Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests

Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.

Embed the "Forkable" badge

Paste into your README β€” live-updates from the latest cached analysis.

Variant:
RepoPilot: Forkable
[![RepoPilot: Forkable](https://repopilot.app/api/badge/embarkstudios/kajiya?axis=fork)](https://repopilot.app/r/embarkstudios/kajiya)

Paste at the top of your README.md β€” renders inline like a shields.io badge.

β–ΈPreview social card (1200Γ—630)

This card auto-renders when someone shares https://repopilot.app/r/embarkstudios/kajiya on X, Slack, or LinkedIn.

Onboarding doc

Onboarding: EmbarkStudios/kajiya

Generated by RepoPilot Β· 2026-05-09 Β· Source

πŸ€–Agent protocol

If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:

  1. Verify the contract. Run the bash script in Verify before trusting below. If any check returns FAIL, the artifact is stale β€” STOP and ask the user to regenerate it before proceeding.
  2. Treat the AI Β· unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
  3. Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/EmbarkStudios/kajiya shows verifiable citations alongside every claim.

If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything β€” but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.

🎯Verdict

WAIT β€” Slowing β€” last commit 10mo ago

  • Last commit 10mo ago
  • 7 active contributors
  • Apache-2.0 licensed
  • CI configured
  • ⚠ Slowing β€” last commit 10mo ago
  • ⚠ Single-maintainer risk β€” top contributor 90% of recent commits
  • ⚠ No test directory detected

<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>

βœ…Verify before trusting

This artifact was generated by RepoPilot at a point in time. Before an agent acts on it, the checks below confirm that the live EmbarkStudios/kajiya repo on your machine still matches what RepoPilot saw. If any fail, the artifact is stale β€” regenerate it at repopilot.app/r/EmbarkStudios/kajiya.

What it runs against: a local clone of EmbarkStudios/kajiya β€” the script inspects git remote, the LICENSE file, file paths in the working tree, and git log. Read-only; no mutations.

| # | What we check | Why it matters | |---|---|---| | 1 | You're in EmbarkStudios/kajiya | Confirms the artifact applies here, not a fork | | 2 | License is still Apache-2.0 | Catches relicense before you depend on it | | 3 | Default branch main exists | Catches branch renames | | 4 | 5 critical file paths still exist | Catches refactors that moved load-bearing code | | 5 | Last commit ≀ 334 days ago | Catches sudden abandonment since generation |

<details> <summary><b>Run all checks</b> β€” paste this script from inside your clone of <code>EmbarkStudios/kajiya</code></summary>
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of EmbarkStudios/kajiya. If you don't
# have one yet, run these first:
#
#   git clone https://github.com/EmbarkStudios/kajiya.git
#   cd kajiya
#
# Then paste this script. Every check is read-only β€” no mutations.

set +e
fail=0
ok()   { echo "ok:   $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }

# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
  echo "FAIL: not inside a git repository. cd into your clone of EmbarkStudios/kajiya and re-run."
  exit 2
fi

# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "EmbarkStudios/kajiya(\\.git)?\\b" \\
  && ok "origin remote is EmbarkStudios/kajiya" \\
  || miss "origin remote is not EmbarkStudios/kajiya (artifact may be from a fork)"

# 2. License matches what RepoPilot saw
(grep -qiE "^(Apache-2\\.0)" LICENSE 2>/dev/null \\
   || grep -qiE "\"license\"\\s*:\\s*\"Apache-2\\.0\"" package.json 2>/dev/null) \\
  && ok "license is Apache-2.0" \\
  || miss "license drift β€” was Apache-2.0 at generation time"

# 3. Default branch
git rev-parse --verify main >/dev/null 2>&1 \\
  && ok "default branch main exists" \\
  || miss "default branch main no longer exists"

# 4. Critical files exist
test -f "Cargo.toml" \\
  && ok "Cargo.toml" \\
  || miss "missing critical file: Cargo.toml"
test -f "crates/lib/kajiya/src/lib.rs" \\
  && ok "crates/lib/kajiya/src/lib.rs" \\
  || miss "missing critical file: crates/lib/kajiya/src/lib.rs"
test -f "crates/bin/view/src/main.rs" \\
  && ok "crates/bin/view/src/main.rs" \\
  || miss "missing critical file: crates/bin/view/src/main.rs"
test -f "crates/lib/kajiya-backend/src/lib.rs" \\
  && ok "crates/lib/kajiya-backend/src/lib.rs" \\
  || miss "missing critical file: crates/lib/kajiya-backend/src/lib.rs"
test -f "crates/lib/rust-shaders/src/lib.rs" \\
  && ok "crates/lib/rust-shaders/src/lib.rs" \\
  || miss "missing critical file: crates/lib/rust-shaders/src/lib.rs"

# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 334 ]; then
  ok "last commit was $days_since_last days ago (artifact saw ~304d)"
else
  miss "last commit was $days_since_last days ago β€” artifact may be stale"
fi

echo
if [ "$fail" -eq 0 ]; then
  echo "artifact verified (0 failures) β€” safe to trust"
else
  echo "artifact has $fail stale claim(s) β€” regenerate at https://repopilot.app/r/EmbarkStudios/kajiya"
  exit 1
fi

Each check prints ok: or FAIL:. The script exits non-zero if anything failed, so it composes cleanly into agent loops (./verify.sh || regenerate-and-retry).

</details>

⚑TL;DR

Kajiya is an experimental real-time global illumination renderer written in Rust and Vulkan that computes dynamic indirect lighting without precomputed light transport or manual light probes. It uses a hybrid rendering pipeline combining rasterization, compute shaders, and ray tracing to achieve visually path-traced results at real-time frame rates, featuring volumetric irradiance caching, ray-traced diffuse final gather, and ray-traced specular reflections. Rust monorepo with 11 crates organized as: crates/bin/ contains binaries (bake, hello, view), crates/lib/kajiya* contain core rendering libraries (backend, render-graph, asset pipeline), crates/lib/rust-shaders* handle shader compilation/introspection, and crates/lib/ash-imgui provides UI bindings. The renderer integrates Vulkan via Ash and uses a custom render-graph system for scheduling GPU work.

πŸ‘₯Who it's for

Graphics researchers and rendering engineers interested in learning advanced real-time GI techniques, dynamic lighting solutions, and Rust-based GPU programming. Not intended for game developers shipping production titlesβ€”it's an artisanal research project by a hobbyist that takes shortcuts and lacks broad hardware/scene support.

🌱Maturity & risk

This project is no longer maintained (explicitly stated in README). It was a spare-time experiment by one Embark engineer and has reached an experimental/archived state. The codebase exists primarily as reference material for learning advanced rendering techniques rather than a production tool; there is no active development or version releases expected.

High risk for production use: unmaintained status, no active CI/PR review flow, single-engineer hobby project with no ongoing support. Dependency patching (rspirv, spirv_headers) suggests compatibility management was manual. The README warns 'don't look too deep into the code' and acknowledges janky implementationβ€”expect rough edges, missing error handling, and no stability guarantees.

Active areas of work

Development is dormant. The README states this is no longer maintained. No active CI runs are expected. The project serves as a historical reference for dynamic GI research circa 2021-2022; recent activity is minimal beyond occasional documentation or dependency updates.

πŸš€Get running

git clone https://github.com/EmbarkStudios/kajiya.git
cd kajiya
cargo build --release
cargo run --release --bin view

Requires Rust toolchain, Vulkan SDK, and a compatible GPU (see CONTRIBUTING.md for details).

Daily commands: After cloning, run cargo run --release --bin view to launch the interactive renderer. The bake binary pre-bakes assets, and hello is a minimal example. No build script invocations visible; Cargo handles compilation directly.

πŸ—ΊοΈMap of the codebase

  • Cargo.toml β€” Workspace root defining all member crates (bins, libs) and critical patches for rspirv/spirv_headers used in shader compilation.
  • crates/lib/kajiya/src/lib.rs β€” Core library entry point for the global illumination renderer; must understand the main render pipeline architecture.
  • crates/bin/view/src/main.rs β€” Primary viewer application entry point; demonstrates how to integrate kajiya for real-time rendering.
  • crates/lib/kajiya-backend/src/lib.rs β€” Vulkan backend abstraction layer; all GPU work flows through this module.
  • crates/lib/rust-shaders/src/lib.rs β€” Shader compilation and reflection system; critical for understanding GPU-side code generation.
  • .cargo/config β€” Cargo configuration for build flags and profiles; affects how the project compiles.
  • README.md β€” Project overview stating this is a spare-time experiment and no longer maintained; sets expectations for code quality.

πŸ› οΈHow to make changes

Add a new Render Pass to the GI Pipeline

  1. Define the render pass logic in a new module under crates/lib/kajiya/src/ (crates/lib/kajiya/src/lib.rs)
  2. Write the shader code in Rust using rust-shaders macros in the same module (crates/lib/rust-shaders/src/lib.rs)
  3. Register the pass with the render graph in kajiya-rg by adding a node (crates/lib/kajiya-rg/src/lib.rs)
  4. Update the main renderer to call your new pass in the right execution order (crates/lib/kajiya/src/lib.rs)
  5. Test by running the viewer and visualizing outputs with ImGui debug interface (crates/bin/view/src/main.rs)

Add Support for a New Asset Format

  1. Implement a new loader in crates/lib/kajiya-asset/src/ (e.g., glTF, FBX, USD) (crates/lib/kajiya-asset/src/lib.rs)
  2. Add conversion logic in the asset pipeline to normalize to kajiya's internal format (crates/lib/kajiya-asset-pipe/src/lib.rs)
  3. Update the viewer's file dialog and loader to recognize the new extension (crates/bin/view/src/main.rs)

Modify the Vulkan Backend for a GPU Optimization

  1. Identify the GPU resource or command you need to optimize in kajiya-backend (crates/lib/kajiya-backend/src/lib.rs)
  2. Update buffer allocation, synchronization, or compute shader dispatch logic (crates/lib/kajiya-backend/src/lib.rs)
  3. Add profiling markers or ImGui debug stats to measure the impact (crates/lib/kajiya-imgui/src/lib.rs)
  4. Test with the bake tool for consistent offline validation (crates/bin/bake/src/main.rs)

Add a Debug Visualization to the Viewer

  1. Extend the ImGui debug panel in kajiya-imgui to add a new control or readout (crates/lib/kajiya-imgui/src/lib.rs)
  2. Wire the control to a uniform/push constant passed to a visualization shader (crates/lib/rust-shaders/src/lib.rs)
  3. Optionally add a new render pass to output the debug data (e.g., GI buffer, normals, albedo) (crates/lib/kajiya/src/lib.rs)
  4. Rebuild and test the visualization in the viewer application (crates/bin/view/src/main.rs)

πŸ”§Why these technologies

  • Vulkan β€” Low-level GPU control needed for real-time GI with ray tracing; Vulkan provides portable SPIR-V shader compilation and hardware acceleration across platforms.
  • Rust + SPIR-V β€” Type-safe CPU-GPU code sharing via rust-shaders; compile-time validation of shader code and automatic reflection for descriptor binding.
  • Render Graph (kajiya-rg) β€” Manages complex dependencies between GI passes; decouples pass definition from execution order, enabling optimization and reuse.
  • ImGui β€” Immediate-mode GUI for real-time debug visualization of GI buffers, performance metrics, and algorithm parameters.
  • Blue Noise Textures β€” Pre-computed stochastic sampling patterns reduce temporal artifacts in progressive rendering.

βš–οΈTrade-offs already made

  • No longer maintained; spare-time experiment

    • Why: Original developer moved to other priorities at Embark; code reflects artisanal hacks rather than production-grade engineering.
    • Consequence: Users should expect rough edges, incomplete documentation, and potential bitrot in dependencies; not suitable for shipping products.
  • Rust-to-SPIR-V via rust-shaders instead of HLSL/GLSL

    • Why: Enables zero-cost CPU-GPU abstractions and compile-time verification of shader APIs.
    • Consequence: Steeper learning curve for graphics programmers; smaller ecosystem than GLSL/HLSL tooling.
  • Real-time GI with screen-space probes and ray tracing

    • Why: Balances quality vs. performance for interactive rendering without offline baking.
    • Consequence: Limited by GPU memory and compute; quality degrades on lower-end hardware; temporal coherence artifacts possible.
  • Modular crate structure (kajiya, kajiya-backend, kajiya-rg, etc.)

    • Why: Separation of concerns: renderer logic, GPU backend, render graph, assets, and UI are independently testable.
    • Consequence: More boilerplate; requires understanding multiple crates to modify behavior; async dependency chains.

🚫Non-goals (don't propose these)

  • Production-grade global illumination solution (explicitly experimental and no longer maintained)
  • Cross-platform shader language abstraction (Vulkan-only; no DirectX 12 or Metal support)
  • Real-time path tracing with convergence guarantees (uses heuristic screen-space GI instead)
  • Offline rendering engine (designed for interactive frame rates, not photorealism at any cost)
  • Game engine integration (viewer is

πŸͺ€Traps & gotchas

No active CI: the CI workflow exists but is not actively monitored given unmaintained status. Shader compilation: rust-gpu integration requires specific Rust nightly versions and SPIR-V toolchain knowledgeβ€”compilation failures are common. Vulkan version mismatch: patched rspirv/spirv_headers versions may not match installed Vulkan SDK. Blue-noise assets: the HDR_LA, HDR_RGB, LDR_LLL1 texture variants must be loaded correctly for temporal dithering to work; missing assets break GI quality. GPU memory model: ray-tracing dispatch and irradiance cache consume significant VRAM; older GPUs may fail silently or produce garbage. No error recovery: the experimental code lacks graceful degradation for unsupported features.

πŸ—οΈArchitecture

πŸ’‘Concepts to learn

  • Global Illumination (GI) via Irradiance Caching β€” Kajiya's core innovation: a volumetric, temporally-recurrent irradiance cache allows dynamic indirect lighting without precomputation. Understanding cache coherence, temporal filtering, and spatial interpolation is essential to the renderer.
  • Hybrid Rendering (Raster + Compute + Ray-Tracing) β€” Kajiya combines three GPU execution models in one pipeline: rasterization for G-buffer, compute shaders for cache updates, and ray-tracing for diffuse/specular gathering. Understanding when each is optimal is critical.
  • SPIR-V and Shader Compilation via rust-gpu β€” Unlike traditional HLSL/GLSL workflows, kajiya compiles Rust code to SPIR-V bytecode for GPU execution. Understanding the toolchain (rspirv, spirv-reflect) is essential for shader debugging and modification.
  • Render-Graph Abstraction β€” Kajiya's kajiya-rg library implements a render-graph for scheduling GPU passes (similar to Frostbite's approach). Understanding DAG scheduling, resource binding, and pass dependencies is central to adding new rendering features.
  • Blue-Noise Dithering β€” Kajiya uses pre-computed blue-noise textures (HDR_LA, HDR_RGB variants) for temporal anti-aliasing and GI sampling. Understanding spectral properties of noise patterns improves visual quality in stochastic rendering.
  • Temporal Coherence and Recurrence β€” The irradiance cache exploits temporal recurrenceβ€”reusing results from previous frames with careful filtering. This reduces per-frame cost but introduces ghosting artifacts if not tuned carefully.
  • PBR (Physically-Based Rendering) with GGX Microfacet Model β€” Kajiya uses standard PBR with roughness/metalness and GGX specular distribution. Understanding energy conservation, Fresnel effects, and importance sampling is needed to modify material evaluation.
  • EmbarkStudios/rust-gpu β€” Companion project that enables writing GPU shaders in Rust instead of HLSL/GLSL; kajiya uses rust-gpu for shader compilation pipeline.
  • gfx-rs/wgpu β€” Alternative cross-platform GPU abstraction layer; represents a different approach to Vulkan-agnostic rendering vs kajiya's direct Ash integration.
  • termhn/rendy β€” Higher-level Vulkan rendering framework with render-graph support; similar problem space but more polished than kajiya's custom render-graph system.
  • EmbarkStudios/presser β€” Companion library for GPU buffer layout and synchronization; useful for understanding kajiya's GPU memory management patterns.
  • pixar/OpenSubdiv β€” Reference for advanced rendering research; kajiya draws inspiration from modern real-time GI techniques in production renderers.

πŸͺ„PR ideas

To work on one of these in Claude Code or Cursor, paste: Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.

Add integration tests for shader compilation pipeline in rust-shaders crate

The repo contains a complex shader compilation system (crates/lib/rust-shaders and crates/lib/rust-shaders-shared) with dependencies on rspirv and spirv_headers, but there are no visible test files. Given the critical nature of shader compilation to a rendering engine and the custom patches applied to rspirv, adding integration tests would catch regressions early and document expected behavior.

  • [ ] Create tests/shader_compilation_tests.rs in crates/lib/rust-shaders with test shaders
  • [ ] Add tests for SPIR-V generation and validation using the patched rspirv dependency
  • [ ] Test error handling for invalid shader inputs and malformed code
  • [ ] Document test coverage in CONTRIBUTING.md for shader-related changes

Add platform-specific GitHub Actions workflows for Vulkan validation layers

The CI workflow (.github/workflows/ci.yml) likely builds the Vulkan renderer, but there's no evidence of running with Vulkan validation layers or testing on multiple OS platforms. Given kajiya's Vulkan-specific nature and complexity, adding platform-specific workflows (Linux, Windows, macOS) with validation layer checks would catch platform-specific and API-misuse bugs.

  • [ ] Extend .github/workflows/ci.yml to include separate jobs for Linux, Windows, and macOS builds
  • [ ] Add Vulkan SDK installation and validation layer setup for each platform matrix
  • [ ] Configure VK_LAYER_KHRONOS_validation in test runs to catch Vulkan API violations
  • [ ] Add test runner for crates/bin/hello with validation output parsing in CI

Document asset pipeline and blue noise texture usage in technical guide

The repo contains substantial blue noise texture assets (assets/images/bluenoise/) and an asset pipeline system (crates/lib/kajiya-asset-pipe), but there's no specific documentation explaining how these assets are processed, why blue noise is used in global illumination, or how contributors should add new assets. This knowledge gap makes the rendering approach less transparent.

  • [ ] Create docs/ASSET_PIPELINE.md explaining the kajiya-asset-pipe workflow and texture loading
  • [ ] Document the blue noise sampling technique in docs/GLOBAL_ILLUMINATION.md with references to academic papers
  • [ ] Add inline code examples in crates/lib/kajiya-asset/src/lib.rs for asset loading patterns
  • [ ] Create a guide in CONTRIBUTING.md for adding new texture assets to the blue noise set

🌿Good first issues

  • Document the irradiance cache temporal recurrence algorithm in kajiya/src/ with inline comments and a design doc in docs/; the current code lacks explanation of the volumetric GI sampling strategy.
  • Add missing unit tests for kajiya-asset-pipe/ image loading and baking pipeline; currently no test fixtures exist for verifying asset transformation correctness.
  • Create a minimal CONTRIBUTING.md example showing how to add a new render pass using the kajiya-rg API (similar to how diffuse final gather is implemented); this is the highest barrier to entry for new renderer features.

⭐Top contributors

Click to expand

πŸ“Recent commits

Click to expand
  • 9fdec0f β€” Update README.md (h3r2tic)
  • 72f907a β€” Update README.md (h3r2tic)
  • a4ffd34 β€” Prevent the spread of NaNs in the ircache (h3r2tic)
  • 7120301 β€” Fix ircache overflow (h3r2tic)
  • d373f76 β€” Update to rust-gpu main (#82) (SneakyBerry)
  • d3b6ac2 β€” Upgrade hassle-rs to 0.10 (#76) (h3r2tic)
  • 62a6435 β€” Implement keymap config system (#75) (Salzian)
  • c0d5bbc β€” fix wrong coordinate system in gubffer.rchit.hlsl for ray cone tracing to calculate texture lod (#73) (rustyfan)
  • 5a124d5 β€” Fix major source of bias in diffuse GI ReSTIR (h3r2tic)
  • c26b14e β€” Simple Clippy auto fixes (repi)

πŸ”’Security observations

The kajiya codebase has a generally acceptable security posture for an experimental/unmaintained project. The primary concerns are: (1) the project's unmaintained status creating long-term vulnerability risk, (2) use of non-standard patched dependencies from git repositories, (3) debug symbols included in release builds, and (4) commented-out development references. No hardcoded secrets, SQL injection risks, XSS vulnerabilities, or obvious infrastructure misconfigurations were identified in the provided file structure. However, the unmaintained status is the most significant security concernβ€”users should be cautious about depending on this code in production environments without thorough security audits and vendor support.

  • Medium Β· Patched Dependencies Without Version Pinning β€” Cargo.toml - [patch.crates-io] section. The Cargo.toml uses git-based patches for rspirv and spirv_headers pointing to specific revisions. While revision-pinning is good, using cutting-edge patches from external repositories increases the risk of pulling in untested or potentially malicious code. The patches reference the gfx-rs organization, which is generally trustworthy, but this bypasses standard security review processes of crates.io. Fix: Monitor patched dependencies closely. Consider contributing fixes upstream and using official releases when available. Document the rationale for each patch and establish a review process for patch updates.
  • Low Β· Project Marked as Unmaintained β€” README.md. The README explicitly states 'This project is no longer maintained' and describes itself as a 'spare-time experiment'. Unmaintained projects may contain unpatched vulnerabilities and will not receive security updates. Dependencies may become vulnerable over time as new CVEs are discovered. Fix: Archive the repository or clearly mark it as archived on GitHub. If users depend on this code, establish a maintenance plan or provide migration guidance to maintained alternatives. Regular dependency audits should be performed if continued use is necessary.
  • Low Β· Uncommented Patch References β€” Cargo.toml - commented patch section at end of file. The Cargo.toml contains commented-out patch references to local paths ('rspirv-reflect' and 'gpu-profiler'). These suggest local development setup but could indicate incomplete or abandoned features. If these were previously used, they may represent outdated or security-relevant code. Fix: Remove commented-out patches or clearly document their purpose. If these are development-only, move them to separate development profiles or documentation.
  • Low Β· Debug Symbols in Release Build β€” Cargo.toml - [profile.release] section. The release profile includes 'debug = 1', which includes debug symbols in release binaries. While useful for debugging, this can leak information about the binary structure and may aid reverse engineering or exploitation attempts. Fix: Consider setting 'debug = 0' for production builds, or document the security implications and rationale for including debug symbols. Use separate profiles for development and production if debug information is needed.

LLM-derived; treat as a starting point, not a security audit.


Generated by RepoPilot. Verdict based on maintenance signals β€” see the live page for receipts. Re-run on a new commit to refresh.

Mixed signals Β· EmbarkStudios/kajiya β€” RepoPilot