Skip to content(if available)orjump to list(if available)

The DuckDB Local UI

The DuckDB Local UI

112 comments

·March 12, 2025

jarpineh

The UI looks nice and is by itself a welcome addition.

I am somewhat at odds with it being a default extension build into DuckDB release. This still is a feature/product coming from another company than the makers of DuckDB [1], though they did announce a partnership with makers of this UI [2]. Whilst DuckDB has so far thrived without VC money, MotherDuck has (at least) 100M in VC [3].

I guess I'm wondering where the lines are between free and open source work compared to commercial work here. My assumption has been that the line is what DuckDB ships and what others in the community do. This release seems to change that.

Yes, I do like and use nice, free things. And I understand that things have to be paid for by someone. That someone even sometimes is me. I guess I'd like clarification on the future of DuckDB as its popularity and reach is growing.

[1] https://duckdblabs.com

[2] https://duckdblabs.com/news/2022/11/15/motherduck-partnershi...

[3] https://motherduck.com/blog/motherduck-open-for-all-with-ser...

edit: I don't want to leave this negative sounding post here without addendum. I'm just concerned of future monetization strategies and roadmap of DuckDB. DuckDB is a good and useful, versatile tool. I mainly use it from Python through Jupyter, in the browser and native. I haven't felt the need for commercial services (plus purchasing them from my professional setting is too convoluted). This UI whilst undoubtedly useful seems to be leaning towards commercial side. I merely wanted some clarity on what it might entail. I do hope DuckDB and its community even more greater, better things, with requisite compensation for those who work to ensure this.

mytherin

One of the DuckDB maintainers here. To clarify - the UI is not built into the DuckDB release. It is an extension that is downloaded and installed like any other extension. This extension happens to be developed by MotherDuck. We collaborated with them to streamline the experience - but fundamentally the extension is not distributed as part of DuckDB and works similarly to other extensions.

To be specific, the work we did was:

* Add the -ui command to the shell. This executes a SQL query (CALL start_ui()). The query that gets executed can be customized by the user through the .ui_command option - e.g. by setting .ui_command my_ui_function().

* The ui extension is automatically installed and loaded when the start_ui function is executed - similar to other trusted extensions we distribute. The automatic install and load can be disabled through configuration (SET autoinstall_known_extensions=false, SET autoload_known_extensions=false) and is also disabled when SET enable_external_access=false.

jarpineh

The nature of UI as an extension is somewhat hard to understand, since its installation method differs from other extensions. Even core ones. Some extensions autoload, some require INSTALL query, and this one has its own special builtin query. It at least feels more ingrained than other extensions by its user experience.

Then there's the (to me) entirely new feature of an extension providing a HTTP proxy for external web service. This part could have been more prominently explained.

Edit: the OP states that "built-in local UI for DuckDB" and "full-featured local web user interface is available out-of-the-box". These statements make me think this feature comes with the release binary, not that it's an extension.

To clarify my point: for me it's not the possible confusion of what this plugin does or how, but what this collaboration means for the future of DuckDB's no-cost and commercial usage.

mytherin

I agree that the blog post seems to hint at the fact that this functionality is fully baked in in certain places - we've adjusted the blog post to be more explicit on the fact that this is an extension.

We have collaborated with MotherDuck on streamlining the experience of launching the UI through auto-installation, but the DuckDB Foundation still remains in full control of DuckDB and the extension ecosystem. This has no impact on that.

For further clarification:

* The auto-installation mechanism is identical to that of other trusted extensions - the auto-installation is triggered when a specific function is called that does not exist in the catalog - in this case the `start_ui` function. See [1]. The query I mentioned just calls that function. The only special feature here is the addition of the CLI flag (and what that flag executes is user-configurable).

* The HTTP server is necessary for the extension to function as the extension needs to communicate with the browser. The server is open-source as part of the extension code [2]. The server (1) fetches web resources (javascript/css) from ui.duckdb.org, and (2) communicates with localhost to co-ordinate the UI with DuckDB. Outside of these the server doesn't interface with other external web services.

[1] https://github.com/duckdb/duckdb/blob/main/src/include/duckd...

[2] https://github.com/duckdb/duckdb-ui

simonw

Reminiscent of what Deno are doing with their Deno K/V feature, which works in the open source project using SQLite but gets a big upgrade if you use it with Deno Deploy: https://til.simonwillison.net/deno/deno-kv

I'm OK with this. Commercial open source projects need a business model. I get why this can be controversial, but the ecosystem needs to find ways to fund future development and I'm willing to compromise on purity if it means people are getting paid for their work.

