-Describe the task. locus selects the protocol and coordinates the agents.
+Describe the task. Oracle Generative AI – Multi-Agent Locus SDK selects the protocol and coordinates the agents.
-- **From idea to production agent in minutes, not weeks.** Describe the task; locus picks the pattern and assembles the network from eight production-tested protocols.
+- **From idea to production agent in minutes, not weeks.** Describe the task; Oracle Generative AI – Multi-Agent Locus SDK picks the pattern and assembles the network from eight production-tested protocols.
- **Self-critiquing agents with grounded outputs.** Every turn is scored; every claim is verified against the tool result that produced it.
- **Full causal traceability.** Every decision, tool call, and reasoning step is a typed event you can replay, audit, and debug.
@@ -107,7 +109,7 @@ print(agent.run_sync("Should I bring an umbrella to Tokyo tomorrow?").text)
[Notebook 14 — basic agent →](notebooks/notebook_06_basic_agent.md)
-## What locus gives you
+## What Oracle Generative AI – Multi-Agent Locus SDK gives you
@@ -181,10 +183,10 @@ print(result.text) # findings from 3 parallel probes
## Backed by Oracle Database 26ai
-locus ships native primitives for Oracle 26ai — native `VECTOR(N, FLOAT32)`
-with `VECTOR_DISTANCE`, durable agent threads in the database, in-DB
-chunking and embeddings, all without a langchain or langgraph
-dependency.
+Oracle Generative AI – Multi-Agent Locus SDK ships native primitives for
+Oracle 26ai — native `VECTOR(N, FLOAT32)` with `VECTOR_DISTANCE`, durable
+agent threads in the database, in-DB chunking and embeddings, all without
+a langchain or langgraph dependency.
```python
from locus.rag import OCIEmbeddings, OracleVectorStore, RAGRetriever
@@ -211,7 +213,7 @@ notebooks 06 and 07 walk both end-to-end.
## Walk the notebooks
-The fastest way to read locus is to run the notebooks. Each one is a
+The fastest way to read Oracle Generative AI – Multi-Agent Locus SDK is to run the notebooks. Each one is a
single self-contained file under [`examples/`][gh-examples] with a
matching docs page — start at the topic you want, click through to
the source from there.
diff --git a/docs/notebooks/index.md b/docs/notebooks/index.md
index de23c0d9..f52ea90c 100644
--- a/docs/notebooks/index.md
+++ b/docs/notebooks/index.md
@@ -38,7 +38,7 @@ cluster, on-demand reranking. **Start here if you're shipping on OCI.**
| 01 | [OCI transports — start here][t01] | The three OCI transports side by side (V1, Responses, generic chat) |
| 02 | [OCI v1 (`OCIChatCompletionsModel`)][t02] | The default transport — every OCI model family in one class |
| 03 | [OCI Responses (`OCIResponsesModel`)][t03] | Opt-in stateful path with built-in tools |
-| 04 | [OCI Dedicated AI Cluster (DAC)][t04] | Wiring a private endpoint OCID into Locus |
+| 04 | [OCI Dedicated AI Cluster (DAC)][t04] | Wiring a private endpoint OCID into the SDK |
| 05 | [Cohere Reranker V4 on OCI][t05] | Retrieve-then-rerank with OCI on-demand `rerank-v4` |
## 06–07 · Oracle Database 26ai
diff --git a/docs/stylesheets/locus.css b/docs/stylesheets/locus.css
index 433b822d..376c9e0d 100644
--- a/docs/stylesheets/locus.css
+++ b/docs/stylesheets/locus.css
@@ -276,6 +276,21 @@ html {
border-radius: 50%;
pointer-events: none;
}
+/* Compound `.locus-hero p.locus-product-name` (specificity 0,3,1) beats
+ `.md-typeset .locus-hero p` (0,2,1), so the eyebrow size actually wins
+ inside the hero. Second selector covers usages outside the hero (e.g.
+ the workbench page) where `.locus-hero p` isn't competing. */
+.md-typeset .locus-hero p.locus-product-name,
+.md-typeset p.locus-product-name {
+ font-size: 0.78rem !important;
+ line-height: 1.35;
+ letter-spacing: 0.06em;
+ text-transform: uppercase;
+ font-weight: 600;
+ color: var(--locus-ink);
+ opacity: 0.55;
+ margin: 0 0 1.2rem;
+}
.md-typeset .locus-hero h1:first-of-type {
font-size: 2.9rem;
line-height: 1.05;
@@ -292,6 +307,13 @@ html {
.md-typeset .locus-hero__code {
min-width: 0;
}
+/* Indent the hero copy column so the wordmark + H1 + kicker don't sit
+ flush against the content edge. Mobile drops the indent (handled by the
+ responsive block further down — the single-column stack already has the
+ container's own padding). */
+.md-typeset .locus-hero__copy {
+ padding-left: 1.75rem;
+}
.md-typeset .locus-hero h1 .accent {
color: var(--or-red);
}
@@ -435,6 +457,10 @@ html {
gap: 1.4rem;
overflow: visible;
}
+ /* Drop the desktop hero-copy indent when columns stack. */
+ .md-typeset .locus-hero__copy {
+ padding-left: 0;
+ }
.md-typeset .locus-hero::before,
.md-typeset .locus-hero::after {
display: none;
@@ -556,16 +582,28 @@ html {
/* Title block in the middle — "locus" wordmark only.
The slogan lives in the SVG logo and on the homepage; trying to
stack a tagline beneath the title fights Material's absolute-
- positioned topic toggle, so we keep the header clean. */
+ positioned topic toggle, so we keep the header clean.
+ `flex: 0 0 auto` keeps the title from taking the full available row;
+ that leaves room for the palette toggle, search, and source slot to
+ cluster together on the right (see `form.md-header__option { margin-left: auto }` below). */
.md-header__title {
display: flex;
align-items: center;
margin-left: 0.6rem;
align-self: center;
+ flex: 0 0 auto;
}
-/* Stack the first topic vertically: "locus" wordmark + the
- "Multi Agent Reasoning SDK" subtitle beneath, matching
- the wordmark+tagline lockup the SVG logo carries. */
+/* Push the palette toggle, search, and source slot to the right side
+ of the header inner row, leaving a clean gap after the title. */
+form.md-header__option {
+ margin-left: auto;
+}
+/* Stack the first topic vertically: "locus" wordmark + the approved full
+ product name beneath ('Oracle Generative AI Multi-Agent Reasoning
+ Orchestrator SDK', split across two lines), matching the
+ wordmark+tagline lockup the SVG logo carries. The two-line break keeps
+ each line short enough to fit alongside the dark-mode toggle and the
+ search slot at common viewport widths. */
.md-header__ellipsis > .md-header__topic:first-of-type {
display: flex;
flex-direction: column;
@@ -583,24 +621,32 @@ html {
color: var(--locus-ink);
}
.md-header__ellipsis > .md-header__topic:first-of-type::after {
- content: "Multi Agent Reasoning SDK";
+ /* `\A` is a CSS newline; `white-space: pre` keeps it as a hard break,
+ so the approved full product name renders on two lines under the
+ wordmark — family brand on top, product descriptor below. */
+ content: "Oracle Generative AI Multi-Agent\AReasoning Orchestrator SDK";
font-family: var(--locus-sans);
font-size: 0.55rem;
font-weight: 600;
letter-spacing: 0.12em;
color: var(--or-red);
- line-height: 1;
- white-space: nowrap;
+ line-height: 1.25;
+ white-space: pre;
+ /* Push the line away from the dark-mode toggle that sits immediately
+ to the right of the title slot, so they don't visually touch. */
+ padding-right: 1rem;
}
@media (max-width: 56em) {
- /* Show "multi-agent SDK" as a compact tagline below "locus" on mobile. */
+ /* Mobile: same full name, slightly tighter tracking to fit. */
.md-header__ellipsis > .md-header__topic:first-of-type::after {
- content: "multi-agent SDK";
- font-size: 0.52rem;
- letter-spacing: 0.08em;
+ content: "Oracle Generative AI Multi-Agent\AReasoning Orchestrator SDK";
+ font-size: 0.5rem;
+ letter-spacing: 0.06em;
+ line-height: 1.25;
font-weight: 600;
color: var(--or-red);
display: block;
+ white-space: pre;
}
/* Always show "locus" (site title) in the mobile header — suppress
Material's page-title swap so users always see the brand name. */
@@ -616,10 +662,10 @@ html {
/* Site-wide: never let Material swap the header topic on scroll. The default
behaviour translates topic #1 (site name + our tagline) up and fades in
- topic #2 (page title), which strips the
- "Multi Agent Reasoning SDK" line and replaces it with the
- current page's name. Pin topic #1 and hide #2 on every page so the brand
- banner (diamond mark + "locus" + tagline) stays put as the user scrolls. */
+ topic #2 (page title), which strips the approved product-name line and
+ replaces it with the current page's name. Pin topic #1 and hide #2 on every
+ page so the brand banner (diamond mark + "locus" + product name) stays put
+ as the user scrolls. */
.md-header__ellipsis > .md-header__topic:first-of-type {
transform: translateY(0) !important;
opacity: 1 !important;
@@ -1125,7 +1171,7 @@ html {
height: 36px;
max-width: none;
padding: 0;
- margin-left: 0.4rem;
+ margin-left: 0;
border-radius: 8px;
color: var(--locus-ink);
transition: background-color 0.15s, color 0.15s, transform 0.15s;
diff --git a/docs/workbench.md b/docs/workbench.md
index f65cd156..4b291ebb 100644
--- a/docs/workbench.md
+++ b/docs/workbench.md
@@ -1,8 +1,11 @@
-# Locus workbench
+
Oracle Generative AI Multi-Agent Reasoning Orchestrator SDK
-A browser-based playground for every locus pattern. Two ways to run
-it — straight from source on your laptop, or inside a Docker
-container — both end at the same UI at
.
+# Workbench
+
+A browser-based playground for every Oracle Generative AI – Multi-Agent
+Locus SDK pattern. Two ways to run it — straight from source on your
+laptop, or inside a Docker container — both end at the same UI at
+.
[View on GitHub](https://github.com/oracle-samples/locus){ .md-button .md-button--primary }
[Workbench README](https://github.com/oracle-samples/locus/tree/main/workbench){ .md-button }
@@ -11,17 +14,18 @@ Once it's up: open *Provider settings*, paste an OpenAI / Anthropic
key or wire up an OCI profile, pick a notebook in the sidebar, hit
**Run**. A real agent streams events back into the browser.
-
+
## What it is
-The workbench is the fastest way to *see* what locus does without
-installing anything locally. It's a single-page UI in front of every
-canonical locus pattern — a basic agent, an agent with tools, a
+The workbench is the fastest way to *see* what Oracle Generative AI –
+Multi-Agent Locus SDK does without installing anything locally. It's a
+single-page UI in front of every canonical Oracle Generative AI –
+Multi-Agent Locus SDK pattern — a basic agent, an agent with tools, a
structured-output schema, an orchestrator with specialists, a
sequential pipeline, a map-reduce fan-out, a critic loop with
`allow_cycles`. Each pattern is wired to a real Python coroutine
-that imports locus, builds the agent, and streams events through to
+that imports the SDK, builds the agent, and streams events through to
your browser.
### Start with Oracle
@@ -217,7 +221,7 @@ docker build -t locus-workbench -f workbench/Dockerfile .
```
Image is ~1.3 GB on first build (Oracle Linux 9-slim base + Python
-3.12 + Node 20 + locus + workbench source). Subsequent builds hit
+3.12 + Node 20 + the SDK + workbench source). Subsequent builds hit
the BuildKit layer cache.
### Run
@@ -384,7 +388,7 @@ field the `router.protocol.selected` SSE event carries.
Sample prompts that exercise different protocols:
```
-What does the locus router do in the context of this SDK?
+What does the router do in the context of this SDK?
→ direct_response
```
diff --git a/examples/README.md b/examples/README.md
index d62f615a..1197a6bf 100644
--- a/examples/README.md
+++ b/examples/README.md
@@ -1,4 +1,4 @@
-# Locus Examples
+# Oracle Generative AI – Multi-Agent Locus SDK Examples
## Quick Start
diff --git a/examples/projects/deep-research/README.md b/examples/projects/deep-research/README.md
index f690b335..3ca3b087 100644
--- a/examples/projects/deep-research/README.md
+++ b/examples/projects/deep-research/README.md
@@ -1,10 +1,10 @@
-# deep-research — locus ports of the langchain-oci deep-research gists
+# deep-research — Oracle Generative AI – Multi-Agent Locus SDK ports of the langchain-oci deep-research gists
A runnable suite of seven `create_deepagent(datastores=...)` examples
-covering every retrieval backend locus supports: **in-memory**, **Oracle
+covering every retrieval backend the SDK supports: **in-memory**, **Oracle
Autonomous Database** (vector), **OCI Object Storage** (tool-based
retrieval), and **OpenSearch**. Each demo mirrors a published
-langchain-oci deep-research gist 1:1 on locus primitives — no langchain
+langchain-oci deep-research gist 1:1 on the SDK's primitives — no langchain
or deepagents imports.
```
@@ -37,7 +37,7 @@ or deepagents imports.
| [`demo_opensearch_multi_index.py`](demo_opensearch_multi_index.py) | Two OpenSearch indices (medical + news) | [gist 92b9a515](https://gist.github.com/fede-kamel/92b9a515155f4332f794d491602b6e79) (OpenSearch variant) |
| [`demo_object_storage.py`](demo_object_storage.py) | OCI Object Storage via `@tool`-wrapped SDK (`list_bucket_objects`, `read_bucket_object`, `search_bucket_data`) | [gist 00cb5682](https://gist.github.com/fede-kamel/00cb568227912735e9717ddc12b649c4) |
-The Python-published gists with the verified locus ports live at:
+The Python-published gists with the verified SDK ports live at:
- [demo_hello_world](https://gist.github.com/fede-kamel/87f1dc5cabd8b434b5ff0e432804c553)
- [demo_iron_metabolism (full replay)](https://gist.github.com/fede-kamel/27a6fc50e0df3854e427ecf4715bc005)
@@ -46,7 +46,7 @@ The Python-published gists with the verified locus ports live at:
- [demo_object_storage](https://gist.github.com/fede-kamel/886293f25576b1589d76a3c18bc3bc4e)
- [demo_opensearch_multi_index](https://gist.github.com/fede-kamel/eb9c8ef0ef59cf55c0f67cb8ed80feb1)
-## Locus translations from langchain-oci
+## SDK translations from langchain-oci
| langchain-oci | locus |
|---|---|
@@ -105,7 +105,7 @@ the table on exit. A successful run looks like:
## Gotchas surfaced during the port
-The OpenSearch + GPT-5.1 path surfaced three locus-specific behaviors
+The OpenSearch + GPT-5.1 path surfaced three SDK-specific behaviors
worth pinning:
1. **`locus.memory.InMemoryStore` is async.** Its `put`/`search`/`get`
@@ -120,7 +120,7 @@ worth pinning:
loop becomes unusable from the agent's tool calls and returns
silent empty results.
4. **Some model providers JSON-encode floats as strings.** GPT-5.x
- sends `"min_score": "0.5"` rather than `0.5` for tool args; locus
+ sends `"min_score": "0.5"` rather than `0.5` for tool args; the SDK
coerces this defensively in `RAGRetriever.retrieve` and
`OracleVectorStore.search`. If you implement a custom store,
coerce at the search boundary too.
diff --git a/mkdocs.yml b/mkdocs.yml
index 5d0ea35f..75747fbb 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -118,7 +118,8 @@ plugins:
members_order: source
nav:
-- locus: index.md
+# Home (index.md) is reached via the header wordmark + logo (both link to "/"),
+# so we don't repeat it as a tab here.
- Concepts:
- concepts/multi-agent.md
- Capabilities: capabilities.md
diff --git a/overrides/main.html b/overrides/main.html
index d4a3b67c..29ab10ff 100644
--- a/overrides/main.html
+++ b/overrides/main.html
@@ -2,12 +2,12 @@
{#
Decouples the browser tab / HTML from `site_name`. `site_name`
- drives the header banner ("locus — Multi-Agent SDK"); the tab uses a
- longer, SEO-friendly phrase that survives truncation gracefully and
- shows the full text on hover (mirrors the Strands docs pattern).
+ drives the header wordmark; the tab carries the approved short product
+ name so it survives tab-bar truncation and shows the full string on
+ hover.
#}
{% block htmltitle %}
- {% set tab_title = "locus — Oracle Generative AI Multi-Agent Reasoning SDK" %}
+ {% set tab_title = "Oracle Generative AI – Multi-Agent Locus SDK" %}
{% if page and page.title and not page.is_homepage %}
{{ page.title | striptags }} - {{ tab_title }}
{% else %}
@@ -31,18 +31,18 @@
{% set og_image = (config.site_url ~ "/img/og-card.png") | replace("//img/", "/img/") %}
-
+
-
+
-
+
{% endblock %}
diff --git a/workbench/README.md b/workbench/README.md
index fff710b6..681637a8 100644
--- a/workbench/README.md
+++ b/workbench/README.md
@@ -1,8 +1,8 @@
-# workbench — locus pattern playground
+# workbench — Oracle Generative AI – Multi-Agent Locus SDK pattern playground
A self-contained 3-tier workbench: **vanilla TypeScript front-end** ↔
-**Node BFF** ↔ **Locus Python pattern runner**. Bring your own provider
-credentials (OpenAI / Anthropic / OCI session / OCI api-key) — no
+**Node BFF** ↔ **Python pattern runner built on the SDK**. Bring your own
+provider credentials (OpenAI / Anthropic / OCI session / OCI api-key) — no
instance principals, no external dependencies beyond the model
provider.
diff --git a/workbench/SDK-ERGONOMICS.md b/workbench/SDK-ERGONOMICS.md
index 355fa1b5..aeaed48b 100644
--- a/workbench/SDK-ERGONOMICS.md
+++ b/workbench/SDK-ERGONOMICS.md
@@ -1,8 +1,9 @@
-# Locus SDK ergonomics — workbench audit
+# SDK ergonomics — workbench audit
How much code does a developer need to write to do something useful with
-Locus? This is a short, honest snapshot from running the workbench
-against every model-only notebook.
+the Oracle Generative AI – Multi-Agent Locus SDK? This is a short,
+honest snapshot from running the workbench against every model-only
+notebook.
## The 90% case is one screen