Jupyter notebooks, natively
Open any .ipynb on a real kernel. %%sql cells run on your saved connections and hand the result to Python.
| country | rev |
|---|---|
| US | 742 118 |
| DE | 388 405 |
| JP | 301 990 |
Native macOS, GPU accelerated, made with Rust.
SQL, Python notebooks, dbt native and a terminal for your agents. CLI and MCP built in.
For Apple silicon Macs, macOS 14 or later.
-- Revenue by acquisition channel, Q3 2026 select channel, count(*) as orders, round(sum(revenue), 0) as revenue, round(avg(revenue), 2) as avg_order, round( 100.0 * sum(revenue) / sum(sum(revenue)) over (), 1 ) as share_pct from analytics.orders where order_date >= date '2026-07-01' group by channel order by revenue desc;
{{ config( materialized='incremental', unique_key='order_id' ) }} with orders as ( select * from {{ ref('stg_orders') }} ), kits as ( select * from {{ ref('starter_kit_lines') }} ) select o.order_id, o.channel, o.revenue - coalesce(k.kit_revenue, 0) as revenue, o.order_seq = 1 as is_first_order from orders o left join kits k using (order_id) {% if is_incremental() %} where o.updated_at > (select max(updated_at) from {{ this }}) {% endif %}
Q3 revenue reached $1.95M, up 4.3% on Q2. Growth came from Organic and Affiliate; Paid Search kept its volume but earned less per order.
| channel | Q2 | Q3 | change |
|---|---|---|---|
| Paid Search | 598 112 | 612 340 | +2.4% |
| Organic | 428 870 | 488 917 | +14.0% |
| 312 405 | 301 552 | −3.5% | |
| Referral | 251 377 | 274 008 | +9.0% |
| Social | 205 960 | 196 480 | −4.6% |
| Affiliate | 61 044 | 74 236 | +21.6% |
The brand campaign launched on 4 August and drove 61% of new paid orders. Its landing page features the $40 starter kit, so the average order fell from $136.49 to $127.25.
Recommendation: keep the campaign, and measure it on 90-day revenue instead of first order value.
DuckDB, PostgreSQL, Redshift, BigQuery, SQLite and MySQL from one editor with schema-aware completion. Your agent runs the same queries through the mxds CLI or MCP, right in your tab.
You get histograms, null counts and data bars. After every run your agent reads the same result back as token-optimized text, not a wall of JSON.
Open a model and press Preview: mxds renders the Jinja and runs it on your profile's target. Run dbt build from the same bar and read the log under the editor, with lineage one tab over.
Warehouses, local DuckDB files and SQLite side by side, grouped your way. Passwords stay in the macOS Keychain.
Claude Code, Codex, opencode or the next one: any CLI agent runs in the built-in terminal, in tabs or splits. mxds shows which one is working, idle or waiting for you.
See how much of your Claude and Codex plans is left, and when it resets. Set caffeine to Agent and your Mac stays awake for as long as an agent is working.
Select a line in the agent's Markdown report or in its terminal output, leave a note, then send every note back in one keystroke.
The git view follows your working tree live. Read each hunk the moment the agent writes it, revert the one you don't want, and commit the rest.
Recall is a local vector database with local embeddings, one per project. Ask your agent "remember the churn metric we built in August?" and it finds the context, months later.
Your usage dashboard: queries by you and by your agents, busy hours, top connections, error rate and agent working time. It is read from a local database on your Mac.
With the mxds CLI or MCP, your agent opens tabs, runs queries, builds charts and edits notebooks while you watch, and reads every answer as token-optimized AXI output.
mxds is native Rust on a GPU renderer. No Electron and no browser engine drawing the interface, nothing between your keystroke and the frame.
Drawn through Metal, tuned for ProMotion displays.
From launch to a window you can work in. VS Code takes 0.9 s, DataSpell 3.5 s.
Memory right after launch, with a project and a terminal open. VS Code uses 870 MB, DataSpell 1.4 GB.
Measured in October 2026 on a MacBook Pro with M3 Max, macOS 26. Each app opened the same small folder (a git repository with five .sql files) from a fresh profile, with no extensions or plugins. Launches were warm, with the app already in the disk cache.
* Time from starting the process to the last change of the window contents, read from screen captures every 15 ms.
** Physical footprint summed over every process of the app, about 10 seconds after the window appeared. Memory grows as you work: query results, open tabs, notebook kernels and agent sessions all add to it, so expect more than this over a working day.
Open any .ipynb on a real kernel. %%sql cells run on your saved connections and hand the result to Python.
| country | rev |
|---|---|
| US | 742 118 |
| DE | 388 405 |
| JP | 301 990 |
Your project as a graph, built from the files. Click a model to read its docs, drag boxes to tidy up, export to PNG.
Line, bar, heatmap, funnel, waterfall and more, straight from the table you just ran.
Yours and your agent's, searchable by text or by the table it touched. Favorites never expire.