Wizards
Multi-step flows for guided data entry and operations — collect input across screens, then commit in one go.
Vantage UI
A native console built from config you own — declarative YAML for structure, Rhai for logic, written by your AI agent.
Config in Vantage is two first-class languages, not one with an escape hatch. YAML declares the shape; Rhai carries the logic. Both live in the same git folder — and your agent writes both.
# table/clients.yaml
title: Clients
source: main_db
columns: [name, email, balance]
has_many:
- orders
context_menu:
- title: View orders
open_page: orders
model: model.get_ref("orders", row.id)
// a computed label for each row
let label = row.name;
if row.balance < 0 {
label += " • owes " + row.balance;
}
label
// drill two hops, in one expression
model.get_ref("clients", row.id)
.get_ref("orders", client_id)
Queries, drill-downs, actions, computed fields and visibility are all real, diffable code.
One sidebar over every system you run. Reading and listing rows is baseline — every source does it. Beyond that, each driver advertises an honest capability contract, and the UI renders only the controls a backend really supports. Pick one to see what it can do.
The most complete driver — full querying, aggregation, pagination and dataset-level traversal.
Retrieving data
| Filter by conditions | check_circle |
| Server-side sort | check_circle |
| Quick search | check_circle |
| Count | check_circle |
| Aggregate — sum / avg / min / max | check_circle |
| Custom page size | check_circle |
| Random-access pages | check_circle |
| Progressive (cursor) load | check_circle |
| Drill to related record | check_circle |
| Drill across a dataset (subquery) | check_circle |
Editing data
| Add records | check_circle |
| Update records | check_circle |
| Delete records | check_circle |
Full SQL driver via sqlx — sort, search, aggregation, offset pagination and subquery traversal.
Retrieving data
| Filter by conditions | check_circle |
| Server-side sort | check_circle |
| Quick search | check_circle |
| Count | check_circle |
| Aggregate — sum / avg / min / max | check_circle |
| Custom page size | check_circle |
| Random-access pages | check_circle |
| Progressive (cursor) load | check_circle |
| Drill to related record | check_circle |
| Drill across a dataset (subquery) | check_circle |
Editing data
| Add records | check_circle |
| Update records | check_circle |
| Delete records | check_circle |
CRUD, aggregation and dataset traversal via the SQL query builder; interactive sort/search push-down is being wired up.
Retrieving data
| Filter by conditions | check_circle |
| Server-side sort | remove |
| Quick search | remove |
| Count | check_circle |
| Aggregate — sum / avg / min / max | check_circle |
| Custom page size | remove |
| Random-access pages | remove |
| Progressive (cursor) load | remove |
| Drill to related record | check_circle |
| Drill across a dataset (subquery) | check_circle |
Editing data
| Add records | check_circle |
| Update records | check_circle |
| Delete records | check_circle |
CRUD, aggregation and dataset traversal via the SQL query builder; interactive sort/search push-down is being wired up.
Retrieving data
| Filter by conditions | check_circle |
| Server-side sort | remove |
| Quick search | remove |
| Count | check_circle |
| Aggregate — sum / avg / min / max | check_circle |
| Custom page size | remove |
| Random-access pages | remove |
| Progressive (cursor) load | remove |
| Drill to related record | check_circle |
| Drill across a dataset (subquery) | check_circle |
Editing data
| Add records | check_circle |
| Update records | check_circle |
| Delete records | check_circle |
Native aggregation pipeline with sort, search and pagination; record-level traversal.
Retrieving data
| Filter by conditions | check_circle |
| Server-side sort | check_circle |
| Quick search | check_circle |
| Count | check_circle |
| Aggregate — sum / avg / min / max | check_circle |
| Custom page size | check_circle |
| Random-access pages | check_circle |
| Progressive (cursor) load | check_circle |
| Drill to related record | check_circle |
| Drill across a dataset (subquery) | remove |
Editing data
| Add records | check_circle |
| Update records | check_circle |
| Delete records | check_circle |
Key and scan-filter queries with cursor pagination. Often paired as a read source with writes routed elsewhere.
Retrieving data
| Filter by conditions | check_circle |
| Server-side sort | remove |
| Quick search | remove |
| Count | check_circle |
| Aggregate — sum / avg / min / max | remove |
| Custom page size | check_circle |
| Random-access pages | remove |
| Progressive (cursor) load | check_circle |
| Drill to related record | check_circle |
| Drill across a dataset (subquery) | remove |
Editing data
| Add records | remove |
| Update records | remove |
| Delete records | remove |
Generic and Hasura dialects. Read rows, filter, and drill into related records.
Retrieving data
| Filter by conditions | check_circle |
| Server-side sort | remove |
| Quick search | remove |
| Count | check_circle |
| Aggregate — sum / avg / min / max | remove |
| Custom page size | remove |
| Random-access pages | remove |
| Progressive (cursor) load | remove |
| Drill to related record | check_circle |
| Drill across a dataset (subquery) | remove |
Editing data
| Add records | remove |
| Update records | remove |
| Delete records | remove |
Paginated REST endpoints as tables, with filtering and record-level drill-down.
Retrieving data
| Filter by conditions | check_circle |
| Server-side sort | remove |
| Quick search | remove |
| Count | check_circle |
| Aggregate — sum / avg / min / max | remove |
| Custom page size | remove |
| Random-access pages | remove |
| Progressive (cursor) load | remove |
| Drill to related record | check_circle |
| Drill across a dataset (subquery) | remove |
Editing data
| Add records | remove |
| Update records | remove |
| Delete records | remove |
Infrastructure (CloudWatch, IAM, S3 and more) browsed as tables, with equality filters pushed down to the API.
Retrieving data
| Filter by conditions | check_circle |
| Server-side sort | remove |
| Quick search | remove |
| Count | check_circle |
| Aggregate — sum / avg / min / max | remove |
| Custom page size | remove |
| Random-access pages | remove |
| Progressive (cursor) load | remove |
| Drill to related record | remove |
| Drill across a dataset (subquery) | remove |
Editing data
| Add records | remove |
| Update records | remove |
| Delete records | remove |
Wrap a command (aws, kubectl, gh…) and read the JSON it prints as rows.
Retrieving data
| Filter by conditions | remove |
| Server-side sort | remove |
| Quick search | remove |
| Count | check_circle |
| Aggregate — sum / avg / min / max | remove |
| Custom page size | remove |
| Random-access pages | remove |
| Progressive (cursor) load | remove |
| Drill to related record | remove |
| Drill across a dataset (subquery) | remove |
Editing data
| Add records | remove |
| Update records | remove |
| Delete records | remove |
Local files as tables, with in-memory filtering and record-level traversal.
Retrieving data
| Filter by conditions | check_circle |
| Server-side sort | remove |
| Quick search | remove |
| Count | check_circle |
| Aggregate — sum / avg / min / max | remove |
| Custom page size | remove |
| Random-access pages | remove |
| Progressive (cursor) load | remove |
| Drill to related record | check_circle |
| Drill across a dataset (subquery) | remove |
Editing data
| Add records | remove |
| Update records | remove |
| Delete records | remove |
Append-only JSONL log files — write structured entries that the log viewer reads back live.
Retrieving data
| Filter by conditions | remove |
| Server-side sort | remove |
| Quick search | remove |
| Count | remove |
| Aggregate — sum / avg / min / max | remove |
| Custom page size | remove |
| Random-access pages | remove |
| Progressive (cursor) load | remove |
| Drill to related record | remove |
| Drill across a dataset (subquery) | remove |
Editing data
| Add records | check_circle |
| Update records | remove |
| Delete records | remove |
Create / update / delete also depend on whether the source is writable — a query-sourced (Rhai) table is read-only by design. You can also read from one backend and write through another.
Everything you'd expect from an operational tool, described in config and rendered natively.
Vantage UI embeds a local MCP server, so the coding agent you already use — Claude Code, Cursor, any MCP client — builds your console without leaving the editor.
list_data_sources
introspect_schema
sample_records
current_project_layout
get_json_schema
validate_config
list_logs
The agent writes config to disk via plain file I/O; the tools only read and validate. You review and commit — it's early and gets better every release.
Vantage ships agentskills.io-style skills (vantage-ui-builder) that teach any agent how to author pages, charts, Rhai expressions and drill-downs — no extra subscription, kept in sync with the app.
Built on GPUI, not a web view.
Edit YAML or data — the UI updates in place.
Your app, data and config never leave the box.
YAML + Rhai you version, diff and hand off.
Where Vantage is heading. Tap the deck to flip through.
Multi-step flows for guided data entry and operations — collect input across screens, then commit in one go.
Turn the same config — data sources plus Rhai logic — into real backend APIs your own frontend or mobile app can call. Start in the console; graduate to code.
No lock-in: export your console to a code repository or container image you own and run anywhere. Start in low-code, leave with real code.
Connect change-data-capture and live database events so tables update in real time, not just on refresh.
touch_app Click to deal the next card