(Actually it looks like the UI feature may depend on loading closed source assets across the Internet? If so that changes my comfort level a lot, I'm not keen on that compromise.)

dowager_dan99

I don't see this as the same thing. Deno is an OS product within a commercial enterprise. DuckDB is an OS project/org; MotherDuck is a for-profit company. They have tight integration and partnerships but were largely independent. This seems to be blurring that line. There is a huge ecosystem around SQLite without this confusion.

simlevesque

https://github.com/denoland/denokv

You can self host Deno KV since over a year.

jorams

That doesn't change what they're saying. The self-hosted backend you're linking is a network-accessible version of the local SQLite backend. The hosted backend is transparently globally replicated and built on FoundationDB, with a very different (better) scaling story.

jarpineh

I have thought that the commercial nature of the (heh) mother company here, DuckDB labs, is support contracts and the like. Whilst MotherDuck is just another VC funded company in the DuckDB ecosystem. This new extension being added the list of default extensions blurs the line. That it seemingly is a proxy to closed source product from another company makes things even murkier. I can see a point for a for-pay external extension, but this one feels more like an AD for other company's services.

datadrivenangel

DuckDB labs has stock in MotherDuck to align ownership.

I actually really like the close partnerships in theory because it aligns incentives, but this crosses the line by not being open enough. The tight motherduck integration with DuckDB for externally hosted DuckDB/Motherduck databases is fine and good: preferential treatment where the software makes it easy to use the sponsoring service. The local UI which is actually fully dependent on the external service is off-putting. It's a little less bad because it's an extension, but it's still worrying from a governance and principals perspective.

blackoil

I think primary concern is will DucDb pull something like RedisLabs. Wherein they are open source till it gets enough traction and after that pull the rug.

threecheese

To be fair, the “traction” here was AWS using their massive competitive levers to kill RedisLabs’ long-existing (and quite reasonable/tolerated by open source) monetization avenue, risking the continued funding for redis.

To characterize this as a rug pull is unfair IMO.

capkutay

I think this is a bit of a non issue. The UI is just that, a UI. Take it or leave it. If it makes your life easier, great. If not, nothing changes about how you use DuckDB.

There is always going to be some overlap between open source contributions and commercial interests but unless a real problem emerges like core features getting locked behind paywalls there is no real cause for concern. If that happens then sure let’s talk about it and raise the issue in a public forum. But for now it is just a nice convenience feature that some people (like me) will find useful.

vamega

This looks pretty great. The UI looked fantastic, and the post mentioned that it was open source. However what's open source appears to be the DuckDB extension, which forwards the requests to a remote URL. I've not been able to find the code for the actual UI.

Is the actual UI open source, or is that something MotherDuck is allowing to be used by this while remaining proprietary? Right now it doesn't appear like this would work without an internet connection.

xemoka

Yeah, this is really concerning. The handwaving around "keeping the ui up to date" by hosting it on ui.duckdb.org instead of embedding it doesn't taste great to me.

At least it's hosted on duckdb.org and not mother duck, but I really would expect to see that source somewhere. Disappointing unless I've missed it.

Breadcrumbs in the extension src: https://github.com/duckdb/duckdb-ui/blob/963e0e4d4c6f84b2536...

xemoka

Yes. So confirmation from Jeff Raymakers, a software engineer at MotherDuck, the UI is not open source.

> Jeff Raymakers — Today at 9:25 AM

> The language in the blog post is misleading, and we're going to correct it.

> The UI extension is open source, but the UI itself is not.

jarpineh

The docs say that the extension's server is configured here: https://duckdb.org/docs/stable/extensions/ui#remote-url

But yeah, I can't find docs nor source for the UI. And the extension docs refer to MotherDuck's own UI: https://motherduck.com/docs/getting-started/motherduck-quick...

So, a bit confusing way this is set up.

plipt

How is this promoted as a "local UI" if it gets the UI from a remote URL?

Maybe the closed source UI is downloaded upon first execution for installation and then cached locally?

Or is this a web app that loads from the remote URL each time?

daveguy

It's a web interface, but it is served from the local machine. The default is http://localhost:4213/

See the note just above this link on data locations and explicit opt-in to motherduck:

https://duckdb.org/2025/03/12/duckdb-ui.html#features

szarnyasg

I'm a co-author of the blog post. I agree that the wording was confusing – apologies for the confusion. I added a note at the end:

> The repository does not contain the source code for the frontend, which is currently not available as open-source. Releasing it as open-source is under consideration.

memset

The actual UI is not open source.

(Someone could write an actually open source UI extension for duckdb, but that would require a lot of investment that so far only motherduck has been able to provide.)

dowager_dan99

I've looked at quite a few options, and this one (the product of a single person) is a great base, and MIT licensed: https://github.com/caioricciuti/duck-ui

If you want to support a real OS UI take a look.

thenaturalist

Concur, this is rather confusing wording and the GUI components are closed source as far as I can see.

markhalonen

I suggest https://perspective.finos.org/ for data viz to be built in. We use DuckDB paired with Perspective for client-side BI use case, and it's been great.

mritchie712

+1

we're using Perspective in crabwalk[0] (it's like dbt specifically built for duckdb and written in rust) and it's amazing paired with duckdb. Near instant loads for hundreds of thousands of rows and you can keep everything in arrow.

