caioricciuti/duck-ui

The fully open-source DuckDB workbench that runs in your browser. SQL editor, notebooks, charts, AI assistant. No install, no signup, no backend — your data never leaves the tab.

Duck‑UI – DuckDB用のブラウザベースのワークベンチ

何であるか – Duck‑UI は、DuckDB 分析データベース用のオープンソースで完全にクライアントサイドのUIです。ブラウザ(または小さなDockerコンテナ)で実行され、データをサーバーに送信することはありません。UIにはコードエディタ、ノートブックサポート、結果グリッド、チャート機能、および自然言語をSQLに変換できるオプションのAIアシスタントが統合されています。

主な機能

  • SQLエディタ:Monacoベースの自動補完、フォーマット、マルチタブワークスペース、クエリ履歴。
  • ノートブックインターフェース:SQLセル、Markdown、セルごとの可視化を混合。
  • データインポート:CSV、JSON、Parquet、Arrow、XLSX、およびネイティブの .duckdb ファイルをドラッグアンドドロップ、URL、またはクラウドストレージ(S3、GCS、Azure、R2、MinIO)からインポート。
  • 結果グリッド:仮想スクロール、ソート、フィルタリング、セルの詳細確認、CSV/JSON/XLSX/Parquetへのエクスポート。
  • チャート – 16種類の組み込みタイプ、各シリーズごとのカスタマイズ可能、PNGまたはSVGとしてエクスポート可能。
  • AI「Duck Brain」 – テキストからSQLへの変換とワンクリックでのエラー修正。以下のいずれかで動作:
    • WebLLM(純粋なWASM、オフライン、APIキー不要)
    • OpenAI、Anthropic、Chrome内蔵AI、または任意のOpenAI互換エンドポイント(Ollama、DeepSeekなど)。 送信されるのはスキーマのみ(データは送信されない)。WebLLMを使用すると、すべての処理がブラウザ内で完結します。
  • 共有・埋め込み – 完全な分析(クエリ、ノートブック、チャート設定)をURLにエンコードするか、<duck-embed>ウェブコンポーネントで埋め込むことで共有可能。バックエンドは不要。
  • 永続化 – OPFSベースのローカルデータベースは再読み込み後も保持。認証情報はブラウザ内にAES‑256‑GCMで暗号化保存。
  • 外部接続 – リモートのDuckDB HTTPサーバーやDuckLakeカタログに接続可能。
  • どこでもデプロイ可能 – 静的サイト、Dockerイメージ、GitHub Pages、オフライン端末など。

なぜ存在するか – 公式のDuckDB UIは閉鎖的で、ローカルのDuckDBプロセスが必要であり、オフラインや自己ホスティングができない。Duck‑UIは完全にオープンで、埋め込み可能、オフライン対応の代替手段を提供し、プラグイン可能なAIバックエンドを備える。

導入方法

# 公式Dockerイメージを実行
docker run -p 5522:5522 ghcr.io/caioricciuti/duck-ui:latest
# その後、ブラウザで http://localhost:5522 を開く

またはリポジトリをクローンしてローカルで開発:

git clone https://github.com/caioricciuti/duck-ui.git
cd duck-ui
bun install   # npmも利用可能
bun run dev   # http://localhost:5173

ライブデモは demo.duckui.com で利用可能。

一般的な利用例

  • インストール不要でCSV/Parquetデータセットの探索的データ分析。
  • GitHub Pagesや内部キオスクに読み取り専用のデータダッシュボードを公開。
  • AIアシスタント付きでSQLクエリの迅速なプロトタイピング。
  • ドキュメントやウェブアプリ内にインタラクティブなSQLエクスプローラーを埋め込む。

ライセンスとコミュニティ – MITライセンス、ソースは完全にオープン。GitHubの通常のワークフローで貢献を歓迎。ガイドラインは CONTRIBUTING.md を参照。


すべての詳細はリポジトリのREADMEから直接取得。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • Dispatch
  • プロジェクト