docs: standardize OpenClaw casing

What:
- replace "Openclaw" -> "OpenClaw" in user-facing docs, module descriptions, and messages

Why:
- consistent product naming after upstream rename

Tests:
- none (string-only change)
This commit is contained in:
DJTBOT 2026-02-05 13:11:45 -08:00
parent f9ad193d28
commit a52fe152e9
21 changed files with 66 additions and 66 deletions

View File

@ -49,7 +49,7 @@ Defaults:
- NEVER send any message (iMessage, email, SMS, etc.) without explicit user confirmation:
- Always show the full message text and ask: “Im going to send this: <message>. Send? (y/n)”
Openclaw packaging:
OpenClaw packaging:
- The gateway package must include Control UI assets (run `pnpm ui:build` in the Nix build).
Golden path for pins (yolo + manual bumps):
@ -70,7 +70,7 @@ CI polling (hard rule):
Philosophy:
The Zen of ~~Python~~ Openclaw, ~~by~~ shamelessly stolen from Tim Peters
The Zen of ~~Python~~ OpenClaw, ~~by~~ shamelessly stolen from Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.

View File

@ -1,10 +1,10 @@
# nix-openclaw
> Declarative Openclaw. Bulletproof by default.
> Declarative OpenClaw. Bulletproof by default.
>
> macOS + Linux (headless). Windows is out of scope for now.
>
> <sub>Questions? Join the Openclaw Discord and ask in **#golden-path-deployments**: https://discord.com/channels/1456350064065904867/1457003026412736537</sub>
> <sub>Questions? Join the OpenClaw Discord and ask in **#golden-path-deployments**: https://discord.com/channels/1456350064065904867/1457003026412736537</sub>
## Contributions (read this first)
@ -117,7 +117,7 @@ I want to set up nix-openclaw on my machine (macOS or Linux).
Repository: github:openclaw/nix-openclaw
What nix-openclaw is:
- Batteries-included Nix package for Openclaw (AI assistant gateway)
- Batteries-included Nix package for OpenClaw (AI assistant gateway)
- Installs gateway + tools everywhere; macOS app only on macOS
- Runs as a launchd service on macOS, systemd user service on Linux
@ -140,12 +140,12 @@ My setup:
Reference the README and templates/agent-first/flake.nix in the repo for the module options.
```
Your agent will install Nix, create your config, and get Openclaw running. You just answer its questions.
Your agent will install Nix, create your config, and get OpenClaw running. You just answer its questions.
**What happens next:**
1. Your agent sets everything up and runs `home-manager switch`
2. You message your Telegram bot for the first time
3. Openclaw runs its **bootstrap ritual** - it asks you playful questions: *"Who am I? What am I? Who are you?"* - to learn its identity and yours
3. OpenClaw runs its **bootstrap ritual** - it asks you playful questions: *"Who am I? What am I? Who are you?"* - to learn its identity and yours
4. Once you've named it and introduced yourself, the bootstrap is done. You're up and running.
<details>
@ -212,7 +212,7 @@ You (Telegram/Discord) --> Gateway --> Tools --> Your machine does things
1. **CLI tools** - actual programs that do stuff (take screenshots, control Spotify, transcribe audio)
2. **Skills** - markdown files that teach the AI *how* to use those tools
When you enable a plugin, Nix installs the tools and wires up the skills to Openclaw automatically - the gateway learns what it can do.
When you enable a plugin, Nix installs the tools and wires up the skills to OpenClaw automatically - the gateway learns what it can do.
**Skills**: Instructions for the AI. A skill file says "when the user wants X, run this command." The AI reads these to know what it can do.
@ -238,9 +238,9 @@ All state lives in `~/.openclaw/`. Logs at `/tmp/openclaw/openclaw-gateway.log`.
## Plugins
> **Note:** Complete the [Quick Start](#quick-start) first to get Openclaw running. Then come back here to add plugins.
> **Note:** Complete the [Quick Start](#quick-start) first to get OpenClaw running. Then come back here to add plugins.
Plugins extend what Openclaw can do. Each plugin bundles tools and teaches the AI how to use them.
Plugins extend what OpenClaw can do. Each plugin bundles tools and teaches the AI how to use them.
### First-party plugins
@ -324,7 +324,7 @@ customPlugins = [
<details>
<summary><strong>For plugin developers</strong></summary>
Want to make your tool available as a Openclaw plugin? Here's the contract.
Want to make your tool available as a OpenClaw plugin? Here's the contract.
**Minimum structure:**
@ -448,7 +448,7 @@ Deliverables: flake output, env overrides, AGENTS.md, skill update.
>
> **Breaking change:** Nix now only emits config from `programs.openclaw.config` / `instances.<name>.config` (schema-typed). Legacy provider/routing/agent options are removed.
### What Openclaw needs (minimum)
### What OpenClaw needs (minimum)
1. **Telegram bot token file** - create via [@BotFather](https://t.me/BotFather), set `channels.telegram.tokenFile`
2. **Your Telegram user ID** - get from [@userinfobot](https://t.me/userinfobot), set `channels.telegram.allowFrom`
@ -756,7 +756,7 @@ home-manager switch --rollback # revert
## Philosophy
The Zen of ~~Python~~ Openclaw, ~~by~~ shamelessly stolen from Tim Peters
The Zen of ~~Python~~ OpenClaw, ~~by~~ shamelessly stolen from Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
@ -782,7 +782,7 @@ Namespaces are one honking great idea -- let's do more of those!
## Upstream
Wraps [Openclaw](https://github.com/openclaw/openclaw) by Peter Steinberger.
Wraps [OpenClaw](https://github.com/openclaw/openclaw) by Peter Steinberger.
## License

View File

@ -1,6 +1,6 @@
# Openclaw Plugin Architecture (Maintainer Memo)
# OpenClaw Plugin Architecture (Maintainer Memo)
Purpose: extend Openclaw capabilities without bloating core; ship tools + skills + config as reproducible units you can pin, test, and roll back. nix-openclaw shows the contract; Openclaw core should treat the same interface as first-class, even off-Nix.
Purpose: extend OpenClaw capabilities without bloating core; ship tools + skills + config as reproducible units you can pin, test, and roll back. nix-openclaw shows the contract; OpenClaw core should treat the same interface as first-class, even off-Nix.
## What a Plugin Is (and is not)
- **Is:** bundle of binaries/CLIs, skills that teach the agent to use them, optional config/env requirements.
@ -52,7 +52,7 @@ plugins = [
- Invariant: providing `settings` requires at least one `stateDir`.
## Dev workflow (fast iteration)
- Worktree: build and test plugins outside the core repo; point Openclaw at a local path source (e.g., `source = "path:/Users/you/code/my-plugin"`).
- Worktree: build and test plugins outside the core repo; point OpenClaw at a local path source (e.g., `source = "path:/Users/you/code/my-plugin"`).
- Rebuild loop: change plugin → `home-manager switch` (or host-equivalent) → gateway restarts with new PATH/skills/config; no manual copying.
- Name collisions: use the same plugin `name` to override a pinned version (last entry wins); keep unique names otherwise to avoid surprise overrides.
- Skills placement: skills land under `~/.openclaw*/workspace/skills/<plugin>/...` so you can inspect quickly; delete the workspace to fully reset cached skills.
@ -144,6 +144,6 @@ Host behavior: creates `~/.config/xuezh/config.json` from `settings`; exports bo
## Why this approach
- Capability grounding: skills map to real tools, not hypothetical ones.
- Reproducibility: versioned bundle of tool + skill + config schema; easy rollback.
- Clean core: main Openclaw stays transport/model-focused; plugins carry integrations.
- Clean core: main OpenClaw stays transport/model-focused; plugins carry integrations.
- Operational sanity: one toggle wires tools, env, skills; failure is explicit and early.
- Portability: contract is host-agnostic; Nix just enforces determinism and zero drift.

View File

@ -1,4 +1,4 @@
# RFC: Declarative Openclaw as a Nix Package (nix-openclaw)
# RFC: Declarative OpenClaw as a Nix Package (nix-openclaw)
- Date: 2026-01-02
- Status: Implementing
@ -6,7 +6,7 @@
## 1) Narrative: what we are building and why
Openclaw is powerful but hard to install and configure for new users, especially those who do not want to learn Nix internals. We need a batteriesincluded, obvious, and safe path to get a working Openclaw instance with minimal friction. This RFC proposes a dedicated public repo, `nix-openclaw`, that packages Openclaw for Nix and provides a declarative, userfriendly configuration layer with strong defaults and an agentfirst onboarding flow.
OpenClaw is powerful but hard to install and configure for new users, especially those who do not want to learn Nix internals. We need a batteriesincluded, obvious, and safe path to get a working OpenClaw instance with minimal friction. This RFC proposes a dedicated public repo, `nix-openclaw`, that packages OpenClaw for Nix and provides a declarative, userfriendly configuration layer with strong defaults and an agentfirst onboarding flow.
The goal is a **fully declarative bootstrap**: users provide a small set of inputs (token path + allowlist), and the setup is deterministic and repeatable.
@ -32,7 +32,7 @@ This RFC is explicitly **not** about:
## 2) Goals / Nongoals
Goals:
- Provide a Nix package for Openclaw and a Home Manager module with batteriesincluded defaults.
- Provide a Nix package for OpenClaw and a Home Manager module with batteriesincluded defaults.
- Provide a macOS app bundle package aligned to the gateway version.
- Make configuration technically light with explicit options and guardrails.
- Telegramfirst configuration and defaults.
@ -40,17 +40,17 @@ Goals:
- New user can get a working bot in 10 minutes without understanding Nix internals.
Nongoals:
- Rewriting Openclaw core functionality.
- Rewriting OpenClaw core functionality.
- Supporting nonNix install paths in this repo.
- Shipping a hosted SaaS or paid hosting.
- Replacing upstream Openclaw docs.
- Replacing upstream OpenClaw docs.
- Crossplatform support (Linux/Windows) in v1.
- CI automation in v1.
## 3) System overview
`nix-openclaw` is a public repo that provides (macOSonly in v1, no CI in v1):
- A Nix package derivation for the Openclaw gateway.
- A Nix package derivation for the OpenClaw gateway.
- A Nix package for the macOS app bundle (DMG).
- A Home Manager module for userlevel config and service wiring.
- A nixdarwin module for macOS users (optional, thin wrapper over HM).
@ -59,8 +59,8 @@ Nongoals:
## 4) Components and responsibilities
- **Package derivation**: builds Openclaw gateway from a pinned source.
- **App bundle**: installs Openclaw.app from a pinned DMG matching the gateway version.
- **Package derivation**: builds OpenClaw gateway from a pinned source.
- **App bundle**: installs OpenClaw.app from a pinned DMG matching the gateway version.
- **Home Manager module**: declarative config, writes `~/.openclaw/openclaw.json`, manages services.
- **Flake outputs**:
- `packages.<system>.openclaw` (default batteriesincluded bundle)
@ -92,7 +92,7 @@ The README is the only supported onboarding path. It must include:
## 8) Backing tools (batteriesincluded)
- Base and extended toolchains are installed via Nix by default.
- Tools correspond to upstream Openclaw skill installers (brew/go/node/uv) mapped into nixpkgs where possible.
- Tools correspond to upstream OpenClaw skill installers (brew/go/node/uv) mapped into nixpkgs where possible.
## 9) Compatibility guarantees

View File

@ -1,4 +1,4 @@
# RFC: Openclaw Plugin System — The Golden Path
# RFC: OpenClaw Plugin System — The Golden Path
- Date: 2026-01-11
- Status: Draft

View File

@ -1,5 +1,5 @@
{
description = "Hello-world Openclaw plugin";
description = "Hello-world OpenClaw plugin";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";

View File

@ -1,5 +1,5 @@
{
description = "nix-openclaw: declarative Openclaw packaging";
description = "nix-openclaw: declarative OpenClaw packaging";
nixConfig = {
extra-substituters = [ "https://cache.garnix.io" ];

View File

@ -71,7 +71,7 @@ let
};
hasUnit = builtins.hasAttr "openclaw-gateway" eval.config.systemd.user.services;
check = if hasUnit then "ok" else throw "Default Openclaw instance missing systemd.unitName.";
check = if hasUnit then "ok" else throw "Default OpenClaw instance missing systemd.unitName.";
checkKey = builtins.deepSeq check "ok";
in

View File

@ -5,7 +5,7 @@ usage() {
cat <<'EOF'
Usage: openclaw-reload [test|prod|both]
Re-render Openclaw config via Home Manager (no sudo) and restart gateway(s).
Re-render OpenClaw config via Home Manager (no sudo) and restart gateway(s).
Defaults to: test
EOF

View File

@ -162,7 +162,7 @@ let
systemdService = lib.optionalAttrs (pkgs.stdenv.hostPlatform.isLinux && inst.systemd.enable) {
"${inst.systemd.unitName}" = {
Unit = {
Description = "Openclaw gateway (${name})";
Description = "OpenClaw gateway (${name})";
};
Service = {
ExecStart = "${gatewayWrapper}/bin/openclaw-gateway-${name} gateway --port ${toString inst.gatewayPort}";
@ -197,7 +197,7 @@ in {
assertions = [
{
assertion = lib.length (lib.attrNames appDefaultsEnabled) <= 1;
message = "Only one Openclaw instance may enable appDefaults.";
message = "Only one OpenClaw instance may enable appDefaults.";
}
] ++ files.documentsAssertions ++ files.skillAssertions ++ plugins.pluginAssertions ++ plugins.pluginSkillAssertions;

View File

@ -131,7 +131,7 @@ let
let
guardLine = file: ''
if [ -e "${file}" ] && [ ! -L "${file}" ]; then
echo "Openclaw documents are managed by Nix. Please adopt ${file} into your documents directory and re-run." >&2
echo "OpenClaw documents are managed by Nix. Please adopt ${file} into your documents directory and re-run." >&2
exit 1
fi
'';

View File

@ -6,13 +6,13 @@
enable = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Enable this Openclaw instance.";
description = "Enable this OpenClaw instance.";
};
package = lib.mkOption {
type = lib.types.package;
default = openclawLib.defaultPackage;
description = "Openclaw batteries-included package.";
description = "OpenClaw batteries-included package.";
};
stateDir = lib.mkOption {
@ -20,19 +20,19 @@
default = if name == "default"
then "${openclawLib.homeDir}/.openclaw"
else "${openclawLib.homeDir}/.openclaw-${name}";
description = "State directory for this Openclaw instance (logs, sessions, config).";
description = "State directory for this OpenClaw instance (logs, sessions, config).";
};
workspaceDir = lib.mkOption {
type = lib.types.str;
default = "${config.stateDir}/workspace";
description = "Workspace directory for this Openclaw instance.";
description = "Workspace directory for this OpenClaw instance.";
};
configPath = lib.mkOption {
type = lib.types.str;
default = "${config.stateDir}/openclaw.json";
description = "Path to generated Openclaw config JSON.";
description = "Path to generated OpenClaw config JSON.";
};
logPath = lib.mkOption {
@ -40,19 +40,19 @@
default = if name == "default"
then "/tmp/openclaw/openclaw-gateway.log"
else "/tmp/openclaw/openclaw-gateway-${name}.log";
description = "Log path for this Openclaw gateway instance.";
description = "Log path for this OpenClaw gateway instance.";
};
gatewayPort = lib.mkOption {
type = lib.types.int;
default = 18789;
description = "Gateway port used by the Openclaw desktop app.";
description = "Gateway port used by the OpenClaw desktop app.";
};
gatewayPath = lib.mkOption {
type = lib.types.nullOr lib.types.str;
default = null;
description = "Local path to Openclaw gateway source (dev only).";
description = "Local path to OpenClaw gateway source (dev only).";
};
gatewayPnpmDepsHash = lib.mkOption {
@ -82,13 +82,13 @@
config = lib.mkOption {
type = lib.types.submodule { options = openclawLib.generatedConfigOptions; };
default = {};
description = "Openclaw config (schema-typed).";
description = "OpenClaw config (schema-typed).";
};
launchd.enable = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Run Openclaw gateway via launchd (macOS).";
description = "Run OpenClaw gateway via launchd (macOS).";
};
launchd.label = lib.mkOption {
@ -102,7 +102,7 @@
systemd.enable = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Run Openclaw gateway via systemd user service (Linux).";
description = "Run OpenClaw gateway via systemd user service (Linux).";
};
systemd.unitName = lib.mkOption {

View File

@ -44,12 +44,12 @@ let
in {
options.programs.openclaw = {
enable = lib.mkEnableOption "Openclaw (batteries-included)";
enable = lib.mkEnableOption "OpenClaw (batteries-included)";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.openclaw;
description = "Openclaw batteries-included package.";
description = "OpenClaw batteries-included package.";
};
toolNames = lib.mkOption {
@ -67,7 +67,7 @@ in {
appPackage = lib.mkOption {
type = lib.types.nullOr lib.types.package;
default = null;
description = "Optional Openclaw app package (defaults to package if unset).";
description = "Optional OpenClaw app package (defaults to package if unset).";
};
installApp = lib.mkOption {
@ -79,13 +79,13 @@ in {
stateDir = lib.mkOption {
type = lib.types.str;
default = "${openclawLib.homeDir}/.openclaw";
description = "State directory for Openclaw (logs, sessions, config).";
description = "State directory for OpenClaw (logs, sessions, config).";
};
workspaceDir = lib.mkOption {
type = lib.types.str;
default = "${openclawLib.homeDir}/.openclaw/workspace";
description = "Workspace directory for Openclaw agent skills.";
description = "Workspace directory for OpenClaw agent skills.";
};
documents = lib.mkOption {
@ -148,31 +148,31 @@ in {
launchd.enable = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Run Openclaw gateway via launchd (macOS).";
description = "Run OpenClaw gateway via launchd (macOS).";
};
launchd.label = lib.mkOption {
type = lib.types.str;
default = "com.steipete.openclaw.gateway";
description = "launchd label for the default Openclaw instance.";
description = "launchd label for the default OpenClaw instance.";
};
systemd.enable = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Run Openclaw gateway via systemd user service (Linux).";
description = "Run OpenClaw gateway via systemd user service (Linux).";
};
systemd.unitName = lib.mkOption {
type = lib.types.str;
default = "openclaw-gateway";
description = "systemd user service unit name for the default Openclaw instance.";
description = "systemd user service unit name for the default OpenClaw instance.";
};
instances = lib.mkOption {
type = lib.types.attrsOf (lib.types.submodule instanceModule);
default = {};
description = "Named Openclaw instances (prod/test).";
description = "Named OpenClaw instances (prod/test).";
};
exposePluginPackages = lib.mkOption {
@ -192,7 +192,7 @@ in {
config = lib.mkOption {
type = lib.types.submodule { options = openclawLib.generatedConfigOptions; };
default = {};
description = "Openclaw config (schema-typed).";
description = "OpenClaw config (schema-typed).";
};
};
}

View File

@ -18,7 +18,7 @@ stdenvNoCC.mkDerivation {
installPhase = "${../scripts/openclaw-app-install.sh}";
meta = with lib; {
description = "Openclaw macOS app bundle";
description = "OpenClaw macOS app bundle";
homepage = "https://github.com/openclaw/openclaw";
license = licenses.mit;
platforms = platforms.darwin;

View File

@ -15,7 +15,7 @@ buildEnv {
pathsToLink = [ "/bin" ] ++ appLinks;
meta = with lib; {
description = "Openclaw batteries-included bundle (gateway + app + tools)";
description = "OpenClaw batteries-included bundle (gateway + app + tools)";
homepage = "https://github.com/openclaw/openclaw";
license = licenses.mit;
platforms = platforms.darwin ++ platforms.linux;

View File

@ -94,7 +94,7 @@ stdenv.mkDerivation (finalAttrs: {
dontPatchShebangs = true;
meta = with lib; {
description = "Telegram-first AI gateway (Openclaw)";
description = "Telegram-first AI gateway (OpenClaw)";
homepage = "https://github.com/openclaw/openclaw";
license = licenses.mit;
platforms = platforms.darwin ++ platforms.linux;

View File

@ -64,7 +64,7 @@ const parsed = JSON.parse(raw);
const result = validateConfigObject(parsed);
if (!result.ok) {
console.error("Openclaw config validation failed:");
console.error("OpenClaw config validation failed:");
for (const issue of result.issues ?? []) {
const pathLabel = issue.path ? ` ${issue.path}` : "";
console.error(`- ${pathLabel}: ${issue.message}`);

View File

@ -1,4 +1,4 @@
# Pinned Openclaw source for nix-openclaw
# Pinned OpenClaw source for nix-openclaw
{
owner = "openclaw";
repo = "openclaw";

View File

@ -1,4 +1,4 @@
# AGENTS.md — Openclaw Workspace
# AGENTS.md — OpenClaw Workspace
This file is managed by Nix. Update it in the repo, not in the workspace.

View File

@ -1,4 +1,4 @@
# SOUL.md
Openclaw exists to do useful work reliably with minimal friction.
OpenClaw exists to do useful work reliably with minimal friction.

View File

@ -1,5 +1,5 @@
{
description = "Openclaw local";
description = "OpenClaw local";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
@ -31,7 +31,7 @@
# REPLACE: path to your managed documents directory
documents = ./documents;
# Schema-typed Openclaw config (from upstream)
# Schema-typed OpenClaw config (from upstream)
config = {
gateway = {
mode = "local";