0 - https://github.com/definite-app/crabwalk

0cf8612b2e1e

Where are you using/advocating crabwalk?

It does look interesting, but for the local ETL use case, I am missing the pitch on just having my own collection of SQL scripts. Presumably the all-local case needs less complexity. Unless the idea is that this will eventually support more connectors/backends and work as a full dbt replacement?

mritchie712

A few features:

* Built-in column level lineage (i.e. dump in 20 .sql files and crabwalk automatically figures out lineage)

* Visualize the lineage

* Clean handling of input / output (e.g. simply specify @config output and you can export results to parquet, csv, etc.)

* Tests are not yet implemented, but crabwalk will have built-in support for tests (e.g. uniqueness, joins, etc.)

we're using it in our product (https://www.definite.app/), but only for lineage right now.

null

[deleted]

texodus

Glad you dig it! Check out our pro version to - it also support DuckDB, Python/Pyodide and more! https://prospective.co

pepperonipboy

Wow that's really cool! Part of my PhD thesis was about writing stable treemapping algorithms for temporal data. The idea being that you want your treemap cells not to fly around like what I'm seeing in your demo, but to remain more or less in the same position without sacrificing too much on the cells aspect ratios. We've come up with a pretty effective and fast method to do that, check out the paper and a demo down below. Maybe we could even do a collaboration to get this implemented in perspective.

https://github.com/EduardoVernier/eduardovernier.github.io/b...

https://youtu.be/Bf-MRxhNMdI?list=PLy5Y4CMtJ7mKaUBrSZ3YgwrFY... (see the GIT method)

texodus

That looks much better, thanks I will read up.

tobilg

Have a look at https://sql-workbench.com eventually, as it's using DuckDB WASM & Perspective to render the query results. Let me know what you think!

markhalonen

This is actually how I discovered Perspective!

ciupicri

The online demo looks great and promising, too bad it's unusable for me. I've tried installing it with conda from conda-forge and no luck. I've tried installing it with pip, the same. I've also cloned the repository from github, tried to build it and failed, but I don't remember the details.

Why is some software so difficult to install beats me.

timkpaine

Have you ever reported an issue? I use perspective heavily on a variety of platforms both conda and pypi without any problems.

ciupicri

Not yet, because I wanted to give it one more try while documenting all the steps.

dleeftink

Why Perspective? If going for a D3 wrapper, Plot would offer more flexibility.

summer_avery

We've built a nice integration for Plot + DuckDB, found here: https://www.duckplot.com/!

stared

I really like the columns explorer, https://motherduck.com/blog/introducing-column-explorer/.

Just a few days ago I have been looking for existing column explorers that look like from Kaggle Dataset, but I was not able to find anything. And this one by DuckDB is better!

thenaturalist

I have seen a ton of DB GUI clients/ cloud based data tools for analytics purposes and the fact that MotherDuck's column explorer/ column data distribution is hands down the best I know is puzzling me.

It seems nobody else besides them cares.

Seeing data distribution, unique values, min/ max/ percentiles is so easy and powerful.

Really commend whoever came up with that.

It's a bit of a shame this metadata cannot be queried itself, would be immensely useful for automatic data profiling/ QA at scale.

stared

Do you know if there is any open source TypeScript component that can be used in a project?

thenaturalist

None of the UI is OSS as far as I am aware. :/

mritchie712

it's partly bc this would be extremely slow and expensive with many other databases (e.g. it'd be really slow on postgres, very expensive on snowflake).

oulipo

Seems heavily inspired by the column summary of ObservableHQ, but that's nice!

hamilton

(I designed and built the Column Explorer feature)

