Agent skill

Elodin DB

by elodin-sys in elodin-sys/elodin

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

Apache-2.0Auto-check passedData & Analytics

Install Elodin DB

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

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

GitHub CLI
$ gh skill install elodin-sys/elodin elodin-db --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-db .claude/skills/elodin-db && 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-db
GitHub stars
547
Token cost
~2.9k tokens
SKILL.md length
903 words
Files
1
Skills in repo
14
Repo updated
First seen
Licence
Apache-2.0

At a glance

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

  • Works in 4 steps: $ELODIN_ASSETS → /assets (simulations only) → /assets → …
  • Running elodin-db
  • SKILL.md covers Quick Start, Running the Database, Assets and the DB Asset Server and Lua REPL, plus 8 more sections
  • Calls just, curl and cargo

What it does

Elodin DB is an agent skill from elodin-sys/elodin. Work with Elodin-DB, the time-series telemetry database. Use when running elodin-db, writing client integrations (C, C++, Rust, Python), configuring replication/follow mode, the DB Asset Server / assets ingest, querying data via the Lua REPL, or connecting the Elodin Editor to a database.

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

It sits in Data & Analytics, covering Forecasting and time series and Database administration. It works with Lua, Rust, Python and C++. The repository describes itself as: Elodin simulation and flight software monorepo. The licence is Apache-2.0.

