diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b2be92b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +result diff --git a/AGENTS.md b/AGENTS.md index 54a78ae..e9073bd 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,4 +1,4 @@ -# AGENTS.md — nix-clawdis +# AGENTS.md — nix-clawdbot Single source of truth for product direction: `README.md`. @@ -17,7 +17,7 @@ Defaults: Philosophy: -The Zen of ~~Python~~ Clawdis, ~~by~~ shamelessly stolen from Tim Peters +The Zen of ~~Python~~ Clawdbot, ~~by~~ shamelessly stolen from Tim Peters Beautiful is better than ugly. Explicit is better than implicit. diff --git a/README.md b/README.md index a30ff19..43b6476 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ -# nix-clawdis +# nix-clawdbot -> Declarative Clawdis. Bulletproof by default. +> Declarative Clawdbot. Bulletproof by default. > > macOS only. Linux/Windows are out of scope for now. > > [skip to agent copypasta](#give-this-to-your-ai-agent) > -> Questions? Join the Clawdis Discord and ask in **#nix**. +> Questions? Join the Clawdbot Discord and ask in **#nix-packaging**: https://discord.com/channels/1456350064065904867/1457003026412736537 ![On declarative build systems](docs/images/on-declarative-build-systems.png) @@ -27,7 +27,7 @@ This README is the **single source of truth** for maintainers. ## Why this exists -Clawdis is the right product. An AI assistant that lives in Telegram, controls your Mac, and actually does things. +Clawdbot is the right product. An AI assistant that lives in Telegram, controls your Mac, and actually does things. This repo wraps it in Nix: a pinned, reproducible package that installs the gateway, the macOS app, and all the tools declaratively. Every dependency locked. Every update intentional. Rollback in seconds. @@ -51,19 +51,19 @@ You talk to Telegram, your Mac does things. Copy this entire block and paste it to Claude, Cursor, or whatever you use: ```text -I want to set up nix-clawdis on my Mac. +I want to set up nix-clawdbot on my Mac. -Repository: github:joshp123/nix-clawdis +Repository: github:clawdbot/nix-clawdbot -What nix-clawdis is: -- Batteries-included Nix package for Clawdis (AI assistant gateway) +What nix-clawdbot is: +- Batteries-included Nix package for Clawdbot (AI assistant gateway) - Installs gateway + macOS app + tools (whisper, spotify, cameras, etc) - Runs as a launchd service, survives reboots What I need you to do: 1. Check if Determinate Nix is installed (if not, install it) -2. Create a local flake at ~/code/clawdis-local using templates/agent-first/flake.nix -3. Create a docs dir next to the config (e.g., ~/code/clawdis-local/documents) with AGENTS.md, SOUL.md, TOOLS.md +2. Create a local flake at ~/code/clawdbot-local using templates/agent-first/flake.nix +3. Create a docs dir next to the config (e.g., ~/code/clawdbot-local/documents) with AGENTS.md, SOUL.md, TOOLS.md - If ~/.clawdis/workspace already has these files, adopt them into the documents dir first 3. Help me create a Telegram bot (@BotFather) and get my chat ID (@userinfobot) 4. Set up secrets (bot token, Anthropic key) - plain files at ~/.secrets/ is fine @@ -110,7 +110,7 @@ Then: `home-manager switch --flake .#youruser` This is still single‑instance, but uses `instances.default` to unlock per‑group mention rules. If `instances` is set, you don’t need `programs.clawdis.enable`. -Group mention overrides below mirror upstream Clawdis config. +Group mention overrides below mirror upstream Clawdbot config. Secrets are shown using `/run/agenix/...` (from a repo with your agenix secrets), but any file path works. Docs are managed from `./documents` and symlinked into the workspace on each switch. @@ -183,14 +183,14 @@ pinned to a released version (no local app builds yet). ```nix # flake inputs (pin prod + app) inputs = { - nix-clawdis.url = "github:joshp123/nix-clawdis?ref=v0.1.0"; # pins macOS app + gateway bundle + nix-clawdbot.url = "github:clawdbot/nix-clawdbot?ref=v0.1.0"; # pins macOS app + gateway bundle }; let prod = { enable = true; - # Prod gateway pin (comes from nix-clawdis input @ v0.1.0 above). - package = inputs.nix-clawdis.packages.${pkgs.system}.clawdis-gateway; + # Prod gateway pin (comes from nix-clawdbot input @ v0.1.0 above). + package = inputs.nix-clawdbot.packages.${pkgs.system}.clawdis-gateway; providers.telegram.enable = true; providers.telegram.botTokenFile = "/run/agenix/telegram-prod"; providers.telegram.allowFrom = [ 12345678 ]; @@ -198,19 +198,19 @@ let plugins = [ { source = "github:owner/your-plugin"; } ]; }; in { - # Pinned macOS app (POC: no local app builds, uses nix-clawdis @ v0.1.0 above). + # Pinned macOS app (POC: no local app builds, uses nix-clawdbot @ v0.1.0 above). programs.clawdis.appPackage = - inputs.nix-clawdis.packages.${pkgs.system}.clawdis-app; + inputs.nix-clawdbot.packages.${pkgs.system}.clawdis-app; programs.clawdis.documents = ./documents; programs.clawdis.instances = { prod = prod; dev = prod // { - # Dev uses the same pinned macOS app (from nix-clawdis input), + # Dev uses the same pinned macOS app (from nix-clawdbot input), # but overrides the gateway package to a local checkout. providers.telegram.botTokenFile = "/run/agenix/telegram-dev"; gatewayPort = 18790; # Local gateway checkout (path). App stays pinned. - gatewayPath = "/Users/you/code/clawdis"; + gatewayPath = "/Users/you/code/clawdbot"; # Local plugin overrides prod if names collide (last wins). plugins = prod.plugins ++ [ { source = "path:/Users/you/code/your-plugin"; } @@ -283,10 +283,10 @@ Use the `hello` CLI to print a greeting. **Hello‑world uses no config:** it declares empty `needs` and requires no per‑plugin `config`. -## Paste this prompt to your coding agent (make your plugin nix‑clawdis‑native) +## Paste this prompt to your coding agent (make your plugin nix‑clawdbot‑native) ```text -Goal: Make this repo a nix‑clawdis‑native plugin with the standard contract. +Goal: Make this repo a nix‑clawdbot‑native plugin with the standard contract. Contract to implement: 1) Add clawdisPlugin output in flake.nix: @@ -353,7 +353,7 @@ Deliverables: flake output, env overrides, AGENTS.md, skill update. - Nix pulls the plugin, reads `clawdisPlugin`, and installs the CLI(s). - Skills are symlinked into `~/.clawdis/skills//`. -- Clawdis loads managed skills automatically at runtime. +- Clawdbot loads managed skills automatically at runtime. - Any plugin services run as **user‑level** launchd agents (no sudo). - MVP scope: tools/skills should come **from plugins only** (no ad‑hoc installs). - Plugin `settings` are rendered to `config.json` in the plugin’s first `stateDir`. @@ -422,11 +422,11 @@ home-manager switch --rollback # revert ## Upstream -Wraps [Clawdis](https://github.com/steipete/clawdis) by Peter Steinberger. +Wraps [Clawdbot](https://github.com/clawdbot/clawdbot) by Peter Steinberger. ## Philosophy -The Zen of ~~Python~~ Clawdis, ~~by~~ shamelessly stolen from Tim Peters +The Zen of ~~Python~~ Clawdbot, ~~by~~ shamelessly stolen from Tim Peters Beautiful is better than ugly. Explicit is better than implicit. diff --git a/docs/images/on-declarative-build-systems.png b/docs/images/on-declarative-build-systems.png index 9cefece..af77100 100644 Binary files a/docs/images/on-declarative-build-systems.png and b/docs/images/on-declarative-build-systems.png differ diff --git a/docs/rfc/2026-01-02-declarative-clawdis-nix.md b/docs/rfc/2026-01-02-declarative-clawdis-nix.md index 08caec7..aa8cd81 100644 --- a/docs/rfc/2026-01-02-declarative-clawdis-nix.md +++ b/docs/rfc/2026-01-02-declarative-clawdis-nix.md @@ -1,4 +1,4 @@ -# RFC: Declarative Clawdis as a Nix Package (nix-clawdis) +# RFC: Declarative Clawdbot as a Nix Package (nix-clawdbot) - Date: 2026-01-02 - Status: Implementing @@ -6,7 +6,7 @@ ## 1) Narrative: what we are building and why -Clawdis is powerful but hard to install and configure for new users, especially those who do not want to learn Nix internals. We need a batteries‑included, obvious, and safe path to get a working Clawdis instance with minimal friction. This RFC proposes a dedicated public repo, `nix-clawdis`, that packages Clawdis for Nix and provides a declarative, user‑friendly configuration layer with strong defaults and an agent‑first onboarding flow. +Clawdbot is powerful but hard to install and configure for new users, especially those who do not want to learn Nix internals. We need a batteries‑included, obvious, and safe path to get a working Clawdbot instance with minimal friction. This RFC proposes a dedicated public repo, `nix-clawdbot`, that packages Clawdbot for Nix and provides a declarative, user‑friendly configuration layer with strong defaults and an agent‑first 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. @@ -22,7 +22,7 @@ The goal is a **fully declarative bootstrap**: users provide a small set of inpu ## 1.2) Scope boundaries (avoid confusion) This RFC is only about: -- The public `nix-clawdis` repo (package + module + docs). +- The public `nix-clawdbot` repo (package + module + docs). - A generic, end‑user Nix setup that lives outside any personal config repo. This RFC is explicitly **not** about: @@ -32,7 +32,7 @@ This RFC is explicitly **not** about: ## 2) Goals / Non‑goals Goals: -- Provide a Nix package for Clawdis and a Home Manager module with batteries‑included defaults. +- Provide a Nix package for Clawdbot and a Home Manager module with batteries‑included defaults. - Provide a macOS app bundle package aligned to the gateway version. - Make configuration technically light with explicit options and guardrails. - Telegram‑first configuration and defaults. @@ -40,17 +40,17 @@ Goals: - New user can get a working bot in 10 minutes without understanding Nix internals. Non‑goals: -- Rewriting Clawdis core functionality. +- Rewriting Clawdbot core functionality. - Supporting non‑Nix install paths in this repo. - Shipping a hosted SaaS or paid hosting. -- Replacing upstream Clawdis docs. +- Replacing upstream Clawdbot docs. - Cross‑platform support (Linux/Windows) in v1. - CI automation in v1. ## 3) System overview -`nix-clawdis` is a public repo that provides (macOS‑only in v1, no CI in v1): -- A Nix package derivation for the Clawdis gateway. +`nix-clawdbot` is a public repo that provides (macOS‑only in v1, no CI in v1): +- A Nix package derivation for the Clawdbot gateway. - A Nix package for the macOS app bundle (DMG). - A Home Manager module for user‑level config and service wiring. - A nix‑darwin module for macOS users (optional, thin wrapper over HM). @@ -59,8 +59,8 @@ Non‑goals: ## 4) Components and responsibilities -- **Package derivation**: builds Clawdis gateway from a pinned source. -- **App bundle**: installs Clawdis.app from a pinned DMG matching the gateway version. +- **Package derivation**: builds Clawdbot gateway from a pinned source. +- **App bundle**: installs Clawdbot.app from a pinned DMG matching the gateway version. - **Home Manager module**: declarative config, writes `~/.clawdis/clawdis.json`, manages services. - **Flake outputs**: - `packages..clawdis` (default batteries‑included bundle) @@ -93,7 +93,7 @@ The README is the only supported onboarding path. It must include: ## 8) Backing tools (batteries‑included) - Base and extended toolchains are installed via Nix by default. -- Tools correspond to upstream Clawdis skill installers (brew/go/node/uv) mapped into nixpkgs where possible. +- Tools correspond to upstream Clawdbot skill installers (brew/go/node/uv) mapped into nixpkgs where possible. ## 9) Compatibility guarantees @@ -106,7 +106,7 @@ The README is the only supported onboarding path. It must include: We will maintain two distinct setups: - **Prod (stable)** - - Uses `nix-clawdis` batteries‑included package. + - Uses `nix-clawdbot` batteries‑included package. - Pinned to released tags. - No source builds. - Launchd managed by Nix. diff --git a/examples/hello-world-plugin/flake.nix b/examples/hello-world-plugin/flake.nix index 41c2756..c5313c9 100644 --- a/examples/hello-world-plugin/flake.nix +++ b/examples/hello-world-plugin/flake.nix @@ -1,5 +1,5 @@ { - description = "Hello-world Clawdis plugin"; + description = "Hello-world Clawdbot plugin"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; diff --git a/flake.nix b/flake.nix index 0c97505..2a04777 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,5 @@ { - description = "nix-clawdis: declarative Clawdis packaging for macOS"; + description = "nix-clawdbot: declarative Clawdbot packaging for macOS"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; diff --git a/nix/packages/clawdis-app.nix b/nix/packages/clawdis-app.nix index e7ea810..070e251 100644 --- a/nix/packages/clawdis-app.nix +++ b/nix/packages/clawdis-app.nix @@ -8,7 +8,7 @@ stdenvNoCC.mkDerivation { version = "2.0.0-beta4"; src = fetchzip { - url = "https://github.com/steipete/clawdis/releases/download/v2.0.0-beta4/Clawdis-2.0.0-beta4.zip"; + url = "https://github.com/clawdbot/clawdbot/releases/download/v2.0.0-beta4/Clawdis-2.0.0-beta4.zip"; hash = "sha256-Oa7cejVFfZtJBSmjDaRjqocVyXo+WeS/xucGpJFDzIg="; stripRoot = false; }; @@ -28,8 +28,8 @@ stdenvNoCC.mkDerivation { ''; meta = with lib; { - description = "Clawdis macOS app bundle"; - homepage = "https://github.com/steipete/clawdis"; + description = "Clawdbot macOS app bundle"; + homepage = "https://github.com/clawdbot/clawdbot"; license = licenses.mit; platforms = platforms.darwin; }; diff --git a/nix/packages/clawdis-batteries.nix b/nix/packages/clawdis-batteries.nix index fa0c437..23be245 100644 --- a/nix/packages/clawdis-batteries.nix +++ b/nix/packages/clawdis-batteries.nix @@ -11,8 +11,8 @@ buildEnv { pathsToLink = [ "/bin" "/Applications" ]; meta = with lib; { - description = "Clawdis batteries-included bundle (gateway + app + tools)"; - homepage = "https://github.com/steipete/clawdis"; + description = "Clawdbot batteries-included bundle (gateway + app + tools)"; + homepage = "https://github.com/clawdbot/clawdbot"; license = licenses.mit; platforms = platforms.darwin; }; diff --git a/nix/packages/clawdis-gateway.nix b/nix/packages/clawdis-gateway.nix index b27bfa3..4645189 100644 --- a/nix/packages/clawdis-gateway.nix +++ b/nix/packages/clawdis-gateway.nix @@ -65,8 +65,8 @@ stdenv.mkDerivation (finalAttrs: { ''; meta = with lib; { - description = "Telegram-first AI gateway (Clawdis)"; - homepage = "https://github.com/joshp123/clawdis"; + description = "Telegram-first AI gateway (Clawdbot)"; + homepage = "https://github.com/clawdbot/clawdbot"; license = licenses.mit; platforms = platforms.darwin; mainProgram = "clawdis"; diff --git a/nix/sources/clawdis-source.nix b/nix/sources/clawdis-source.nix index 8b5305e..0d73c0a 100644 --- a/nix/sources/clawdis-source.nix +++ b/nix/sources/clawdis-source.nix @@ -1,7 +1,7 @@ -# Pinned Clawdis source for nix-clawdis +# Pinned Clawdbot source for nix-clawdbot { - owner = "steipete"; - repo = "clawdis"; + owner = "clawdbot"; + repo = "clawdbot"; rev = "v2.0.0-beta5"; hash = "sha256-DTMIyozlix8eixu8GnSL4+sd46KuS3LejOCLOIHZqjk="; } diff --git a/templates/agent-first/documents/AGENTS.md b/templates/agent-first/documents/AGENTS.md index d123ed6..2c412f2 100644 --- a/templates/agent-first/documents/AGENTS.md +++ b/templates/agent-first/documents/AGENTS.md @@ -1,4 +1,4 @@ -# AGENTS.md — Clawdis Workspace +# AGENTS.md — Clawdbot Workspace This file is managed by Nix. Update it in the repo, not in the workspace. diff --git a/templates/agent-first/documents/SOUL.md b/templates/agent-first/documents/SOUL.md index d42156e..c247d91 100644 --- a/templates/agent-first/documents/SOUL.md +++ b/templates/agent-first/documents/SOUL.md @@ -1,4 +1,4 @@ # SOUL.md -Clawdis exists to do useful work reliably with minimal friction. +Clawdbot exists to do useful work reliably with minimal friction. diff --git a/templates/agent-first/flake.nix b/templates/agent-first/flake.nix index 59d7789..9d77e2c 100644 --- a/templates/agent-first/flake.nix +++ b/templates/agent-first/flake.nix @@ -1,24 +1,24 @@ { - description = "Clawdis local"; + description = "Clawdbot local"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; home-manager.url = "github:nix-community/home-manager"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; - nix-clawdis.url = "github:joshp123/nix-clawdis"; + nix-clawdbot.url = "github:clawdbot/nix-clawdbot"; }; - outputs = { self, nixpkgs, home-manager, nix-clawdis }: + outputs = { self, nixpkgs, home-manager, nix-clawdbot }: let # REPLACE: aarch64-darwin (Apple Silicon) or x86_64-darwin (Intel) system = ""; - pkgs = import nixpkgs { inherit system; overlays = [ nix-clawdis.overlays.default ]; }; + pkgs = import nixpkgs { inherit system; overlays = [ nix-clawdbot.overlays.default ]; }; in { # REPLACE: with your macOS username (run `whoami`) homeConfigurations."" = home-manager.lib.homeManagerConfiguration { inherit pkgs; modules = [ - nix-clawdis.homeManagerModules.clawdis + nix-clawdbot.homeManagerModules.clawdis { # Required for Home Manager standalone home.username = "";