Agent skill

Elodin Editor Dev

by elodin-sys in elodin-sys/elodin

Contribute to the Elodin Editor, the 3D viewer and graphing tool.

Apache-2.0Auto-check passed

Install Elodin Editor Dev

skills CLI
$ npx skills add elodin-sys/elodin --skill elodin-editor-dev -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install elodin-sys/elodin elodin-editor-dev --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/elodin-sys/elodin.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.cursor/skills/elodin-editor-dev .claude/skills/elodin-editor-dev && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
elodin-editor-dev
GitHub stars
547
Token cost
~3.4k tokens
SKILL.md length
1,162 words
Files
1
Skills in repo
14
Repo updated
First seen
Licence
Apache-2.0

At a glance

Contribute to the Elodin Editor, the 3D viewer and graphing tool.

  • Works in 3 steps: ui/schematic/load.rs — Parses .kdl files → object_3d.rs — Spawns Bevy entities… → offset_parse.rs — Evaluates EQL viewport…
  • Editing files in libs/elodin-editor/
  • SKILL.md covers Running, Environment Variables, Cargo features and Source Layout, plus 5 more sections
  • Calls cargo and nix

What it does

Elodin Editor Dev is an agent skill from elodin-sys/elodin. Contribute to the Elodin Editor, the 3D viewer and graphing tool. Use when editing files in libs/elodin-editor/ or apps/elodin/, working on the Bevy/Egui UI, modifying viewport rendering, telemetry graphs, video streaming, KDL schematics, or the command palette.

Its SKILL.md is about 3.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It works with Rust. The repository describes itself as: Elodin simulation and flight software monorepo. The licence is Apache-2.0.

When your agent uses it

  • Editing files in libs/elodin-editor/
  • Working on the Bevy/Egui UI
  • Modifying viewport rendering
  • Telemetry graphs

Example prompts

  • “/elodin-editor-dev”

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. ui/schematic/load.rs — Parses .kdl files
  2. object_3d.rs — Spawns Bevy entities (meshes, GLB models, shapes)
  3. offset_parse.rs — Evaluates EQL viewport formulas (rotate, translate)

What it can do on your machine

Read from SKILL.md and the folder at commit 3bc1d99. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • cargo
    • nix

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Elodin Editor Dev loads about 3.4k tokens when it runs. Until then it costs about 70 tokens; SKILL.md has 1,162 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~70
When it runs · the whole SKILL.md, loaded when a task matches
~3.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from elodin-sys/elodin at commit 3bc1d99, republished under its Apache-2.0 licence (© elodin-sys). 1,162 words, ~3,400 tokens.

