Skip to content

Commit 6c24835

Browse files
authored
Merge pull request #3504 from odincodeshen/feature/openclaw_arm_continuum
LP: Extend OpenClaw for a Local-First AI Assistant
2 parents 1bf9d29 + 9ee677d commit 6c24835

12 files changed

Lines changed: 1338 additions & 0 deletions

File tree

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
---
2+
title: Understand the Architecture and Local Data Boundaries
3+
weight: 2
4+
5+
### FIXED, DO NOT MODIFY
6+
layout: learningpathall
7+
---
8+
9+
## Transition from Inference to an Assistant
10+
11+
Running a local LLM gives you a private way to generate text, but it does not yet give you an assistant you can use throughout the day. You still need a convenient way to ask questions, save information, search your documents, retrieve current information, and receive reminders without returning to a terminal each time.
12+
13+
In this Learning Path, you will deploy [OpenClaw Arm Continuum](https://github.com/odincodeshen/openclaw-arm-continuum) and interact with it from Telegram. This learning path uses a private household AI assistant as an example: you will save a household note, retrieve it later, ask questions about a local document, run an explicit web search, and schedule a proactive notification. The inference, embeddings, documents, vector memory, and task state remain on hardware you control. You can apply the same project architecture to other use cases that require private, locally controlled AI processing.
14+
15+
This reference implementation uses Telegram as its messaging interface, but the runtime architecture is not limited to Telegram. You can integrate another messaging platform by implementing a gateway that translates its messages and events into the runtime request flow.
16+
17+
The reference runtime extends OpenClaw by bringing the interaction channel, local AI services, persistent memory, tools, and scheduled tasks together. It provides:
18+
19+
- **Mobile access through Telegram** for conversations, document uploads, and notifications
20+
- **Local generation through vLLM or llama.cpp**, allowing the inference backend to match the Arm system
21+
- **Persistent local memory and document retrieval** through Ollama embeddings and Qdrant
22+
- **Tool-driven and proactive workflows** through explicit web search, scheduled tasks, and Telegram notifications
23+
24+
The reference runtime routes each request to the appropriate local model, data source, or tool while keeping persistent AI data under your control.
25+
26+
{{% notice Note %}}
27+
**OpenClaw provides the foundation for the assistant.** This reference implementation adds vLLM or llama.cpp for local generation and integrates Ollama, Qdrant, browser search, and cron services for memory, tools, and proactive workflows.
28+
{{% /notice %}}
29+
30+
## Understand the data boundary
31+
32+
Local-first does not mean that every byte stays offline. Telegram and web search are external network interactions. The important property is that the boundary is explicit and that the core AI data remains under your control.
33+
34+
| Data or operation | Location | External interaction |
35+
|---|---|---|
36+
| LLM inference | DGX Spark or CPU-only Arm host | Model weights are downloaded during setup |
37+
| Embeddings | Local Ollama service | Model weights are downloaded during setup |
38+
| Vector memory and RAG | Local Qdrant service | None during normal retrieval |
39+
| Uploaded documents | Local runtime workspace | Telegram transports the original upload |
40+
| Cron state and task history | Local workspace and Gateway state | Telegram transports push messages |
41+
| External data lookup | Local skill | Public data service selected by the skill |
42+
| Browser search | Local Playwright worker | Search engine and selected public pages |
43+
44+
The runtime does not require a public cloud LLM API. However, content sent through Telegram is transported by Telegram, and explicit browser searches reveal the search request to external websites.
45+
46+
{{% notice Note %}}
47+
This Learning Path uses the default personal runtime configuration, but every exercise uses synthetic or public data. Do not enter real personal, household, or organizational information while following the tutorial. If the host already contains personal runtime data, use the optional demo isolation settings introduced in the next chapter.
48+
{{% /notice %}}
49+
50+
## Trace the Application Request Path
51+
52+
In this Learning Path, Telegram requests follow this path:
53+
54+
```text
55+
Telegram message
56+
-> Reference runtime Telegram gateway
57+
-> AgentRegistry and TaskDispatcher
58+
|-- Memory or RAG -> Ollama and Qdrant
59+
|-- Web search -> Playwright browser worker
60+
|-- External data -> Purpose-built local skill
61+
`-- General chat -> Local LLM endpoint
62+
```
63+
64+
The reference runtime can also start a configured workflow automatically, without requiring a new Telegram message from the user:
65+
66+
```text
67+
Cron schedule
68+
-> Reference runtime cron worker
69+
-> Local skill and local LLM
70+
-> Telegram push notification
71+
```
72+
73+
Explicit slash commands remain deterministic. For example, `/search` always selects the browser-search workflow, while a plain-language weather question selects the weather skill. The local model is not allowed to reinterpret an explicit command and silently change its route.
74+
75+
## Understand the shared API contract across Arm platforms
76+
77+
To demonstrate that the same project can run across systems with different hardware capabilities, this Learning Path uses an inference engine suited to each platform:
78+
79+
| Platform | Inference engine |
80+
|---|---|
81+
| NVIDIA DGX Spark | vLLM server |
82+
| Radxa Orion O6 | llama.cpp server |
83+
84+
Both expose an OpenAI-compatible chat-completions API. The project therefore keeps the same upper-layer workflow on both platforms; only the configured endpoint and model name change.
85+
86+
This demonstrates the portability of the project architecture: the same local-first workflow can run across different Arm compute configurations by selecting a compatible inference backend.
87+
88+
## What you've learned and what's next
89+
90+
You now understand why a local-first assistant is more than a local model, which data remains local, which operations cross the network boundary, and how an OpenAI-compatible endpoint separates the upper-layer runtime from the underlying inference engine.
91+
92+
Next, you will deploy the baseline runtime on NVIDIA DGX Spark.

0 commit comments

Comments
 (0)