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
43 changes: 22 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
<div align="center">
<a href="README.md"><img src="https://img.shields.io/badge/lang-English-blue.svg" /></a>
<a href="README.zh-CN.md"><img src="https://img.shields.io/badge/语言-简体中文-red.svg" /></a>
<a href="https://rlark-ci-test.readthedocs.io/en/latest/"><img src="https://img.shields.io/badge/Documentation-Read%20the%20Docs-8A2BE2?logo=readthedocs&logoColor=white" alt="Documentation" /></a>
<a href="https://rlark-ci-test.readthedocs.io/zh-cn/latest/"><img src="https://img.shields.io/badge/中文文档-Read%20the%20Docs-red?logo=readthedocs&logoColor=white" alt="中文文档" /></a>
<img src="https://img.shields.io/badge/Go-1.26-00ADD8?logo=go&style=flat-square" alt="Go Version" />
<img src="https://img.shields.io/badge/TypeScript-React-3178C6?logo=typescript&style=flat-square" alt="TypeScript" />
<img src="https://img.shields.io/badge/Kubernetes-kcp-326CE5?logo=kubernetes&style=flat-square" alt="Kubernetes" />
Expand All @@ -16,6 +18,8 @@

Manage cross-cluster embodied intelligence workloads through a unified cloud-native platform spanning cloud GPU training, cross-cluster collaboration, and edge device deployment across heterogeneous resources such as GPU clusters, robot arms, sensors, and cameras.