When your agent uses it

  • Running elodin-db
  • Writing client integrations (C
  • Configuring replication/follow mode
  • The DB Asset Server / assets ingest

Example prompts

  • “/elodin-db”

Requirements

  • Python 3

Workflow steps

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

  1. $ELODIN_ASSETS
  2. /assets (simulations only)
  3. /assets
  4. Nearest ancestor assets/ (simulations only)

What it can do on your machine

Read from SKILL.md and the folder at commit 784483e. 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:

    • just
    • curl
    • cargo

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

  • Network

    No URLs in SKILL.md. Its commands use curl, which can reach the network depending on how they are called.

    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 DB loads about 2.9k tokens when it runs. Until then it costs about 75 tokens; SKILL.md has 903 words of instructions outside code blocks.

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

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 784483e, republished under its Apache-2.0 licence (© elodin-sys). 903 words, ~2,924 tokens.

Download SKILL.mdSave it as .claude/skills/elodin-db/SKILL.md (or your agent's skills folder).
name
elodin-db
description
Work with Elodin-DB, the time-series telemetry database. Use when running elodin-db, writing client integrations (C, C++, Rust, Python), configuring replication/follow mode, the DB Asset Server / assets ingest, querying data via the Lua REPL, or connecting the Elodin Editor to a database.

Elodin-DB

Elodin-DB is a high-performance time-series database for telemetry data. It stores components, messages, and metadata using the Impeller protocol, and serves as the central data bus between simulations, flight software, and the Elodin Editor.

Quick Start

bash
# Install (from source)
just install

# Run the database
elodin-db run [::]:2240 $HOME/.local/share/elodin/db --config libs/db/examples/db-config.lua --log-level warn

# Connect the Elodin Editor
elodin editor 127.0.0.1:2240

# Launch the Lua REPL
elodin-db lua

Running the Database

bash
elodin-db run <bind_addr> <data_dir> [--config <lua_file>] [--assets <dir>] [--log-level <level>]
ParameterExamplePurpose
bind_addr[::]:2240Listen address (IPv4/IPv6 + port)
data_dir$HOME/.local/share/elodin/dbStorage directory
--configlibs/db/examples/db-config.luaLua configuration script
--assets/var/lib/elodin/assetsSource assets/ tree to ingest on fresh DB create (overrides ELODIN_ASSETS)
--log-levelwarnLog verbosity: error, warn, info, debug, trace

Impeller TCP listens on port N (e.g. 2240). The DB Asset Server always binds N+1 (e.g. 2241) and serves {data_dir}/assets/ over HTTP. Do not put a follower Impeller listener on N+1.

Assets and the DB Asset Server

Visual files for schematics live under {db}/assets/{relative_key} and are served at http://host:(tcp_port+1)/{relative_key} while the DB runs. Record once, copy the DB directory, replay anywhere — no separate assets/ tree required on the consumer.

Source asset root (ingest)

On first create of an empty DB, elodin-db run (and Python world.run(..., db_path=…)) copies a source tree into {db}/assets/ once, then writes a .elodin-ingested marker. Later opens skip ingest so recorded/editor assets are never wiped.

Source resolution (CLI --assets wins when set; otherwise):

  1. $ELODIN_ASSETS
  2. <sim_entry>/assets (simulations only)
  3. <cwd>/assets
  4. Nearest ancestor assets/ (simulations only)
bash
# Seed a fresh DB from an explicit tree (Aleph / HITL pattern)
elodin-db run [::]:2240 ./my-db --assets /var/lib/elodin/assets
Conventional keys inside {db}/assets/

Same layout as the simulation asset root (see elodin-simulation skill):

Key prefixContents
*.glb, meshes/…, models/…Meshes referenced by glb path= (rewritten to db:… in stored KDL)
schematics/*.kdlActive schematic (default schematics/main.kdl) and window sub-schematics
skyboxes/manifest.ron + *.cubemap.ktx2Named skyboxes
terrains/…Terrain atlases for world_mesh
color_schemes/…Optional theme JSON (local editor; not required for replay of built-in names)

schematic.active metadata points at the active KDL asset key (usually schematics/main.kdl). Consumers fetch that KDL over HTTP — there is no inline KDL mirror in DB metadata.

Paths and the db: scheme

At record/ingest, local paths like models/jet.glb become db:models/jet.glb in stored schematics. Already-db: / http(s): / icon builtin=… paths are left alone. Keys must not contain ...

Follow mode and assets

Telemetry replicates over Impeller TCP. Assets do not — the follower GETs http://source:(N+1)/__index__ and mirrors missing/changed keys into its own {db}/assets/, then serves them on (follower_port+1).

bash
elodin-db run 127.0.0.1:2240 ./source-db
elodin-db run 127.0.0.1:2242 ./follower-db --follows 127.0.0.1:2240   # assets on 2243
elodin editor 127.0.0.1:2242

Point --follows at the source Impeller port (N), not the asset port.

Verify
bash
curl -sf -o /dev/null -w "%{http_code}\n" http://127.0.0.1:2241/schematics/main.kdl
ls -lh "$DB_PATH/assets/"

Empty assets/ after a sim usually means a temp DB (world.run without db_path / ELODIN_DB_PATH). Mesh 404s mean the source tree was never ingested — re-run against a fresh DB with the correct --assets / ELODIN_ASSETS.

Full reference: docs/public/content/reference/db-asset-server.md

Lua REPL

Interactive database shell for debugging and exploration:

bash
elodin-db lua
lua
db> client = connect("127.0.0.1:2240")
db> client:dump_metadata()
db> :help

Client Integration

C Client
bash
cc examples/client.c -lm -o /tmp/client && /tmp/client

See libs/db/examples/client.c for streaming fake sensor data.

C++ Client
bash
c++ -std=c++23 examples/client.cpp -o /tmp/client-cpp && /tmp/client-cpp

The C++ library is C++20 compatible. See libs/db/examples/client.cpp for subscription example.

Rust Client

See libs/db/examples/rust_client/ for a complete Rust client using Impeller.

C++ Header Generation

Generate the single-header C++20 library with message definitions:

bash
cargo run --bin elodin-db gen-cpp > libs/db/examples/db.hpp
Python (via Simulation)

Simulations automatically create an embedded database, or connect to an external one:

python
# Embedded (temporary)
w.run(system)

# Explicit path
w.run(system, db_path="./my_data")

# Connect to external DB
w.run(system, db_addr="127.0.0.1:2240")

Follow Mode (Replication)

Replicate data from one database to another over TCP:

bash
# Source database
elodin-db run [::]:2240 $HOME/.local/share/elodin/source-db

# Follower database (replicates from source)
elodin-db run [::]:2241 $HOME/.local/share/elodin/follower-db --follows 127.0.0.1:2240

The follower:

  1. Synchronizes all existing metadata and schemas
  2. Backfills historical component data and message logs
  3. Streams real-time updates as they arrive
  4. Mirrors schematic assets from the source DB Asset Server on port N+1 (see Assets above)
Packet Size Tuning

Default batches outgoing data into ~1500-byte TCP writes (standard Ethernet MTU):

bash
elodin-db run [::]:2241 ./follower-db --follows 127.0.0.1:2240 --follow-packet-size 9000
Show full SKILL.md (364 more words)Show less
Dual-Source Example

Run a simulation on source, follow on target, and add local streams:

bash
# Source machine
elodin editor examples/video-stream/main.py

# Target — follow source
elodin-db run [::]:2241 ./follower-db --follows SOURCE_IP:2240

# Target — connect editor
elodin editor 127.0.0.1:2241

# Target — add local video stream
examples/video-stream/stream-video.sh

Merging Databases

Combine two databases (e.g. SITL and real telemetry) with optional time alignment and component prefixes.

bash
# Basic merge with prefixes
elodin-db merge -o merged --prefix1 sitl --prefix2 real ./sitl-db ./real-db

# Align using elapsed offsets from each recording start, in microseconds
elodin-db merge -o merged --prefix1 sitl --prefix2 real \
  --align1 15000000 --align2 14000000 --from-playback-start ./sitl-db ./real-db

Use --from-playback-start only for elapsed offsets from each recording's playback start (recorded start metadata, falling back to the first data timestamp), expressed in microseconds. Values copied with the Editor µs button are raw timestamps: pass them to --align1 / --align2 without this flag. Seconds must be multiplied by 1,000,000 for the CLI; a seconds display is not necessarily relative to recording start.

Copy alignment values from the editor TIME field: click to select, µs copies raw microseconds, Enter seeks to a pasted value (seconds with s, UTC, or plain µs).

Exporting a Database

Offline export to analysis formats or a Foxglove-ready MCAP recording:

bash
# Parquet / arrow-ipc / csv (one file per component)
elodin-db export --format parquet --output ./out ./my-db

# Foxglove-compatible MCAP + generated Foxglove layout JSON
elodin-db export --format mcap --output ./out ./my-db

# Pre-1970 epochs (e.g. Apollo 1969) auto-rebase to t=0 (also if --epoch-offset-us
# would leave samples pre-epoch — MCAP log_time is unsigned)
# Large GLBs (moon.glb) stay attached; model primitive omitted above --max-embed-mb (default 32)
# Follow-entity mesh always embeds. Dynamic arrows go to /scene_dynamic.
elodin-db export --format mcap --max-embed-mb 32 --output ./out ./apollo-db

The MCAP export maps components to JSON channels (/drone/world_pos.q0 message paths), emits /tf from *.world_pos poses (with world→NED/ENU anchors from a schematic coordinate node), publishes foxglove.SceneUpdate one topic per entity (/scene/<id>: GLBs, literal-pose objects with composed translate/rotate, pixel-width line_3d trails, static arrows, world_mesh "globe" → earth.glb) plus ≤30 Hz dynamic arrows on /scene_dynamic/<name> (Foxglove backfills latest-per-topic on panel remount, so shared scene topics silently drop entities), encodes sensor-camera RGBA to H.264 CompressedVideo when video-export is enabled, attaches schematic KDLs/assets, and generates {db}.foxglove-layout.json (per-viewport followTf from look_at, camera offsets incl. translate_world(...), far ≥ 4× distance). Upload with scripts/foxglove-upload.sh or manually via POST /v1/data/upload + PUT then POST /v1/layouts. See elodin-cli.md Foxglove MCAP Export and foxglove-mcap-export-design.md.

Trimming a Database

Remove data from the beginning or end of a recording. Values are in microseconds. Without --output, modifies in place.

bash
# Remove the first 3 minutes from a recording
elodin-db trim --from-start 180000000 ./my-db

# Remove the last 2 minutes from a recording
elodin-db trim --from-end 120000000 --output ./trimmed ./my-db

# Trim 1 minute from the start and 2 minutes from the end
elodin-db trim --from-start 60000000 --from-end 120000000 --output ./window ./my-db

# Preview without modifying
elodin-db trim --from-start 180000000 --dry-run ./my-db

Editor Connection

The Elodin Editor connects to any running database:

bash
elodin editor 127.0.0.1:2240

From a simulation, the editor connects automatically when launched via elodin editor sim.py.

Architecture

Elodin-DB uses the Impeller protocol internally:

  • Components: Time-series data indexed by entity + component name + timestamp
  • Messages: Ordered log entries (commands, events)
  • Metadata: Schema information, entity names, component types

Storage is append-only with configurable retention. The database supports concurrent readers and writers with lock-free data structures.

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-db of elodin-sys/elodin.

Open the folder on GitHubat commit 784483e

Compare with similar skills

Elodin DB 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 DB compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Elodin DB this skillelodin-sys/elodin547—~2.9kAutomated safety check: PassApache-2.0
Sap Hana Cloud Data Intelligencesecondsky/sap-skills462—~3.2kAutomated safety check: PassGPL-3.0
Smooth Cpp Sharedopenforecast-org/smooth107—~1.1kAutomated safety check: PassLGPL-2.1
GeomasterLeonChaoX/qinyan-academic-skills9431 repos~2.9kAutomated safety check: PassMIT
GeomasterK-Dense-AI/scientific-agent-skills48k1 repos~2.8kAutomated safety check: PassMIT
Smooth Translationopenforecast-org/smooth107—~2.2kAutomated safety check: PassLGPL-2.1

Similar skills

  • Develops data processing pipelines, integrations, and machine learning scenarios in SAP Data Intelligence Cloud.

    462 GitHub stars~3.2k tokensUpdated 4 days ago
    Data & AnalyticsAuto-check passed
  • Smooth Cpp Shared

    openforecast-org/smooth

    Work on the C++ layer that the R package and the Python port share — the headers under src/headers/, the Rcpp bindings in src/, the pybind11 bindings in src/python/, and the two build systems that…

    107 GitHub stars~1.1k tokensUpdated yesterday
    Data & AnalyticsAuto-check passed
  • Geomaster

    LeonChaoX/qinyan-academic-skills

    Comprehensive geospatial science skill covering remote sensing, GIS, spatial analysis, machine learning for earth observation, and 30+ scientific domains.

    943 GitHub starsUsed in 1 repo~2.9k tokens
    Data & AnalyticsAuto-check passed
  • Geomaster

    K-Dense-AI/scientific-agent-skills

    Supports geospatial research workflows for remote sensing, vector and raster GIS, spatial statistics, terrain and network analysis, and machine learning for Earth observation.

    48k GitHub starsUsed in 1 repo~2.8k tokens
    Data & AnalyticsAuto-check passed
  • Smooth Translation

    openforecast-org/smooth

    Port a feature from the R smooth package to the Python port, or check how an R name maps to Python.

    107 GitHub stars~2.2k tokensUpdated yesterday
    Writing & ContentAuto-check passed
  • Tlaplus Spec Generator

    ArabelaTso/Skills-4-SE

    Automatically generate TLA+ specifications from source code (C/C++, Python) for formal verification of distributed systems.

    253 GitHub stars~2.3k tokensUpdated 1 mo ago
    DatabasesAuto-check passed

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 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 Editor Dev

    elodin-sys/elodin

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

    547 GitHub stars~3.4k 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

Questions about Elodin DB

What does Elodin DB do?

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

When should I use Elodin DB?

Elodin DB fits situations like: running elodin-db; writing client integrations (C; configuring replication/follow mode; the DB Asset Server / assets ingest.

How do I install Elodin DB in Claude Code?

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

How do I install Elodin DB in Codex?

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

Can I use Elodin DB 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-db -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-db, .gemini/skills/elodin-db, .github/skills/elodin-db and .opencode/skills/elodin-db in your project.

What does Elodin DB need to run?

Going by SKILL.md and its folder, Elodin DB needs the command-line tools its instructions call (just, curl and cargo). Our summary lists: Python 3.

Does Elodin DB access the network?

SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Elodin DB 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 DB use?

Elodin DB 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 DB use?

About 2.9k tokens (SKILL.md is roughly 12k 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 DB?

Skills that share tags, products or a category with Elodin DB: Sap Hana Cloud Data Intelligence (secondsky/sap-skills, 462 stars), Smooth Cpp Shared (openforecast-org/smooth, 107 stars), Geomaster (LeonChaoX/qinyan-academic-skills, 943 stars) and Geomaster (K-Dense-AI/scientific-agent-skills, 48k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Elodin DB?

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 9, 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.