Download SKILL.mdSave it as .claude/skills/elodin-editor-dev/SKILL.md (or your agent's skills folder).
name
elodin-editor-dev
description
Contribute to the Elodin Editor, the 3D viewer and graphing tool. Use when editing files in libs/elodin-editor/ or apps/elodin/, working on the Bevy/Egui UI, modifying viewport rendering, telemetry graphs, video streaming, KDL schematics, or the command palette.

Elodin Editor Development

The Elodin Editor is a 3D visualization and telemetry graphing tool built with Bevy (ECS game engine) and Egui (immediate-mode UI). It connects to Elodin-DB via Impeller for real-time data.

Running

bash
# Standard
cargo run --bin elodin editor examples/three-body/main.py

# With hot-reload on editor code changes (requires cargo-watch)
cargo watch --watch libs/elodin-editor \
    -x 'run --bin elodin editor examples/three-body/main.py'

# Connect to a running database instead of a simulation
cargo run --bin elodin editor 127.0.0.1:2240

Environment Variables

VariableDefaultPurpose
ELODIN_ASSETS./assetsDirectory for meshes, images, GLB files
ELODIN_KDL_DIR. (cwd)Directory for .kdl schematic files
ELODIN_GPUautoNix shell GPU path (nvidia / mesa / nvk). Set before nix develop.
ELODIN_GPU_PANICunsetSet to true to force the GPU-not-found panic and print the ELODIN_GPU=… nix develop help.
ELODIN_H264_ENCODERautoLive sensor_camera format="h264": auto tries NVENC / VideoToolbox then OpenH264; cpu forces OpenH264; any other value is an FFmpeg encoder name (h264_nvenc, …). h264_vaapi is not supported.

Cargo features

Optional features declared in libs/elodin-editor/Cargo.toml (re-exported by apps/elodin/Cargo.toml):

  • big_space (default): upstream big_space 0.13 floating-origin layer.
  • inspector: adds the bevy-inspector-egui runtime entity inspector.
  • debug: enables big_space's debug diagnostics.
  • tracy: enables Tracy profiling (see .cursor/skills/elodin-tracy/SKILL.md).

Enable with cargo run -p elodin --features "<list>" -- editor ....

Source Layout

The editor is split across two crates:

libs/elodin-editor/ — Core library
src/
├── lib.rs              # Plugin registration, app setup
├── run.rs              # Main run loop and Bevy app builder
├── object_3d.rs        # 3D object spawning from KDL schematics
├── vector_arrow.rs     # Vector visualization (force/velocity arrows)
├── offset_parse.rs     # EQL viewport formula parsing
├── icon_rasterizer.rs  # Icon rendering
├── iter.rs             # Iterator utilities
├── ui/                 # Egui UI layer
│   ├── mod.rs          # Top-level UI orchestration
│   ├── tiles.rs        # Tiled panel layout system
│   ├── tiles/sidebar.rs
│   ├── inspector/      # Component inspector panels
│   │   ├── mod.rs
│   │   ├── entity.rs   # Entity property inspector
│   │   ├── viewport.rs # Viewport panel
│   │   ├── graph.rs    # Graph panel configuration
│   │   ├── dashboard.rs
│   │   ├── monitor.rs
│   │   ├── object3d.rs # 3D object inspector
│   │   └── ...
│   ├── plot/           # Telemetry graph rendering
│   │   ├── mod.rs
│   │   ├── data.rs     # Data fetching and buffering
│   │   ├── gpu.rs      # GPU-accelerated plot rendering
│   │   ├── widget.rs   # Egui plot widget
│   │   └── state.rs    # Plot state management
│   ├── plot_3d/        # 3D plot visualization
│   ├── schematic/      # KDL schematic loading and rendering
│   │   ├── mod.rs
│   │   ├── load.rs     # KDL file parsing
│   │   └── tree.rs     # Schematic tree view
│   ├── timeline/       # Playback timeline
│   │   ├── mod.rs
│   │   ├── timeline_controls.rs
│   │   └── timeline_slider.rs
│   ├── command_palette/ # Command palette (Ctrl+P)
│   ├── video_stream.rs  # Live video rendering
│   ├── theme.rs         # Color theme
│   ├── colors/          # Color system and presets
│   └── ...
└── plugins/            # Bevy plugins
    ├── mod.rs
    ├── view_cube/      # 3D orientation cube
    ├── camera_anchor/  # Camera tracking and anchoring
    ├── gizmos/         # Transform gizmos
    ├── navigation_gizmo/
    ├── editor_cam_touch/ # Touch input for camera
    ├── asset_cache/    # Asset caching
    ├── env_asset_source/ # ELODIN_ASSETS integration
    ├── web_asset/      # Web asset loading
    └── logical_key/    # Keyboard input handling
apps/elodin/ — CLI binary

The main entry point that ties together the editor with nox-py, s10, and Impeller. Handles CLI argument parsing (elodin editor, elodin run, etc.).

Key Subsystems

Bevy Plugin Architecture

The editor registers as a set of Bevy plugins. Each feature area (view cube, camera, gizmos) is a self-contained plugin with its own components, systems, and resources. New features should follow this pattern.

Egui UI Layer

The ui/ module contains all immediate-mode UI rendering. Egui runs inside Bevy via bevy_egui. The tile-based layout system (ui/tiles.rs) manages panel arrangement (viewports, graphs, inspectors).

Telemetry cache (SeriesStore)

Strategy: cache only what the UI uses. Full history per subscribed ID (no time-based SeriesStore GC). Menus use metadata/EqlContext, not store keys. Playback/scrub never wait on backfill — project whatever is already in RAM.

text
DB ──► allowlisted GetTimeSeries backfill + live ──► TelemetryCache (SeriesStore)
                                                      ├─► project SelectedTimeRange → LineTree → GPU
                                                      └─► apply_cached_data @ playhead → 3D / inspectors
Metadata ──► EqlContext ──► ADD COMPONENT / palettes (full list)
PieceWhere
Allowlist + reclaimui/plot/data.rs → update_series_fetch_priority
Backfill / live filterimpeller_bevy → backfill_cache, SeriesFetchPriority
Scheduleeditor + headless: priority then backfill_cache (lib.rs, headless.rs)

Allowlist (SeriesFetchPriority.high): enabled graph lines; Line3d / object_3d EQL (including thruster intensity EQL for particle plumes); monitors; viewport pos/look_at/up EQL; vector_arrow EQL; path-registry adapter pairs (*.world_pos, …); sensor-camera {entity}.world_pos. Empty ⇒ no SeriesStore I/O. Leaving an ID drops it from RAM. Any new live consumer must extend this allowlist or it will be blank/stale. Adapter leaf match is case-sensitive (WORLD_POS ≠ world_pos).

Plots: LineTree is a visible-window projection only (sliding GC here ≠ SeriesStore). Tip/LAST_* fetches quantized (~100 ms) + prefetch margin; also immediate visible-window prefetch so tip fills before begin→end backfill. Do not clear a LineTree when the store has zero samples in-window (unless camera range moved). ≤30 s (SHORT_WINDOW_ACCURACY_MICROS): GPU step = 1, skip Hamann–Chen (INDEX_BUFFER_LEN = 131072 in ui/plot/gpu.rs, sized for ~4 kHz × 30 s). Longer windows: GPU stride on clip; CPU project stride only for >10 min.

Headless: separate process, separate store — same priority + backfill or sensor_view poses freeze while effects still animate.

Do not: gate menus on SeriesStore keys; wait on SeriesStoreLoadState.complete for scrub; reintroduce full-metadata backfill; time-GC SeriesStore without fixing jump-to-start/scrub holes first.

KDL Schematics

KDL files define 3D objects and viewport configurations. The loading pipeline:

  1. ui/schematic/load.rs — Parses .kdl files
  2. object_3d.rs — Spawns Bevy entities (meshes, GLB models, shapes)
  3. offset_parse.rs — Evaluates EQL viewport formulas (rotate, translate)
Video Streaming

ui/video_stream.rs handles live H.264/AV1 video decoding and rendering as textures in the 3D viewport. Uses the video-toolbox crate on macOS for hardware acceleration.

Dependencies

Key crates used in the editor:

CratePurpose
bevyECS game engine, 3D rendering, windowing
bevy_eguiEgui integration for Bevy
eguiImmediate-mode UI framework
impeller-bevyBevy plugin for Impeller telemetry
arrowArrow data format for time-series
eqlElodin Query Language parser
noxSpatial math types

Development Tips

  • Use cargo watch for fast iteration on UI changes
  • The editor hot-reloads KDL schematics on file change
  • Test with examples/three-body/main.py for a lightweight simulation
  • GPU plot rendering is in ui/plot/gpu.rs — changes here affect all telemetry graphs
  • The command palette (ui/command_palette/) is the entry point for user actions

Screenshot-driven design, build, and test

Prefer Bevy's native window screenshot path over OS screen capture. It captures the full editor window (3D viewports and egui chrome) without macOS Screen Recording permissions, and works the same in local iteration and CI-style scripts.

Show full SKILL.md (480 more words)Show less
Harness
PiecePath / env
Pluginlibs/elodin-editor/src/plugins/screenshot.rs (EnvScreenshotPlugin)
Batch scriptscripts/ci/screenshot_examples.sh <out-dir> [example …]
ActivateELODIN_SCREENSHOT=/abs/path/out.png
Delay before captureELODIN_SCREENSHOT_DELAY (seconds; default 8; use 12–20 for heavy examples)
Exit after writeELODIN_SCREENSHOT_EXIT=1 (required for bounded runs)

The plugin queues Screenshot::primary_window(), waits until the PNG is non-empty on disk (async GPU readback), then sends AppExit::Success when exit is requested. Do not kill the process on a timer alone — that tears down the render thread mid-readback and yields a missing/empty PNG.

One-shot capture (design / verify a change)
bash
# Release binary is much faster for visual loops
cargo build -p elodin --release

rm -f /tmp/editor-shot.png
ELODIN_SCREENSHOT=/tmp/editor-shot.png \
ELODIN_SCREENSHOT_DELAY=12 \
ELODIN_SCREENSHOT_EXIT=1 \
  ./target/release/elodin editor examples/ball/main.py

Then Read the PNG in the agent (vision) and check concrete UI/scene facts — e.g. status-bar RAM Usage: X.Y GB (not N/A / not stuck at 0.0), trajectory line present, view cube visible, graph panels populated. OCR (tesseract) is optional backup for status-bar text.

bash
# Default set: ball three-body drone rc-jet apollo-lander video-stream
#             sensor-camera cube-sat voyager geo-frames
scripts/ci/screenshot_examples.sh /tmp/elodin-shots ball three-body drone

Env overrides: ELODIN_BIN, ELODIN_SCREENSHOT_DELAY (script default 20), SCREENSHOT_WATCHDOG (default 180). One editor at a time; each run has a watchdog so a hung capture cannot block forever.

Workflow for UI / rendering changes
  1. Baseline — screenshot the affected example(s) before the change into /tmp/elodin-shots-baseline/.
  2. Implement — keep the change scoped; rebuild elodin (release for visual checks).
  3. Compare — re-screenshot into /tmp/elodin-shots-after/ and Read both PNGs. Assert the intended delta and that unrelated chrome (timeline, status bar, view cube) still looks healthy.
  4. Stress the failure mode — if the bug was GPU/render-path specific (e.g. FPV + HDR + plot_3d), pick the example that exercises that path (rc-jet, sensor-camera, …), not only ball.
  5. Stale DBs — if an example refuses to start with DB/time-travel errors, delete its on-disk DB (e.g. rm -rf examples/voyager/dbs/voyager, rm -rf video-stream-db) and retry. Do not dig into GStreamer until a clean DB still fails.
Gotchas
  • Port 2240 — live elodin editor / elodin run binds the sim DB; do not parallelize with monte-carlo or another editor. Group-kill leftovers before the next case.
  • RAM gauge — status-bar RSS is read via platform APIs in ui/status_bar.rs (not Bevy SystemInformationDiagnosticsPlugin). On macOS Bevy's sysinfo is built with apple-app-store and always reports 0 GiB for the current process.
  • video-stream — clear ./video-stream-db if the editor hangs or video never appears. elodinsink / x264enc / srtsrc come from nix develop or nix develop .#run (GST_PLUGIN_PATH). Do not prepend cargo target/release (libelodin makes gst-plugin-scanner abort the scan on GStreamer 1.26).
  • voyager — needs SPICE kernels under examples/voyager/nasa_spice_data/ and a clean DB dir after interrupted runs.
  • nix develop — prefer it for CI-parity builds; for a tight screenshot loop, a warm cargo build -p elodin --release outside a full env rebuild is fine once the toolchain is already installed.
When to use which example
GoalExample
Lightest viewport + trail + vector labelball
Multi-body + graph panelsthree-body
GLB + joint animationdrone
FPV / plot_3d / aerorc-jet
SITL + thrusters / descentapollo-lander
H.264 tile in UIvideo-stream
GPU sensor cameras / frustasensor-camera
Terrain / geo framesgeo-frames
Spacecraft + MEKF graphscube-sat

Key References

© elodin-sys, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .cursor/skills/elodin-editor-dev of elodin-sys/elodin.

Open the folder on GitHubat commit 3bc1d99

Compare with similar skills

Elodin Editor Dev next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Elodin Editor Dev compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Elodin Editor Dev this skillelodin-sys/elodin547—~3.4kAutomated safety check: PassApache-2.0
Update V8 Versionopeninterpreter/openinterpreter69k2 repos~845Automated safety check: PassApache-2.0
Firecrawl Page Scrape Integrationfirecrawl/firecrawl190k1 repos~944Automated safety check: PassISC
Migrate Core Code to Submodulestinyhumansai/openhuman42k—~2.6kAutomated safety check: PassGPL-3.0
Rust TDD Workflowrtk-ai/rtk83k—~753Automated safety check: NotesApache-2.0
Rust Best Practicesfarm-fe/farm5.6k3 repos~1.1kAutomated safety check: PassMIT

Similar skills

  • Update V8 Version

    openinterpreter/openinterpreter

    Bumps the pinned v8 and rusty_v8 versions in Codex, validates the release-candidate path with the v8-canary check, and traces failures to upstream build changes.

    69k GitHub starsUsed in 2 repos~845 tokens
    DevOps & CloudAuto-check passed
  • Adds Firecrawl's /scrape endpoint to application code to pull markdown, HTML, links, screenshots or structured data from a single known URL.

    190k GitHub starsUsed in 1 repo~944 tokens
    Data & AnalyticsAuto-check passed
  • Migrate Core Code to Submodules

    tinyhumansai/openhuman

    Plans and carries out moving non-host-specific code and its tests from the OpenHuman core into vendored tiny submodule libraries, then releases the submodule and re-pins the host.

    42k GitHub stars~2.6k tokensUpdated today
    DevelopmentAuto-check passed
  • Enforces red-green-refactor for Rust work, with idiomatic test patterns, a naming convention and a pre-commit gate of cargo fmt, clippy and test.

    83k GitHub stars~753 tokensUpdated yesterday
    Testing & QAAuto-check: notes
  • Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook.

    5.6k GitHub starsUsed in 3 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Decides whether an OpenLogi device problem on macOS is a privacy-permission (TCC) problem, using agent log lines, and says which identity needs which grant.

    23k GitHub stars~2.5k tokensUpdated 5 days ago
    DevelopmentAuto-check: notes

More from elodin-sys/elodin

All 14 skills in this repo
  • Branch Regression

    elodin-sys/elodin

    Compare two git branches (usually the current branch vs main) by running every example on each, capturing exit codes, logs, and editor screenshots, then diffing the results.

    547 GitHub stars~1.6k tokensUpdated yesterday
    Auto-check passed
  • Elodin Cranelift

    elodin-sys/elodin

    Work with the Cranelift JIT MLIR backend. An agent skill from elodin-sys/elodin.

    547 GitHub stars~2k tokensUpdated yesterday
    Auto-check passed
  • Elodin DB

    elodin-sys/elodin

    Work with Elodin-DB, the time-series telemetry database. An agent skill from elodin-sys/elodin.

    547 GitHub stars~2.8k tokensUpdated yesterday
    Auto-check passed
  • Elodin Dev

    elodin-sys/elodin

    Develop and contribute to the Elodin codebase. An agent skill from elodin-sys/elodin.

    547 GitHub stars~896 tokensUpdated yesterday
    Auto-check passed
  • Elodin Headless Capture

    elodin-sys/elodin

    Run the Elodin Editor without a physical display in Gamescope, take screenshots, and record video through PipeWire and GStreamer.

    547 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check: notes
  • Elodin Monte Carlo

    elodin-sys/elodin

    Develop and calibrate simulations against experimental truth data using elodin monte-carlo.

    547 GitHub stars~2.9k tokensUpdated yesterday
    Auto-check passed

Works with

Questions about Elodin Editor Dev

What does Elodin Editor Dev do?

Contribute to the Elodin Editor, the 3D viewer and graphing tool. Elodin Editor Dev is an agent skill from elodin-sys/elodin. Contribute to the Elodin Editor, the 3D viewer and graphing tool.

When should I use Elodin Editor Dev?

Elodin Editor Dev fits situations like: editing files in libs/elodin-editor/; working on the Bevy/Egui UI; modifying viewport rendering; telemetry graphs.

How do I install Elodin Editor Dev in Claude Code?

Run `npx skills add elodin-sys/elodin --skill elodin-editor-dev -a claude-code`. Or copy the skill folder (.cursor/skills/elodin-editor-dev in elodin-sys/elodin) into .claude/skills/elodin-editor-dev in your project. Claude Code loads it when a task matches its description.

How do I install Elodin Editor Dev in Codex?

Run `npx skills add elodin-sys/elodin --skill elodin-editor-dev -a codex`. Or copy the skill folder (.cursor/skills/elodin-editor-dev in elodin-sys/elodin) into .agents/skills/elodin-editor-dev in your project. Codex loads it when a task matches its description.

Can I use Elodin Editor Dev in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add elodin-sys/elodin --skill elodin-editor-dev -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/elodin-editor-dev, .gemini/skills/elodin-editor-dev, .github/skills/elodin-editor-dev and .opencode/skills/elodin-editor-dev in your project.

What does Elodin Editor Dev need to run?

Going by SKILL.md and its folder, Elodin Editor Dev needs the command-line tools its instructions call (cargo and nix).

Does Elodin Editor Dev access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Elodin Editor Dev safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Elodin Editor Dev use?

Elodin Editor Dev is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Elodin Editor Dev use?

About 3.4k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Elodin Editor Dev?

Skills that share tags, products or a category with Elodin Editor Dev: Update V8 Version (openinterpreter/openinterpreter, 69k stars), Firecrawl Page Scrape Integration (firecrawl/firecrawl, 190k stars), Migrate Core Code to Submodules (tinyhumansai/openhuman, 42k stars) and Rust TDD Workflow (rtk-ai/rtk, 83k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Elodin Editor Dev?

elodin-sys (a GitHub organization) maintains it in elodin-sys/elodin, which has 547 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 7, 2026.

Source: elodin-sys/elodin on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.