Vantage UI

Features

A native console built from config you own — declarative YAML for structure, Rhai for logic, written by your AI agent.

Two languages, one config

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.

YAML — structure
# 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)
Rhai — logic
// 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.

Connect anything

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.

SurrealDB

Read / write CBOR

The most complete driver — full querying, aggregation, pagination and dataset-level traversal. It is also the one source that pushes: tables update themselves when data changes, with nothing to set up.

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
Live updates — the source pushes changes check_circle

Editing data

Add records check_circle
Update records check_circle
Delete records check_circle

SQLite

Read / write Native (sqlx)

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
Live updates — the source pushes changes remove

Editing data

Add records check_circle
Update records check_circle
Delete records check_circle

PostgreSQL

Read / write Native (sqlx)

CRUD, aggregation and dataset traversal via the SQL query builder; interactive sort/search push-down is being wired up. The framework can also read live changes from a NOTIFY trigger you install — connecting that up from the console is next.

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
Live updates — the source pushes changes remove

Editing data

Add records check_circle
Update records check_circle
Delete records check_circle

MySQL

Read / write Native (sqlx)

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
Live updates — the source pushes changes remove

Editing data

Add records check_circle
Update records check_circle
Delete records check_circle

MongoDB

Read / write BSON

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
Live updates — the source pushes changes remove

Editing data

Add records check_circle
Update records check_circle
Delete records check_circle

DynamoDB

Read-focused JSON

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
Live updates — the source pushes changes remove

Editing data

Add records remove
Update records remove
Delete records remove

GraphQL

Read-only JSON

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
Live updates — the source pushes changes remove

Editing data

Add records remove
Update records remove
Delete records remove

REST APIs

Read-only JSON

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
Live updates — the source pushes changes remove

Editing data

Add records remove
Update records remove
Delete records remove

AWS

Read-only JSON

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
Live updates — the source pushes changes remove

Editing data

Add records remove
Update records remove
Delete records remove

CLI tools

Read-only JSON

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
Live updates — the source pushes changes remove

Editing data

Add records remove
Update records remove
Delete records remove

CSV files

Read-only Typed text

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
Live updates — the source pushes changes remove

Editing data

Add records remove
Update records remove
Delete records remove

Append logs

Append-only JSONL

Append-only JSONL log files — write structured entries that the log viewer picks up on its next refresh.

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
Live updates — the source pushes changes 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.

Build a real App—not just a grid

There are hundreds of enhancements and custom UI elements to achieve best UX.

Data grids

  • arrow_rightVirtualized — stays smooth past a million rows.
  • arrow_rightPersistent sort, quick search and column resize, per project.
  • arrow_rightBackground refresh with no flicker, on change or a schedule.

Tabs & drill-downs

  • arrow_rightOpen related records in child tabs; pin the ones you keep.
  • arrow_rightChain multi-hop drill-downs from a row's context menu.
Forms, dialogs & actions

Forms, dialogs & actions

  • arrow_rightAdd and edit records in form dialogs; confirm destructive steps.
  • arrow_rightRight-click actions run operations or call your own services.
  • arrow_rightStatus workflows offer only the valid next transitions.
Detail sheet

Detail sheet

  • arrow_rightInspect a single row in a side sheet — every field, scrollable.
  • arrow_rightNo widening columns or scrolling sideways to read a record.
Charts & dashboards

Charts & dashboards

  • arrow_rightBar, line and pie charts arranged on a dashboard grid.
  • arrow_rightDropdown controls re-filter the whole dashboard reactively.
Log viewer

Log viewer

  • arrow_rightBrowse structured logs in-app, newest first, filtered by level.
  • arrow_rightAuto-refreshes as new entries arrive — no tailing a terminal.
  • arrow_rightReads AWS CloudWatch and other log sources as a live table.
  • arrow_rightAttach logs to one-click feedback straight from the view.
Coming soon

Ship it as an API, not just an app

The same config you build the console from can serve your own frontend. Author the backend in Vantage UI — no hand-written Rust — then take it live two ways, both with zero code.

developer_mode_tv

Run it locally

Start the API server on your machine and point your own React or mobile app at it — the same typed data surface the console speaks, now backing your frontend.

deployed_code

Deploy it

Export a standalone, dockerised Axum server — your project embedded straight from Vantage UI — and ship it to AWS Lambda or Kubernetes. Stateless, with a local cache.

Transactional REST first; reactive (WebSocket) after. See the engine that runs it →

Your agent does the typing

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.

chatDescribe the tool
arrow_forward
travel_exploreAgent introspects over MCP
arrow_forward
data_objectWrites YAML + Rhai
arrow_forward
boltApp hot-reloads

Read-only tools the agent gets

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.

Bundled skills

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.

speed

Native & GPU-accelerated

Built on GPUI, not a web view.

sync

Reactive, no refresh

Edit YAML or data — the UI updates in place.

lock

Local & private

Your app, data and config never leave the box.

code

Config-as-code

YAML + Rhai you version, diff and hand off.

On the roadmap

Where Vantage is heading. Tap the deck to flip through.

Roadmap conversion_path

Wizards

Multi-step flows for guided data entry and operations — collect input across screens, then commit in one go.

Roadmap api

Server-side facade APIs

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.

Roadmap deployed_code

Export to real 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.

Roadmap sensors

Live tables everywhere

SurrealDB tables already update themselves. Next: subscribe to the change-data-capture stream you already run, so Postgres, MySQL and Oracle go live the same way.

touch_app Click to deal the next card

download Download for Mac — free apps See example apps