Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ auto-generated per-PR notes; this file is the curated, human-readable history.
monotonically increasing generation counter so a superseded in-flight
response can never overwrite a newer edit's result. `ch-client.js`'s
`queryJson`/`queryDashboardTile` gained an optional `params` argument
(backward compatible) to forward `param_<name>` args to ClickHouse. Per-tile
(backward compatible) to forward `param_<name>` args to ClickHouse®. Per-tile
Type/X/Y overrides, KPI tiles, and dropdown/cascading filters arrive in later
phases (#149 D5–D7).
- **Schema-aware, FROM-driven autocompletion** (#84) — column completion now
Expand Down
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Contributing to the Altinity SQL Browser
# Contributing to the Altinity® SQL Browser

Thanks for your interest! This is a modular, no-framework ES-module SPA that
builds to **one self-contained HTML file** (`dist/sql.html`) served from a
ClickHouse cluster. Quality is held by tests and a strict layering discipline —
ClickHouse® cluster. Quality is held by tests and a strict layering discipline —
please read the hard rules below before opening a PR.

## Quickstart
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Altinity SQL Browser
# Altinity® SQL Browser

**🌐 Website & screenshots: [docs.altinity.com/altinity-sql-browser](https://docs.altinity.com/altinity-sql-browser/)**

An OAuth-gated **SQL browser for any ClickHouse cluster** — schema explorer,
An OAuth-gated **SQL browser for any ClickHouse® cluster** — schema explorer,
tabbed SQL editor with syntax highlighting, find/replace, bracket matching, and
schema-aware autocomplete, streaming results with table / JSON / chart views,
saved queries, history, and shareable links. It ships as a
Expand Down
4 changes: 2 additions & 2 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Security Policy

The Altinity SQL Browser is a single self-contained HTML file (no application
backend) served from a ClickHouse cluster's `user_files/` by an
The Altinity® SQL Browser is a single self-contained HTML file (no application
backend) served from a ClickHouse® cluster's `user_files/` by an
`<http_handlers>` static rule. It talks only to that ClickHouse server and your
OAuth IdP, and makes zero third-party requests. The notes below describe how to
report a vulnerability and the threat model you should deploy against.
Expand Down
2 changes: 1 addition & 1 deletion THIRD-PARTY-NOTICES.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Third-party notices

The Altinity SQL Browser is licensed under Apache-2.0 (see `LICENSE`). The built
The Altinity® SQL Browser is licensed under Apache-2.0 (see `LICENSE`). The built
single-file artifact (`dist/sql.html`) inlines the four runtime dependencies
below (CodeMirror 6 ships as several packages); this file reproduces their MIT
license texts as required, and the same notices are embedded as a comment at
Expand Down
2 changes: 1 addition & 1 deletion docs/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

```
core/ pure logic — strings/numbers/JWT/PKCE/SQL-tokenize/stream-parse
net/ integration — OAuth (config+flow) and the ClickHouse HTTP client
net/ integration — OAuth (config+flow) and the ClickHouse® HTTP client
ui/ presentation — hyperscript (h), icons, and render modules
state model — the state object and pure operations over it
main bootstrap — OAuth callback handling + initial render
Expand Down
4 changes: 2 additions & 2 deletions docs/ASSET-DISTRIBUTION.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Serving the assets across a ClickHouse cluster
# Serving the assets across a ClickHouse® cluster

The Altinity SQL Browser is served *from ClickHouse itself* — there is no
The Altinity® SQL Browser is served *from ClickHouse itself* — there is no
separate web server. That makes "how do the asset bytes reach every node?" a
real design question on a multi-node cluster, because **ClickHouse does not
replicate the `user_files/` directory**: it is a node-local folder.
Expand Down
4 changes: 2 additions & 2 deletions docs/CLICKHOUSE-OAUTH.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Configuring ClickHouse (Antalya) to accept OAuth JWTs
# Configuring ClickHouse® (Antalya) to accept OAuth JWTs

The SQL browser authenticates each user with your OAuth/OIDC provider in the
browser, then sends the resulting JWT to ClickHouse on **every query**:
Expand All @@ -8,7 +8,7 @@ POST / Authorization: Bearer <jwt>
```

For ClickHouse to accept that, it must (1) validate the JWT and (2) map it to a
ClickHouse user with some roles. The **Altinity Antalya** build does this
ClickHouse user with some roles. The **Altinity® Antalya** build does this
natively with a `<token_processors>` entry plus a `<token>` user-directory — no
sidecar, no shared service account; every query runs as the real user.

Expand Down
2 changes: 1 addition & 1 deletion docs/CLICKHOUSE-OSS-OAUTH.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# OAuth on stock/OSS ClickHouse via ch-jwt-verify
# OAuth on stock/OSS ClickHouse® via ch-jwt-verify

Stock (OSS) ClickHouse has no `<token_processors>`, so it can't validate a
`Bearer` JWT itself (it returns `Code: 516. 'Bearer' HTTP Authorization scheme
Expand Down
2 changes: 1 addition & 1 deletion docs/DEPLOYMENT.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

There are now two distinct deployment surfaces:

1. **ClickHouse-native hosted mode** — upload `sql.html` + `sql-config.json` into
1. **ClickHouse®-native hosted mode** — upload `sql.html` + `sql-config.json` into
ClickHouse `user_files/` and serve them from the cluster itself.
2. **Containerized local-runner mode** — run the existing Python local server in
Docker or Kubernetes for local/shared testing, with connections mounted from a
Expand Down
2 changes: 1 addition & 1 deletion docs/LOGIN-SCREEN.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Configuring the login screen

The sign-in screen offers up to three sign-in paths at once — SSO, a
ClickHouse username/password, and a picker for connecting to a different
ClickHouse® username/password, and a picker for connecting to a different
server — so a first-time visitor can see more controls than their deployment
actually needs (#123). All of it is a `config.json` choice; this page is the
full reference for that config, and for what each part of the screen does.
Expand Down
2 changes: 1 addition & 1 deletion docs/ONTIME-CHART-DEMO.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Chart demo — the `ontime` flight dataset

A ready-made **Library** of 10 analytical queries that show off every chart type and
feature in the Altinity SQL Browser, running against the public US flight-history
feature in the Altinity® SQL Browser, running against the public US flight-history
dataset (`ontime`, ~230M rows, 1987–2025) on the Antalya demo cluster.

- **Live demo:** **https://antalya.demo.altinity.cloud/sql**
Expand Down
2 changes: 1 addition & 1 deletion docs/SYSTEM-EXPLORER-DEMO.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# System explorer demo — introspecting ClickHouse itself
# System explorer demo — introspecting ClickHouse® itself

A ready-made **Library** of 14 queries against ClickHouse's own `system` database —
running queries, merges/mutations/replication health, storage, and historical
Expand Down
6 changes: 3 additions & 3 deletions docs/blog/explain-pipeline-graph.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Read your query plan as a graph — Altinity SQL Browser</title>
<title>Read your query plan as a graph — Altinity® SQL Browser</title>
<meta name="description" content="EXPLAIN PIPELINE shows how ClickHouse actually runs a query, but the text is a wall. The SQL Browser draws it as a processor DAG you can pan and zoom — read parallelism and the Resize funnel at a glance.">
<link rel="icon" href="../assets/favicon.svg" type="image/svg+xml">
<link rel="stylesheet" href="../assets/site.css">
Expand All @@ -12,7 +12,7 @@

<header class="site">
<nav class="wrap nav">
<a class="brand" href="../index.html"><img src="../assets/logo.svg" alt=""><span>Altinity SQL Browser</span></a>
<a class="brand" href="../index.html"><img src="../assets/logo.svg" alt=""><span>Altinity® SQL Browser</span></a>
<button class="nav-toggle" aria-label="Menu">☰</button>
<div class="nav-links">
<a href="../features.html">Features</a>
Expand All @@ -30,7 +30,7 @@
<div class="kicker">Performance</div>
<h1>Read your query plan as a graph</h1>
<div class="post-meta"><span>Altinity engineering</span><span class="dot">·</span><span>June 2026</span><span class="dot">·</span><span>4 min read</span></div>
<p class="post-lede"><code class="k">EXPLAIN PIPELINE</code> tells you how ClickHouse will actually run a query. It just tells you in a wall of text.</p>
<p class="post-lede"><code class="k">EXPLAIN PIPELINE</code> tells you how ClickHouse® will actually run a query. It just tells you in a wall of text.</p>

<div class="body">
<p>ClickHouse has one of the better <code class="k">EXPLAIN</code> families around.
Expand Down
6 changes: 3 additions & 3 deletions docs/blog/export.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Export streams straight to disk — even a whole script — Altinity SQL Browser</title>
<title>Export streams straight to disk — even a whole script — Altinity® SQL Browser</title>
<meta name="description" content="Export doesn't touch the result grid — it streams ClickHouse's response body straight to a file (or, for a script, a folder of files) via the File System Access API. Uncapped, any format, flat memory, and a mid-stream error is never baked into the file.">
<link rel="icon" href="../assets/favicon.svg" type="image/svg+xml">
<link rel="stylesheet" href="../assets/site.css">
Expand All @@ -12,7 +12,7 @@

<header class="site">
<nav class="wrap nav">
<a class="brand" href="../index.html"><img src="../assets/logo.svg" alt=""><span>Altinity SQL Browser</span></a>
<a class="brand" href="../index.html"><img src="../assets/logo.svg" alt=""><span>Altinity® SQL Browser</span></a>
<button class="nav-toggle" aria-label="Menu">☰</button>
<div class="nav-links">
<a href="../features.html">Features</a>
Expand Down Expand Up @@ -52,7 +52,7 @@ <h2>The format is the query</h2>
ClickHouse's whole format family, streamed verbatim, with the right extension picked for you. No
<code class="k">FORMAT</code> clause and you get <code class="k">TabSeparatedWithNames</code>, the
<code class="k">.tsv</code> that opens cleanly in Excel or pandas. The console isn't re-serializing
anything — ClickHouse formats the bytes, they flow to the file.</p>
anything — ClickHouse® formats the bytes, they flow to the file.</p>

<pre class="code">SELECT * FROM github.github_events FORMAT Parquet
<span class="c">→ github_events.parquet streaming… 4.2 GB · 12s · Cancel</span></pre>
Expand Down
6 changes: 3 additions & 3 deletions docs/blog/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Blog — Altinity SQL Browser</title>
<title>Blog — Altinity® SQL Browser</title>
<meta name="description" content="Short engineering notes on the Altinity SQL Browser: a SQL console with no backend, mapping the materialized-view web, reading query plans as graphs, and a one-curl local console.">
<link rel="icon" href="../assets/favicon.svg" type="image/svg+xml">
<link rel="stylesheet" href="../assets/site.css">
Expand All @@ -12,7 +12,7 @@

<header class="site">
<nav class="wrap nav">
<a class="brand" href="../index.html"><img src="../assets/logo.svg" alt=""><span>Altinity SQL Browser</span></a>
<a class="brand" href="../index.html"><img src="../assets/logo.svg" alt=""><span>Altinity® SQL Browser</span></a>
<button class="nav-toggle" aria-label="Menu">☰</button>
<div class="nav-links">
<a href="../features.html">Features</a>
Expand Down Expand Up @@ -40,7 +40,7 @@ <h1>Engineering notes</h1>
<a class="card post-card" href="no-backend-sql-console.html">
<div class="kicker">Architecture</div>
<h3>The SQL console with no backend</h3>
<p>One HTML file ClickHouse serves itself, OAuth in the browser, per-user grants, zero third-party requests, and a CSP that enforces it.</p>
<p>One HTML file ClickHouse® serves itself, OAuth in the browser, per-user grants, zero third-party requests, and a CSP that enforces it.</p>
<div class="post-meta"><span>June 2026</span><span class="dot">·</span><span>4 min read</span></div>
</a>
<a class="card post-card" href="materialized-view-web.html">
Expand Down
6 changes: 3 additions & 3 deletions docs/blog/local-console.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>A ClickHouse console in one curl — Altinity SQL Browser</title>
<title>A ClickHouse console in one curl — Altinity® SQL Browser</title>
<meta name="description" content="A zero-dependency Python runner serves the SQL Browser locally against any cluster in your clickhouse-client config. Needs only python3; queries go straight from your browser to the cluster.">
<link rel="icon" href="../assets/favicon.svg" type="image/svg+xml">
<link rel="stylesheet" href="../assets/site.css">
Expand All @@ -12,7 +12,7 @@

<header class="site">
<nav class="wrap nav">
<a class="brand" href="../index.html"><img src="../assets/logo.svg" alt=""><span>Altinity SQL Browser</span></a>
<a class="brand" href="../index.html"><img src="../assets/logo.svg" alt=""><span>Altinity® SQL Browser</span></a>
<button class="nav-toggle" aria-label="Menu">☰</button>
<div class="nav-links">
<a href="../features.html">Features</a>
Expand All @@ -28,7 +28,7 @@

<article class="wrap post">
<div class="kicker">Workflow</div>
<h1>A ClickHouse console in one curl</h1>
<h1>A ClickHouse® console in one curl</h1>
<div class="post-meta"><span>Altinity engineering</span><span class="dot">·</span><span>June 2026</span><span class="dot">·</span><span>3 min read</span></div>
<p class="post-lede">No install ceremony, no new service to trust — point it at the clusters you already have and go.</p>

Expand Down
8 changes: 4 additions & 4 deletions docs/blog/materialized-view-web.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Map the materialized-view web before it bites — Altinity SQL Browser</title>
<meta name="description" content="A mature ClickHouse schema is a graph of materialized views, dictionaries and Distributed tables. Drag a database onto the results pane and the SQL Browser draws the data flow — typed edges, rich cards, transitive across databases.">
<title>Map the materialized-view web before it bites — Altinity® SQL Browser</title>
<meta name="description" content="A mature ClickHouse® schema is a graph of materialized views, dictionaries and Distributed tables. Drag a database onto the results pane and the SQL Browser draws the data flow — typed edges, rich cards, transitive across databases.">
<link rel="icon" href="../assets/favicon.svg" type="image/svg+xml">
<link rel="stylesheet" href="../assets/site.css">
</head>
<body>

<header class="site">
<nav class="wrap nav">
<a class="brand" href="../index.html"><img src="../assets/logo.svg" alt=""><span>Altinity SQL Browser</span></a>
<a class="brand" href="../index.html"><img src="../assets/logo.svg" alt=""><span>Altinity® SQL Browser</span></a>
<button class="nav-toggle" aria-label="Menu">☰</button>
<div class="nav-links">
<a href="../features.html">Features</a>
Expand All @@ -30,7 +30,7 @@
<div class="kicker">Schema</div>
<h1>Map the materialized-view web before it bites</h1>
<div class="post-meta"><span>Altinity engineering</span><span class="dot">·</span><span>June 2026</span><span class="dot">·</span><span>5 min read</span></div>
<p class="post-lede">A mature ClickHouse schema is a graph. Most tools show you a list.</p>
<p class="post-lede">A mature ClickHouse® schema is a graph. Most tools show you a list.</p>

<div class="body">
<p>Here's a thing that happens. You go to drop a "temporary" table, or change a column type, and an
Expand Down
6 changes: 3 additions & 3 deletions docs/blog/multiquery.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Run a whole SQL script, statement by statement — Altinity SQL Browser</title>
<title>Run a whole SQL script, statement by statement — Altinity® SQL Browser</title>
<meta name="description" content="ClickHouse's HTTP interface runs one statement per request, so most browser consoles make you run a script a line at a time. The SQL Browser splits a ;-separated script client-side and runs each statement in order — with run-selection, sessions for temp tables, and a per-statement grid.">
<link rel="icon" href="../assets/favicon.svg" type="image/svg+xml">
<link rel="stylesheet" href="../assets/site.css">
Expand All @@ -12,7 +12,7 @@

<header class="site">
<nav class="wrap nav">
<a class="brand" href="../index.html"><img src="../assets/logo.svg" alt=""><span>Altinity SQL Browser</span></a>
<a class="brand" href="../index.html"><img src="../assets/logo.svg" alt=""><span>Altinity® SQL Browser</span></a>
<button class="nav-toggle" aria-label="Menu">☰</button>
<div class="nav-links">
<a href="../features.html">Features</a>
Expand All @@ -33,7 +33,7 @@ <h1>Run a whole SQL script, statement by statement</h1>
<p class="post-lede">ClickHouse's HTTP interface runs one statement per request — so most browser consoles make you run a script a line at a time. This one doesn't.</p>

<div class="body">
<p>There's a small daily friction with web consoles for ClickHouse. You have a setup script — create a
<p>There's a small daily friction with web consoles for ClickHouse®. You have a setup script — create a
temporary table, load a few rows, run the SELECT you're actually testing, drop the table — and the
console rejects it, because ClickHouse's HTTP endpoint runs exactly one statement per request. So you
run them one at a time, copy-pasting, losing your place. <code class="k">clickhouse-client</code>
Expand Down
6 changes: 3 additions & 3 deletions docs/blog/no-backend-sql-console.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>The SQL console with no backend — Altinity SQL Browser</title>
<title>The SQL console with no backend — Altinity® SQL Browser</title>
<meta name="description" content="Most database UIs are a service you deploy and babysit. This one is a single HTML file ClickHouse serves itself — OAuth in the browser, per-user grants, zero third-party requests, a strict CSP.">
<link rel="icon" href="../assets/favicon.svg" type="image/svg+xml">
<link rel="stylesheet" href="../assets/site.css">
Expand All @@ -12,7 +12,7 @@

<header class="site">
<nav class="wrap nav">
<a class="brand" href="../index.html"><img src="../assets/logo.svg" alt=""><span>Altinity SQL Browser</span></a>
<a class="brand" href="../index.html"><img src="../assets/logo.svg" alt=""><span>Altinity® SQL Browser</span></a>
<button class="nav-toggle" aria-label="Menu">☰</button>
<div class="nav-links">
<a href="../features.html">Features</a>
Expand All @@ -38,7 +38,7 @@ <h1>The SQL console with no backend</h1>
cert to rotate, and someone paged at 2am when it falls over. For something whose entire job is
"let people type <code class="k">SELECT</code>," that's a lot of surface area.</p>

<p>So the Altinity SQL Browser doesn't have a backend. It's one HTML file, and ClickHouse serves it.</p>
<p>So the Altinity SQL Browser doesn't have a backend. It's one HTML file, and ClickHouse® serves it.</p>

<h2>How that works</h2>
<p>You upload the built <code class="k">sql.html</code> into ClickHouse's <code class="k">user_files</code>
Expand Down
Loading