> **Explore the complete documentation on [Read the Docs](https://rlark-ci-test.readthedocs.io/en/latest/)** — start with the [Quick Start](https://rlark-ci-test.readthedocs.io/en/latest/quickstart/), then continue with the [platform user guide](https://rlark-ci-test.readthedocs.io/en/latest/user-guide/) or [administrator guide](https://rlark-ci-test.readthedocs.io/en/latest/admin-guide/).

## What's NEW!

- [2026/08] RLark is now open-source.
Expand All @@ -36,39 +40,36 @@ Manage cross-cluster embodied intelligence workloads through a unified cloud-nat

## Quick Start

See the [Quick Start Guide](apps/rlark/docs/quickstart.md) for a step-by-step guide to set up a local development environment and run your first training job.
Follow the [Quick Start Guide on Read the Docs](https://rlark-ci-test.readthedocs.io/en/latest/quickstart/) to choose one of the verified flows:

```bash
# 1. Build
git clone https://github.com/RLinf/RLark
cd RLark && make build
- **One-click CLI**: deploy the control plane and two kind data-plane clusters, then verify cross-cluster Pod networking.
- **UI-based flow**: create clusters and a Domain in the web console, deploy two kind data planes, schedule a Job across them, and verify connectivity.

# 2. Start control plane (Docker Compose)
docker compose -f apps/rlark/docs/examples/docker-compose.yml up -d
## Documentation

# 3. Start data plane (kind cluster)
kind create cluster --name rlark-data
The complete, searchable, and versioned documentation is published on **[Read the Docs](https://rlark-ci-test.readthedocs.io/en/latest/)**. Use these rendered guides as the primary entry points:

# Then follow the quickstart guide to start components and create a job
```
| Guide | Description |
|-------|-------------|
| [Quick Start](https://rlark-ci-test.readthedocs.io/en/latest/quickstart/) | Verified one-click and UI-based local deployment flows |
| [Core Concepts](https://rlark-ci-test.readthedocs.io/en/latest/concepts/) | Domain, Job, Task, Workflow, and other concepts |
| [Platform User Guide](https://rlark-ci-test.readthedocs.io/en/latest/user-guide/) | Web console, clusters, jobs, workflows, storage, and SSH keys |
| [Administrator Guide](https://rlark-ci-test.readthedocs.io/en/latest/admin-guide/) | Control plane, data plane, networking, security, and operations |
| [Developer Guide](https://rlark-ci-test.readthedocs.io/en/latest/developer-guide/) | Local development, project layout, debugging, and extensions |
| [API Reference](https://rlark-ci-test.readthedocs.io/en/latest/api/reference/) | Gateway REST API routes and behavior |
| [Architecture](https://rlark-ci-test.readthedocs.io/en/latest/architecture/) | Components, interactions, and data flows |

## Documentation
Repository-specific references remain available alongside the code:

| Document | Description |
|----------|-------------|
| [Architecture](apps/rlark/docs/architecture.md) | RLark core: technical architecture, component interactions, data flows |
| [Core Concepts](apps/rlark/docs/concepts.md) | Domain, Job, Task, Workflow, and other concepts |
| [Quick Start](apps/rlark/docs/quickstart.md) | Local development environment setup and first training job |
| [Deployment Guide](apps/rlark/docs/deployment.md) | Production deployment and configuration |
| [API Reference](apps/rlark/docs/api/reference.md) | Complete REST API reference |
| [API Examples](apps/rlark/docs/api/examples.md) | End-to-end API usage examples |
| Reference | Description |
|-----------|-------------|
| [Embodied Runtime](apps/embodied-runtime/README.md) | Robot (ROS) and camera hardware management on edge nodes |
| [Web UI](apps/rlark-ui/README.md) | Frontend management console |
| [Python SDK](sdks/embodied-runtime-python/README.md) | Python client for robot/camera gRPC services |
| [Go SDK](sdks/embodied-runtime-go/README.md) | Go client for embodied-runtime gRPC stubs |
| [Proto Definitions](proto/embodied-runtime/README.md) | gRPC service definitions for embodied-runtime |

> [中文文档](apps/rlark/docs/zh/README.md)
> Prefer Chinese? Visit the **[中文 Read the Docs 站点](https://rlark-ci-test.readthedocs.io/zh-cn/latest/)**.

## Tech Stack

Expand Down
41 changes: 21 additions & 20 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
<div align="center">
<a href="README.md"><img src="https://img.shields.io/badge/lang-English-blue.svg" /></a>
<a href="README.zh-CN.md"><img src="https://img.shields.io/badge/语言-简体中文-red.svg" /></a>
<a href="https://rlark-ci-test.readthedocs.io/en/latest/"><img src="https://img.shields.io/badge/Documentation-Read%20the%20Docs-8A2BE2?logo=readthedocs&logoColor=white" alt="Documentation" /></a>
<a href="https://rlark-ci-test.readthedocs.io/zh-cn/latest/"><img src="https://img.shields.io/badge/中文文档-Read%20the%20Docs-red?logo=readthedocs&logoColor=white" alt="中文文档" /></a>
<img src="https://img.shields.io/badge/Go-1.26-00ADD8?logo=go&style=flat-square" alt="Go Version" />
<img src="https://img.shields.io/badge/TypeScript-React-3178C6?logo=typescript&style=flat-square" alt="TypeScript" />
<img src="https://img.shields.io/badge/Kubernetes-kcp-326CE5?logo=kubernetes&style=flat-square" alt="Kubernetes" />
Expand All @@ -16,6 +18,8 @@

以云原生方式统一纳管跨集群具身智能工作负载,覆盖云端 GPU 训练、跨集群协同与端侧设备部署,连接 GPU 集群、机械臂、传感器和摄像头等异构资源。

> **前往 [Read the Docs 中文站](https://rlark-ci-test.readthedocs.io/zh-cn/latest/) 阅读完整文档** — 从[快速开始](https://rlark-ci-test.readthedocs.io/zh-cn/latest/quickstart/)入门,并继续查阅[平台使用指南](https://rlark-ci-test.readthedocs.io/zh-cn/latest/user-guide/)或[管理员指南](https://rlark-ci-test.readthedocs.io/zh-cn/latest/admin-guide/)。

## 最新动态

- [2026/08] RLark 现已开源。
Expand All @@ -36,39 +40,36 @@

## 快速开始

请参阅 [快速开始指南](apps/rlark/docs/zh/quickstart.md) 了解如何在本地搭建开发环境并运行第一个训练任务。
请前往 Read the Docs 的[快速开始指南](https://rlark-ci-test.readthedocs.io/zh-cn/latest/quickstart/),选择一种已经过验证的流程:

```bash
# 1. 编译
git clone https://github.com/RLinf/RLark
cd RLark && make build
- **一键 CLI 方式**:部署控制面和两个 kind 数据面集群,并验证 Pod 跨集群网络。
- **UI 交互方式**:在 Web 控制台创建集群和 Domain,部署两个 kind 数据面,将一个 Job 调度到两个集群并验证网络连通性。

# 2. 启动控制面(Docker Compose)
docker compose -f apps/rlark/docs/examples/docker-compose.yml up -d
## 文档索引

# 3. 启动数据面(kind 集群)
kind create cluster --name rlark-data
完整、可搜索且支持版本管理的文档发布在 **[Read the Docs 中文站](https://rlark-ci-test.readthedocs.io/zh-cn/latest/)**。面向用户的内容请优先从以下渲染后的指南进入:

# 然后按照快速开始指南启动各组件并创建任务
```
| 指南 | 说明 |
|------|------|
| [快速开始](https://rlark-ci-test.readthedocs.io/zh-cn/latest/quickstart/) | 已验证的一键和 UI 本地部署流程 |
| [核心概念](https://rlark-ci-test.readthedocs.io/zh-cn/latest/concepts/) | Domain、Job、Task、Workflow 等概念解释 |
| [平台使用指南](https://rlark-ci-test.readthedocs.io/zh-cn/latest/user-guide/) | Web 控制台、集群、任务、工作流、存储和 SSH 密钥 |
| [管理员指南](https://rlark-ci-test.readthedocs.io/zh-cn/latest/admin-guide/) | 控制面、数据面、网络、安全和运维 |
| [开发者指南](https://rlark-ci-test.readthedocs.io/zh-cn/latest/developer-guide/) | 本地开发、项目结构、调试和扩展 |
| [API 参考](https://rlark-ci-test.readthedocs.io/zh-cn/latest/api/reference/) | Gateway REST API 路由与行为 |
| [架构设计](https://rlark-ci-test.readthedocs.io/zh-cn/latest/architecture/) | 组件、交互关系和数据流 |

## 文档索引
与具体代码配套的说明继续保留仓库内入口:

| 文档 | 说明 |
| 参考 | 说明 |
|------|------|
| [架构设计](apps/rlark/docs/zh/architecture.md) | RLark 核心:完整技术架构、组件交互、数据流 |
| [核心概念](apps/rlark/docs/zh/concepts.md) | Domain、Job、Task、Workflow 等概念解释 |
| [快速开始](apps/rlark/docs/zh/quickstart.md) | 本地开发环境搭建与第一个训练任务 |
| [部署指南](apps/rlark/docs/zh/deployment.md) | 生产环境部署、配置说明 |
| [API 参考](apps/rlark/docs/api/reference.md) | 完整的 REST API 参考 |
| [API 示例](apps/rlark/docs/api/examples.md) | 端到端 API 调用示例 |
| [Embodied Runtime](apps/embodied-runtime/README.md) | 端侧机器人/摄像头运行时管理 |
| [Web UI](apps/rlark-ui/README.md) | 前端管理界面说明 |
| [Python SDK](sdks/embodied-runtime-python/README.md) | 机器人/摄像头 gRPC 客户端 |
| [Go SDK](sdks/embodied-runtime-go/README.md) | Go 语言 gRPC 客户端 |
| [Proto 定义](proto/embodied-runtime/README.md) | gRPC 服务接口定义 |

> [English Documentation](apps/rlark/docs/README.md)
> English documentation is available on the **[English Read the Docs site](https://rlark-ci-test.readthedocs.io/en/latest/)**.

## 技术栈

Expand Down
2 changes: 1 addition & 1 deletion apps/rlark-ui/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ lint: install ## Lint TypeScript/React (eslint)
npx eslint src/

fmt: ## Format code (prettier)
npx prettier@3.9.6 --write 'src/' 'index.html' 'package.json' 'vite.config.ts' 'tsconfig*.json'
./node_modules/.bin/prettier --write 'src/' 'index.html' 'package.json' 'vite.config.ts' 'tsconfig*.json'

##@ Docker

Expand Down
17 changes: 17 additions & 0 deletions apps/rlark-ui/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion apps/rlark-ui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"dev": "vite --host 0.0.0.0",
"build": "tsc -b && vite build",
"preview": "vite preview --host 0.0.0.0",
"test": "tsc src/utils/terminalKeyboard.ts src/utils/nodeVisibility.ts src/utils/imageReference.ts src/utils/nodeBatchMetadata.ts src/utils/nodeResources.ts --ignoreConfig --outDir dist/test --target ES2022 --module ES2022 --moduleResolution Bundler --lib ES2022,DOM && node --test tests/*.test.mjs"
"test": "tsc src/utils/terminalKeyboard.ts src/utils/nodeVisibility.ts src/utils/imageReference.ts src/utils/nodeBatchMetadata.ts src/utils/nodeResources.ts src/utils/jobPhase.ts src/utils/resourceAvailability.ts --ignoreConfig --outDir dist/test --target ES2022 --module ES2022 --moduleResolution Bundler --lib ES2022,DOM && node --test tests/*.test.mjs"
},
"dependencies": {
"@vitejs/plugin-react": "^4.7.0",
Expand All @@ -34,6 +34,7 @@
"eslint": "^9.0.0",
"eslint-plugin-react-hooks": "^5.0.0",
"eslint-plugin-react-refresh": "^0.4.0",
"prettier": "3.9.6",
"terser": "^5.50.0",
"typescript": "latest",
"typescript-eslint": "^8.0.0"
Expand Down
37 changes: 36 additions & 1 deletion apps/rlark-ui/src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { useEffect, useMemo, useState } from "react";
import { CircleDot, CloudCog } from "lucide-react";
import { Check, CircleDot, CloudCog } from "lucide-react";
import type { Job } from "./data";
import { copy, type Lang, type Theme } from "./i18n";
import { navItems } from "./constants";
Expand Down Expand Up @@ -46,6 +46,7 @@ export default function App() {
const [cloneJob, setCloneJob] = useState<Job | null>(null);
const [editJob, setEditJob] = useState<Job | null>(null);
const [restartAfterEdit, setRestartAfterEdit] = useState(false);
const [jobSubmitNotice, setJobSubmitNotice] = useState("");
const [lang, setLang] = usePersistentState<Lang>("rlark-language", "zh");
const [theme, setTheme] = usePersistentState<Theme>("rlark-theme", "light");
const [userLoggedIn, setUserLoggedIn] = useState(
Expand Down Expand Up @@ -109,6 +110,12 @@ export default function App() {
return () => window.removeEventListener("popstate", onPop);
}, []);

useEffect(() => {
if (!jobSubmitNotice) return;
const timer = window.setTimeout(() => setJobSubmitNotice(""), 4000);
return () => window.clearTimeout(timer);
}, [jobSubmitNotice]);

if (isAdmin) return <AdminApp />;
if (!userLoggedIn) {
return (
Expand Down Expand Up @@ -251,6 +258,22 @@ export default function App() {
setUserLoggedIn(false);
}}
/>
{jobSubmitNotice && (
<div
className="job-action-notice app-job-submit-notice"
role="status"
>
<Check size={16} />
<span>{jobSubmitNotice}</span>
<button
type="button"
onClick={() => setJobSubmitNotice("")}
aria-label={lang === "zh" ? "关闭提示" : "Dismiss notification"}
>
×
</button>
</div>
)}
{page === "overview" && (
<Overview navigate={navigate} copy={c} isMockMode={isMockMode} />
)}{" "}
Expand Down Expand Up @@ -284,6 +307,10 @@ export default function App() {
onSelect={(name?: string) =>
navigate("jobs", name, { replace: !name })
}
onSelectNode={(name: string) => navigate("clusters-nodes", name)}
onSelectCluster={(id: string) =>
navigate("clusters-management", id)
}
onCreate={() => {
setCloneJob(null);
setEditJob(null);
Expand Down Expand Up @@ -346,6 +373,14 @@ export default function App() {
setEditJob(null);
setRestartAfterEdit(false);
}}
onSuccess={(message) => {
setCreateOpen(false);
setCloneJob(null);
setEditJob(null);
setRestartAfterEdit(false);
setJobSubmitNotice(message);
navigate("jobs", undefined, { replace: true });
}}
copy={c}
cloneJob={cloneJob}
editJob={editJob}
Expand Down
Loading
Loading