diff --git a/packages/landing/src/components/ArchitectureSection.tsx b/packages/landing/src/components/ArchitectureSection.tsx
index fe45e3f9c..70bb56350 100644
--- a/packages/landing/src/components/ArchitectureSection.tsx
+++ b/packages/landing/src/components/ArchitectureSection.tsx
@@ -17,8 +17,8 @@ export function ArchitectureSection(props: {
class="text-center text-sm mb-12 max-w-xl mx-auto"
style={{ color: "var(--color-page-text-muted)" }}
>
- Zero trust by default. Every agent runs in an isolated sandbox with no
- direct network access.
+ Agents runs in an isolated sandbox with no direct network access, in
+ your infrastructure.
diff --git a/packages/landing/src/components/BenchmarkSection.tsx b/packages/landing/src/components/BenchmarkSection.tsx
index 6d03f397a..ffdf6dc1b 100644
--- a/packages/landing/src/components/BenchmarkSection.tsx
+++ b/packages/landing/src/components/BenchmarkSection.tsx
@@ -162,7 +162,7 @@ export function BenchmarkSection() {
diff --git a/packages/landing/src/components/PlatformChatExamples.tsx b/packages/landing/src/components/PlatformChatExamples.tsx
index 835cf7922..6db11aea4 100644
--- a/packages/landing/src/components/PlatformChatExamples.tsx
+++ b/packages/landing/src/components/PlatformChatExamples.tsx
@@ -1,7 +1,7 @@
/**
* Renders a full chat-grid showcase for a platform docs page.
* A use-case chip row at the top lets the visitor re-skin the three chat
- * windows with use-case-appropriate transcripts (devops, support, legal, …).
+ * windows with use-case-appropriate transcripts (engineering, support, legal, …).
* The platform-specific theme (colors, chrome) stays fixed.
*/
diff --git a/packages/landing/src/components/PricingSection.tsx b/packages/landing/src/components/PricingSection.tsx
index f87165c74..945eaff9e 100644
--- a/packages/landing/src/components/PricingSection.tsx
+++ b/packages/landing/src/components/PricingSection.tsx
@@ -3,7 +3,7 @@ import { ScheduleCallButton, ScheduleCallIcon } from "./ScheduleDialog";
import { deliverySurfaces, formatLabelList } from "./platforms";
const GITHUB_URL = "https://github.com/lobu-ai/lobu";
-const CLOUD_URL = "https://owletto.com/auth/login";
+const CLOUD_URL = "https://app.lobu.ai/auth/login";
const deliverySurfacesLabel = formatLabelList(
deliverySurfaces.map((surface) => surface.label)
diff --git a/packages/landing/src/components/connect-from/ConnectFromDocContent.astro b/packages/landing/src/components/connect-from/ConnectFromDocContent.astro
index 405a02160..9f2b19cfa 100644
--- a/packages/landing/src/components/connect-from/ConnectFromDocContent.astro
+++ b/packages/landing/src/components/connect-from/ConnectFromDocContent.astro
@@ -6,6 +6,7 @@ import {
} from "../../connect-from-config";
import {
getLandingUseCaseShowcase,
+ getOwlettoBaseHostLabel,
getOwlettoBaseUrl,
getOwlettoMcpUrl,
landingUseCaseWorkspaceOptions,
@@ -22,6 +23,7 @@ const client = getConnectFromClientConfig(clientId);
const showcase = useCaseId ? getLandingUseCaseShowcase(useCaseId) : undefined;
const owlettoMcpUrl = getOwlettoMcpUrl();
const owlettoBaseUrl = getOwlettoBaseUrl();
+const owlettoBaseHostLabel = getOwlettoBaseHostLabel();
const clientSwitcherLinks = connectFromClientIds
.filter((id) => id !== clientId)
@@ -60,6 +62,7 @@ const relatedLinks = client.docsRelated.map((link) => {
clientLabel={client.label}
mcpBaseUrl={owlettoMcpUrl}
owlettoBaseUrl={owlettoBaseUrl}
+ owlettoBaseHostLabel={owlettoBaseHostLabel}
workspaces={landingUseCaseWorkspaceOptions}
initialUseCaseId={useCaseId}
/>
diff --git a/packages/landing/src/components/connect-from/TryItSection.tsx b/packages/landing/src/components/connect-from/TryItSection.tsx
index 07ae0ef4c..9d2b8257d 100644
--- a/packages/landing/src/components/connect-from/TryItSection.tsx
+++ b/packages/landing/src/components/connect-from/TryItSection.tsx
@@ -6,6 +6,7 @@ type TryItSectionProps = {
clientLabel: string;
mcpBaseUrl: string;
owlettoBaseUrl: string;
+ owlettoBaseHostLabel: string;
workspaces: LandingUseCaseWorkspaceOption[];
initialUseCaseId?: string;
};
@@ -14,6 +15,7 @@ export function TryItSection({
clientLabel,
mcpBaseUrl,
owlettoBaseUrl,
+ owlettoBaseHostLabel,
workspaces,
initialUseCaseId,
}: TryItSectionProps) {
@@ -26,17 +28,9 @@ export function TryItSection({
[workspaces, selectedId]
);
- const mcpUrl = selected?.orgSlug
- ? `${mcpBaseUrl}/${selected.orgSlug}`
- : mcpBaseUrl;
-
- const signInHref = selected?.orgSlug
- ? `${owlettoBaseUrl}/${selected.orgSlug}`
- : owlettoBaseUrl;
-
- const signInLabel = selected?.orgSlug
- ? `owletto.com/${selected.orgSlug}`
- : "owletto.com";
+ const mcpUrl = selected?.mcpUrl ?? mcpBaseUrl;
+ const signInHref = selected?.owlettoUrl ?? owlettoBaseUrl;
+ const signInLabel = selected?.hostLabel ?? owlettoBaseHostLabel;
const tabs = useMemo(
() => workspaces.map((w) => ({ id: w.id, label: w.label })),
diff --git a/packages/landing/src/content/blog/filesystem-vs-database-agent-memory.mdx b/packages/landing/src/content/blog/filesystem-vs-database-agent-memory.mdx
index 1848f5981..89bbd5a02 100644
--- a/packages/landing/src/content/blog/filesystem-vs-database-agent-memory.mdx
+++ b/packages/landing/src/content/blog/filesystem-vs-database-agent-memory.mdx
@@ -109,7 +109,7 @@ Good agents should be able to **think messily and remember cleanly**.
Lobu makes this split explicit.
- Every agent has a local workspace.
-- In file-first projects, Lobu enables Owletto from `[memory.owletto]` in `lobu.toml` plus `owletto.yaml`.
+- In file-first projects, Lobu enables Owletto from `[memory.owletto]` in `lobu.toml`.
- `MEMORY_URL` is still supported as an optional base-endpoint override for local or custom Owletto deployments.
- If no Owletto config is resolved, Lobu uses `@openclaw/native-memory`, so memory stays local to that workspace.
- If Owletto is configured, Lobu uses `@lobu/owletto-openclaw` when that plugin is installed, otherwise it falls back to native memory.
diff --git a/packages/landing/src/content/docs/getting-started/index.mdx b/packages/landing/src/content/docs/getting-started/index.mdx
index 52719868c..b883152fa 100644
--- a/packages/landing/src/content/docs/getting-started/index.mdx
+++ b/packages/landing/src/content/docs/getting-started/index.mdx
@@ -38,8 +38,7 @@ my-agent/
│ └── ping.yaml # test cases for agent quality
├── skills/ # skills shared across all agents
├── models/ # Owletto entity schemas (if memory enabled)
-├── data/ # Owletto seed entities and relationships
-└── owletto.yaml # Owletto project config (if memory enabled)
+└── data/ # Owletto seed entities and relationships
```
| Path | Docs |
@@ -48,7 +47,7 @@ my-agent/
| `agents/*/IDENTITY.md`, `SOUL.md`, `USER.md` | [Agent Workspace](/guides/agent-prompts/) |
| `agents/*/skills/`, `skills/` | [SKILL.md reference](/reference/skill-md/), [Skills](/getting-started/skills/) |
| `agents/*/evals/` | [Evaluations](/guides/evals/) |
-| `models/`, `data/`, `owletto.yaml` | [Memory](/getting-started/memory/) |
+| `models/`, `data/` | [Memory](/getting-started/memory/) |
| `docker-compose.yml`, `Dockerfile.worker` | [Deployment](/deployment/docker/) |
## Develop your agent
diff --git a/packages/landing/src/content/docs/getting-started/memory.mdx b/packages/landing/src/content/docs/getting-started/memory.mdx
index 4571eec85..12d96c195 100644
--- a/packages/landing/src/content/docs/getting-started/memory.mdx
+++ b/packages/landing/src/content/docs/getting-started/memory.mdx
@@ -10,7 +10,7 @@ Lobu has two different memory layers:
They solve different problems. The filesystem is where an agent does work. Owletto is where the organization remembers what matters.
-- Owletto site: [owletto.com](https://owletto.com)
+- Owletto site: [app.lobu.ai](https://app.lobu.ai)
- GitHub: [lobu-ai/owletto](https://github.com/lobu-ai/owletto)
- Lobu memory overview: [/memory](/memory)
@@ -129,7 +129,6 @@ For file-first projects, the default setup is:
```text
project/
├── lobu.toml
-├── owletto.yaml
├── models/
└── data/
```
@@ -137,14 +136,15 @@ project/
```toml
[memory.owletto]
enabled = true
-config = "./owletto.yaml"
+org = "my-org"
+name = "My Project"
models = "./models"
data = "./data"
```
At runtime, Lobu resolves the memory backend like this:
-- If `[memory.owletto]` is enabled, Lobu derives the effective Owletto MCP endpoint from `owletto.yaml`.
+- If `[memory.owletto]` is enabled, Lobu derives the effective Owletto MCP endpoint from `org` in `[memory.owletto]`.
- `MEMORY_URL` is still supported as an optional base-endpoint override, mainly for local or custom Owletto deployments.
- If no Owletto endpoint is resolved, Lobu falls back to `@openclaw/native-memory`.
- Agents can also override plugin configuration through `pluginsConfig` in agent settings.
diff --git a/packages/landing/src/content/docs/guides/agent-settings.md b/packages/landing/src/content/docs/guides/agent-settings.md
index c8e0fcb1c..b07bdc4a1 100644
--- a/packages/landing/src/content/docs/guides/agent-settings.md
+++ b/packages/landing/src/content/docs/guides/agent-settings.md
@@ -41,14 +41,13 @@ Memory is pluggable. In file-first projects, the gateway first checks `[memory.o
|---|---|
| `[memory.owletto]` disabled or unresolved, and no `MEMORY_URL` override | `@openclaw/native-memory` — files under `/workspace` (per-thread PVC in K8s, `./workspaces/{threadId}/` in Docker). Not shared across threads. |
| `[memory.owletto]` enabled | `@lobu/owletto-openclaw` — the OpenClaw memory plugin for Owletto. It translates OpenClaw memory calls into Owletto MCP requests via the gateway's `/mcp/owletto` proxy. Cross-session, shareable across agents. |
-| `MEMORY_URL` set | Used as the base Owletto MCP endpoint before Lobu scopes it to the org from `owletto.yaml`. Useful for local or custom Owletto deployments. |
+| `MEMORY_URL` set | Used as the base Owletto MCP endpoint before Lobu scopes it to the org from `[memory.owletto]` in `lobu.toml`. Useful for local or custom Owletto deployments. |
`lobu init` now scaffolds the file-first Owletto layout for memory-enabled projects:
-- `owletto.yaml`
+- `[memory.owletto]` in `lobu.toml` (org, name, description, models, data)
- `models/`
- `data/`
-- `[memory.owletto]` in `lobu.toml`
For **Lobu Cloud**, Lobu can use the hosted default automatically. For **Owletto Local** and **Custom URL**, `MEMORY_URL` remains the base-endpoint override.
diff --git a/packages/landing/src/content/docs/guides/architecture.mdx b/packages/landing/src/content/docs/guides/architecture.mdx
index 53f2508da..3299b3c67 100644
--- a/packages/landing/src/content/docs/guides/architecture.mdx
+++ b/packages/landing/src/content/docs/guides/architecture.mdx
@@ -25,7 +25,7 @@ Lobu runs as a gateway + worker architecture.
## Persistent Memory
-In file-first projects, Lobu resolves persistent memory from `[memory.owletto]` in `lobu.toml` plus the referenced `owletto.yaml`.
+In file-first projects, Lobu resolves persistent memory from `[memory.owletto]` in `lobu.toml`.
- **`[memory.owletto]` enabled**: Lobu derives an Owletto MCP endpoint and uses `@lobu/owletto-openclaw`, falling back to native memory if the plugin is unavailable.
- **`MEMORY_URL`**: still supported as an optional base-endpoint override for local or custom Owletto deployments.
diff --git a/packages/landing/src/content/docs/guides/troubleshooting.md b/packages/landing/src/content/docs/guides/troubleshooting.md
index 7d27194d3..c08c49165 100644
--- a/packages/landing/src/content/docs/guides/troubleshooting.md
+++ b/packages/landing/src/content/docs/guides/troubleshooting.md
@@ -109,8 +109,7 @@ kubectl describe pvc -n lobu
curl http://localhost:8787/health
# Check file-first memory config
-# - lobu.toml should contain [memory.owletto]
-# - owletto.yaml should exist and declare org:
+# - lobu.toml should contain [memory.owletto] with enabled = true and an org
# - MEMORY_URL is optional; use it mainly for local/custom Owletto base URLs
# Test connection
diff --git a/packages/landing/src/content/docs/platforms/discord.mdx b/packages/landing/src/content/docs/platforms/discord.mdx
index 9b9f1c926..9d31157f1 100644
--- a/packages/landing/src/content/docs/platforms/discord.mdx
+++ b/packages/landing/src/content/docs/platforms/discord.mdx
@@ -35,6 +35,6 @@ Under the hood, Lobu uses the Chat SDK Discord adapter to handle DMs and server
## Typical Use Cases
-- Team assistant in a Discord server (DevOps, support, knowledge base).
+- Team assistant in a Discord server (engineering, support, knowledge base).
- Community bot that answers questions using your agent's skills and tools.
- Developer tool that runs commands or queries APIs on behalf of server members.
diff --git a/packages/landing/src/content/docs/reference/lobu-toml.md b/packages/landing/src/content/docs/reference/lobu-toml.md
index 718c5e935..feee73f98 100644
--- a/packages/landing/src/content/docs/reference/lobu-toml.md
+++ b/packages/landing/src/content/docs/reference/lobu-toml.md
@@ -23,7 +23,8 @@ allowed = ["github.com"]
[memory.owletto]
enabled = true
-config = "./owletto.yaml"
+org = "my-agent"
+name = "My Agent"
models = "./models"
data = "./data"
```
@@ -95,7 +96,9 @@ nix_packages = ["imagemagick", "ffmpeg"]
# File-first Owletto memory
[memory.owletto]
enabled = true
-config = "./owletto.yaml"
+org = "support"
+name = "Support"
+description = "Customer support agent"
models = "./models"
data = "./data"
```
@@ -111,7 +114,6 @@ Typical companion layout:
```text
project/
├── lobu.toml
-├── owletto.yaml
├── models/
└── data/
```
@@ -119,11 +121,14 @@ project/
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `enabled` | boolean | no | Enables file-first Owletto memory resolution for the project |
-| `config` | string | no | Path to the Owletto project config file, usually `./owletto.yaml` |
+| `org` | string | yes (when enabled) | Owletto organization slug — scopes the MCP endpoint |
+| `name` | string | yes (when enabled) | Human-readable project name |
+| `description` | string | no | Short project description |
+| `visibility` | string | no | `public` or `private`; defaults to Owletto's account setting |
| `models` | string | no | Path to Owletto model files, usually `./models` |
| `data` | string | no | Path to Owletto seed data, usually `./data` |
-When `[memory.owletto]` is enabled, Lobu reads `owletto.yaml`, extracts the project org, and derives the effective Owletto MCP endpoint. `MEMORY_URL` remains available as an optional base-endpoint override for local or custom Owletto deployments.
+When `[memory.owletto]` is enabled, Lobu reads `org` directly from `lobu.toml` and derives the effective Owletto MCP endpoint. `MEMORY_URL` remains available as an optional base-endpoint override for local or custom Owletto deployments.
### `[agents.]`
diff --git a/packages/landing/src/content/docs/reference/owletto-cli.md b/packages/landing/src/content/docs/reference/owletto-cli.md
index b7c773f13..8cea1bf58 100644
--- a/packages/landing/src/content/docs/reference/owletto-cli.md
+++ b/packages/landing/src/content/docs/reference/owletto-cli.md
@@ -6,7 +6,7 @@ description: What the owletto CLI does, how it authenticates, and how to use it
The `owletto` CLI starts local Owletto servers, connects agent clients, and runs memory tools directly.
- GitHub: [lobu-ai/owletto](https://github.com/lobu-ai/owletto)
-- Hosted: [owletto.com](https://owletto.com)
+- Hosted: [app.lobu.ai](https://app.lobu.ai)
## Install And Run
@@ -88,7 +88,7 @@ Detects supported clients and auto-configures them. Falls back to manual steps w
Authenticates the CLI against an Owletto MCP server using OAuth.
```bash
-npx owletto@latest login https://owletto.com/mcp
+npx owletto@latest login https://app.lobu.ai/mcp
```
By default, the CLI opens a browser and completes an authorization-code flow with a local callback server.
@@ -102,7 +102,7 @@ Useful flags:
Example for a headless box:
```bash
-npx owletto@latest login https://owletto.com/mcp --device
+npx owletto@latest login https://app.lobu.ai/mcp --device
```
### `owletto token`