Observable's column summary feature is very nice! But I do think there's a very common lineage around these kinds of diagnostics which motivated both Observables and ours. See Jeff Heer's profiler paper[1] for more.

I'm very passionate about this area because I think "first mile problems" are underserved by most tools, but they take the longest to work out.

We had to do some gnarly things[2] to make this feature work well; and there's a lot of room to make it scale nicely and cover all DuckDB data types.

[1] http://vis.stanford.edu/papers/profiler [2] https://motherduck.com/blog/introducing-column-explorer/

oulipo

Interesting, I guess there's plenty of ideas to grab from their work too! https://observablehq.com/documentation/cells/data-table

ryguyrg

i’m one of the co-founders at MotherDuck. our team is building the UI in collaboration with the team at DuckDB Labs.

this is a first release. we know there are going to be tons of feature requests (including @antman’s request for simple charts). feel free to chime in on this thread and we’ll keep an eye on it!

meanwhile, hope you enjoy this release! we had lots of fun building it.

ayhanfuat

> The DuckDB UI is also fully open source: visit the duckdb/duckdb-ui repository if you want to dive in deeper.

Is this really the case? The repo doesn’t seem to have any ui elements?

ryguyrg

We updated the video [if that's the reference], because it is not yet open source. Thanks for pointing that out!

datadrivenangel

Y'all at MotherDuck are doing such a great job that I encourage you to not try and muddle the open/closed source divide, at least not this early in the startup lifecycle. Having a local MotherDuck interface is awesome, and doesn't gain much by being 'open source'. Wait to cash out on the community good will when the rewards are higher.

simonw

Is this feature open source?

plipt

Maybe you've already seen, but it appears the answer is no, based on xemoka's comment here quoting someone at duckdb

https://news.ycombinator.com/item?id=43344932

999900000999

How do you compete with Supabase ? Do you have a built in authentication system? Anything like edge functions.

I've been trying to build a small card game with Supabase and I'm sorta stuck...

dowager_dan99

Supabase IMO sits in the middle of the curve between Firebase and PocketBase, not really the same use case as DuckDB & MotherDuck.

999900000999

Motherduck has pretty generous free usage limits, I figured it was worth asking...

jscheel

Not really the same use-case. DuckDB is more for read-heavy analytical uses.

null

[deleted]

owlstuffing

I’ve been using IntelliJ’s JDBC-based UI, this will add a lot more capability. I’m using the manifold-sql[1] project with duckdb for analytics, amazing.

1. https://github.com/manifold-systems/manifold/blob/master/doc...

sergius

Would it be possible to install duckdb extensions in python using packages instead of dialing back home to the extension service? Lots of companies block direct connections to that service but allow packages via JFrog's Artifactory.

dminik

I don't have anything to say in regards to DuckDB or this UI. But, I do find it funny that their homepage animation causes google to index the description as:

DuckDB is a fast ana| database system.

r3tr0

we use a canvas windowed approach for duck db but we specialize in system perf data.

https://yeet.cx/play

leetrout

Love to see this! This is something rethinkdb (RIP) got right from the start IMO and I like to see tooling like this available from the manufacturer :)

dleeftink

Really cool. Could you elaborate a but more on what the 'notebook' form factor entails? Should we expect the same as other notebook environments?

ssgirl11

Our notebook form factor is unique compared to other notebook environments - we don't serialize the results.

We also have some added bonuses for query profiling and data exploration like the Column Explorer.

The easiest way to give it a whirl is to type 'duckdb -ui' in the CLI.

Let us know if you have any other questions

dleeftink

Just wondering about reactivity, imports, exports, plain file storage? I don't expect it to be there on a first release, but that's where my mind goes if I see a reference to the notebook form factor.

swyx

is it a jupyter or marimo style notebook or some third thing?

russell_h

This looks great!

At risk of harping on a tired topic, have you thought about embedding an AI query generator? For ad-hoc queries like I mostly use DuckDB for I’ve found it’s almost always fastest for me to paste the schema to ChatGPT, tell it what I’ll looking for, then paste the response back into the DuckD CLI, but the whole process isn’t very ergonomic.

I think I’m sort of after duckbook.ai, but with access to a local duckdb.

ssgirl11

Thanks for sharing. We haven't cracked the code on doing this locally, but we are working on similar features and functionality in MotherDuck, like the prompt () and embedding () functions. More to come; we're definitely thinking about it!

tobilg

You can potentially use Ollama running a model locally, e.g. https://ollama.com/library/duckdb-nsql

oulipo

The UI of duckbook.ai is great! I wish someone would open-source something similar!