diff --git a/docs/web/basics/connect.mdx b/docs/web/basics/connect.mdx
new file mode 100644
index 000000000..3b4bf5111
--- /dev/null
+++ b/docs/web/basics/connect.mdx
@@ -0,0 +1,101 @@
+---
+title: "Connect to LanceDB"
+sidebarTitle: "Connect"
+description: "Connect to an embedded database in a local directory or in object storage, or to a LanceDB Enterprise deployment."
+icon: plug
+keywords: ["connect", "uri", "embedded", "object storage", "s3", "enterprise", "db://"]
+---
+
+import {
+ PyConnect,
+ PyConnectAsync,
+ PyConnectEnterpriseQuickstart,
+ PyConnectObjectStorage,
+ PyConnectObjectStorageAsync,
+ RsConnect,
+ TsConnect,
+ TsConnectEnterpriseQuickstart,
+ TsConnectObjectStorage,
+} from '/snippets/connection.mdx';
+
+The URI you pass to `connect` decides where the work runs. The same Python,
+TypeScript and Rust SDKs open all three kinds;
+[OSS and Enterprise](/basics/offerings) describes how the two offerings differ.
+
+| URI | Where queries run |
+| --- | --- |
+| A local path, such as `./data` | OSS: in your process |
+| `s3://`, `gs://` or `az://` | OSS: in your process, reading object storage |
+| `db://` | Enterprise: on the deployment |
+
+## A local directory {#local}
+
+Embedded in your application, LanceDB reads and writes the tables in a
+directory on disk.
+
+
+
+ {PyConnect}
+
+
+
+ {PyConnectAsync}
+
+
+
+ {TsConnect}
+
+
+
+ { "use lancedb::connect;\n" }
+ { "\n" }
+ {RsConnect}
+
+
+
+## Object storage {#object-storage}
+
+With an object storage URI the library is still embedded: your process runs
+every query and reads and writes the bucket directly, with the credentials from
+its environment or its storage options. [Configuring storage](/deployment/storage)
+covers credentials, endpoints and provider options.
+
+
+
+ {PyConnectObjectStorage}
+
+
+
+ {PyConnectObjectStorageAsync}
+
+
+
+ {TsConnectObjectStorage}
+
+
+
+In Rust, pass the same URI to `connect`.
+
+## LanceDB Enterprise {#enterprise}
+
+A `db://` URI connects to a deployment, which runs each operation for you. Get
+the database URI, API key, region and endpoint from the deployment's
+administrator, and pass the endpoint as `host_override`. Keep the API key in a
+secret manager or the environment rather than in source.
+
+
+
+ { "import lancedb\n\n" }
+ {PyConnectEnterpriseQuickstart}
+
+
+
+ { "import * as lancedb from \"@lancedb/lancedb\";\n\n" }
+ {TsConnectEnterpriseQuickstart}
+
+
+
+In Rust, the connection builder takes the same settings through `api_key`,
+`region` and `host_override`. To use OAuth instead of an API key, see
+[Authentication](/enterprise/authentication); for every connection option, see
+[Database](/management/database#deployment).
diff --git a/docs/web/basics/offerings.mdx b/docs/web/basics/offerings.mdx
new file mode 100644
index 000000000..57192f66f
--- /dev/null
+++ b/docs/web/basics/offerings.mdx
@@ -0,0 +1,36 @@
+---
+title: "OSS and Enterprise"
+sidebarTitle: "OSS and Enterprise"
+description: "LanceDB OSS and LanceDB Enterprise: what each one is, and which features each one has."
+icon: compass
+keywords: ["oss", "enterprise", "embedded", "deployment", "availability", "comparison"]
+---
+
+LanceDB comes in two forms. Both use the same SDKs and the same
+[Lance](/basics/lance) tables, and this documentation covers both.
+
+- **LanceDB OSS** is a library. It runs inside your process and works on tables
+ in a local directory or in object storage, with nothing else running on your
+ behalf.
+- **LanceDB Enterprise** is a database service. A `db://` connection sends each
+ operation to a deployment, which runs it.
+
+[Connect to LanceDB](/basics/connect) shows how to start with either.
+
+## How a page says where it applies {#labels}
+
+A page that declares its availability opens with a label.
+OSS and Enterprise name
+the offerings it applies to, and **varies** marks one where it depends on the
+version or configuration; the sentence after the label says how. A page that
+applies to one offering only also shows that offering's tag in the sidebar.
+Every page stays in the same navigation, whichever offering you use.
+
+## Feature availability {#availability}
+
+These are the pages that declare where they apply.
+
+{/* availability-comparison */}
+
+[LanceDB Enterprise](/enterprise) describes what a deployment adds and how the
+two differ in operation, such as scale, caching and maintenance.
diff --git a/docs/web/docs.json b/docs/web/docs.json
index 4c002b0a5..990dc6c7a 100644
--- a/docs/web/docs.json
+++ b/docs/web/docs.json
@@ -253,6 +253,8 @@
"group": "Getting Started",
"pages": [
"index",
+ "basics/offerings",
+ "basics/connect",
"quickstart",
"architecture",
"basics/sdk",