Refedle is a TUI-driven data transformation tool for CSV and JSON files, built with .NET 10 and Terminal.Gui v2. It lets you explore a file interactively, apply column-level transformations, and replay them as a recipe against large files from the command line.
Explore a file and save the transformations as a recipe:
Then replay that recipe from the command line, no UI:
On macOS and Linux, install the latest release with:
curl -fsSL https://raw.githubusercontent.com/Yuta-K19418/Refedle/main/install.sh | shThis downloads the prebuilt binary for your platform, verifies its SHA-256 checksum against the release's checksums.txt, and installs refedle into the first writable directory among $XDG_BIN_HOME, $HOME/.local/bin, and /usr/local/bin. It never uses sudo.
Then check and update it with:
refedle version # print the installed version
refedle update # replace the binary in place with the latest releaserefedle update is not available on Windows or for development builds; download a new archive manually instead.
For manual downloads, prebuilt binaries by platform, and OS security warnings, see docs/usage/installation.md.
To build and run from source instead, replace refedle with dotnet run --project src/App -- in the examples below.
| Format | TUI (Tree) | TUI (Table) | CLI batch (apply) |
|---|---|---|---|
CSV (.csv) |
— | ✅ | ✅ |
JSON Lines (.jsonl) |
✅ | ✅ | ✅ |
JSON Array (.json) |
✅ | via drill-down only | drill-down recipe only |
JSON Object (.json) |
✅ | via drill-down only | drill-down recipe only |
Any file extension other than those listed above results in a NotSupportedException.
CSV (.csv) — TUI Table view. No Tree view, since CSV rows have no nested structure to drill into.
JSON Lines (.jsonl) — TUI Tree and Table view (toggle with t), plus full-file aggregation drill-down (see TUI Usage).
JSON Array (.json) — TUI Tree view, with Table view available only via full-file aggregation drill-down (see TUI Usage). In CLI batch mode, supported only when the recipe is drill-down-scoped (see CLI Batch Usage).
JSON Object (.json) — TUI Tree view, with Table view available only via single-node drill-down (see TUI Usage). In CLI batch mode, supported only when the recipe is drill-down-scoped (see CLI Batch Usage).
refedle [--file <path>] [--recipe <path.yaml>]Full key bindings and action details: docs/usage/tui.md
Rename a column:
Delete a column, or cast its values to a different type (text, whole number, floating point, etc.).
Filter rows by a column condition:
Fill a column with a fixed value — useful for anonymization or masking:
Format timestamp columns into a different date/time format:
Drill down into nested JSON — pick a path and it's aggregated into a table:
See docs/usage/drilldown.md for exact behavior per node type.
Save a recipe (s) to replay every action above against other files from the CLI — see docs/usage/recipes.md.
refedle apply --input <input> --recipe <recipe.yaml> --output <output>Replays a saved recipe against a file, no UI. Add --dry-run to preview the plan without writing output.
Supported input/output combinations, drill-down recipe rules, and --dry-run details: docs/usage/cli.md
src/
App/ TUI (Terminal.Gui v2) and CLI entry point (Program.cs, Cli/)
Engine/ File I/O (mmap-backed), schema scanning, filtering, actions, recipe (de)serialization
Generators/ Roslyn incremental source generator for format-agnostic dispatch
tests/
Refedle.Tests/ Unit tests
Refedle.E2ETests/ End-to-end tests (real refedle binary, real TUI)
benchmarks/
Refedle.Benchmarks/ BenchmarkDotNet performance benchmarks
docs/ Design documents and usage guides
- File reads use
System.IO.MemoryMappedFileswithArrayPool<byte>buffer reuse; CSV parsing is backed by the Sep library. There is no SIMD/vectorized scanning code in the engine at this time. - Recipe YAML is a hand-written, AOT-safe reader/writer (no YamlDotNet or reflection-based serialization).
- Error handling favors a
Result/Result<T>return type over exceptions on expected failure paths. - Both
AppandEngineare configured for Native AOT (PublishAot=true/IsAotCompatible=true) withTreatWarningsAsErrorsenabled.
- .NET SDK 10.0.201+ (see global.json)
dotnet build
dotnet testBuilt with Terminal.Gui and Sep, both MIT licensed. See THIRD-PARTY-NOTICES.txt for full license texts.







