{"id":50351126,"url":"https://github.com/nextagentbc/nextclaw","last_synced_at":"2026-05-29T21:01:34.456Z","repository":{"id":355482807,"uuid":"1228228374","full_name":"NextAgentBC/nextclaw","owner":"NextAgentBC","description":"Postgres + pgvector long-term memory plugin for OpenClaw. 4-tier recall, multi-key Xinhua-dictionary indexing, deterministic-first ingest, hard per-agent isolation, real-time dashboard.","archived":false,"fork":false,"pushed_at":"2026-05-16T20:38:32.000Z","size":292,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-16T20:41:32.682Z","etag":null,"topics":["ai-agent","discord-bot","hnsw","long-term-memory","memory","multi-agent","openclaw","pgvector","postgres","rag","self-hosted","vector-search"],"latest_commit_sha":null,"homepage":"https://nextagent.ca","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NextAgentBC.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-03T19:02:37.000Z","updated_at":"2026-05-16T18:46:04.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/NextAgentBC/nextclaw","commit_stats":null,"previous_names":["nextagentbc/nextclaw"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/NextAgentBC/nextclaw","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NextAgentBC%2Fnextclaw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NextAgentBC%2Fnextclaw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NextAgentBC%2Fnextclaw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NextAgentBC%2Fnextclaw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NextAgentBC","download_url":"https://codeload.github.com/NextAgentBC/nextclaw/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NextAgentBC%2Fnextclaw/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33670211,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agent","discord-bot","hnsw","long-term-memory","memory","multi-agent","openclaw","pgvector","postgres","rag","self-hosted","vector-search"],"created_at":"2026-05-29T21:01:31.975Z","updated_at":"2026-05-29T21:01:34.442Z","avatar_url":"https://github.com/NextAgentBC.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# nextclaw\n\n\u003e Postgres + pgvector long-term memory plugin for [OpenClaw](https://github.com/openclaw/openclaw).\n\u003e 4-tier recall · multi-key Xinhua-dictionary indexing · deterministic-first ingest · hard per-agent isolation · real-time dashboard.\n\n[![License: Apache-2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)\n![Status: 0.1.0](https://img.shields.io/badge/status-0.1.0-orange)\n\n```\n   ┌────────────────────────────────────────────────────────────┐\n   │  OpenClaw agent (DM, Discord, Slack, WhatsApp, ...)         │\n   └─────────────┬──────────────────────────┬───────────────────┘\n                 │ memory_search             │ memory_store\n                 ▼                           ▼\n   ┌────────────────────────────────────────────────────────────┐\n   │ nextclaw                                                   │\n   │                                                            │\n   │  Recall tier-walk:  T0 → T1 → T2 → T3                      │\n   │  Ingest pipeline:   Stage 0 → 1 → 2 → 3 → 4 → 5 → 6        │\n   │  8-route hybrid:    semantic / fulltext / trgm /           │\n   │                     concept_tag / entity_ref /             │\n   │                     time_bucket / anchor / category        │\n   │                                                            │\n   │  Per-agent isolation:  WHERE c.agent_id = $X (every route) │\n   └─────────────┬──────────────────────────┬───────────────────┘\n                 │                          │\n                 ▼                          ▼\n   ┌─────────────────────┐       ┌───────────────────────────┐\n   │  Postgres + pgvector│       │  Embedding endpoint        │\n   │  semantic + struct  │       │  (Ollama / OpenAI-compat / │\n   │  + audit + cache    │       │   vLLM / TEI / ...)        │\n   │  + cold + LISTEN/   │       │                            │\n   │  NOTIFY → dashboard │       │                            │\n   └─────────────────────┘       └───────────────────────────┘\n```\n\n---\n\n## What it does\n\n- **Drop-in replacement** for OpenClaw's bundled SQLite memory plugin (`memory-core`)\n- **4-tier recall** so 75%+ of repeat queries return in \u003c5ms with **0 LLM tokens** and **0 embedding calls**\n- **Multi-key indexing** (\"Xinhua dictionary\"): every chunk reachable from many orthogonal angles — semantic / fulltext / trigram / concept tags / entity refs / time buckets / anchors / categories\n- **Deterministic-first ingest**: no LLM in the hot path; LLM exists only as a residual stage when deterministic extraction yields nothing\n- **Hard per-agent memory namespace isolation**: run a private agent and a public Discord agent on the same database — they physically can't see each other's memory (SQL-layer enforcement, not application-layer)\n- **Semantic Q\u0026A cache** (`cache.qa`): repeat questions hit at sub-millisecond (L0 LRU) → ~5ms (L1 exact hash) → ~50ms (L2 HNSW). Skips the LLM entirely on repeat questions.\n- **Telegram-group Moderator** (optional, off by default): orchestrator-worker pattern à la Anthropic's \"Building Effective Agents\". Routes group `@-mentions` to specialist workers with tools (`memory_search`, `web_search` via Tavily), persists role designs so the registry compounds over time.\n- **Real-time dashboard** (bilingual CN/EN) with category breakdown, redaction for health/medical, bot-turn telemetry, side-by-side model comparison\n- **Self-tuning loop** (daily / weekly / monthly proposals)\n- **Universal HTTP ingest gateway** — any cron / skill / external script can write memory through the same Stage 0–6 pipeline\n\n## Companion skills\n\nStandalone OpenClaw skills that compose well with nextclaw:\n\n- **[openclaw-skill-reminder](https://github.com/NextAgentBC/openclaw-skill-reminder)** — privacy-conscious time-based reminders. The cron config file only sees opaque `reminder:\u003cshort-id\u003e` names; the actual detail (names, addresses, appointments) lives in a mode-600 file. Used by `/dashboard` users to schedule follow-ups without leaking PII into `jobs.json`.\n\n## Quick start (~5 min on Neon, ~10 min on Docker)\n\nYou need: a Postgres+pgvector database (free **Neon** cloud or local **Docker**) and a free **Jina** embedding key (30s signup). OpenClaw bundles Node 22+, so no extra runtime install.\n\nFor the Telegram Moderator, web_search, and reflection upgrades, see the [INSTALL.md](docs/INSTALL.md) bolt-ons. **Read [SERVICES.md](docs/SERVICES.md) first** to know which external services each capability needs.\n\n### Step 1 — Install OpenClaw (the host runtime, one-liner)\n\n```bash\ncurl -fsSL https://openclaw.ai/install.sh | bash\nopenclaw onboard --install-daemon\n# Windows PowerShell:  iwr -useb https://openclaw.ai/install.ps1 | iex\n```\n\n### Step 2 — Get a Postgres with pgvector (pick one)\n\n\u003cdetails open\u003e\u003csummary\u003e\u003cstrong\u003eOption A — Neon (recommended, zero local deps, free 0.5 GB)\u003c/strong\u003e\u003c/summary\u003e\n\n1. Go to \u003chttps://neon.tech\u003e → **Sign up** (GitHub OAuth, no card) → **Create project**\n2. Copy the connection string shown after creation, e.g. `postgresql://user:pwd@ep-xxx.neon.tech/neondb?sslmode=require`\n3. In Neon's **SQL Editor** tab, paste and run:\n\n   ```sql\n   CREATE EXTENSION IF NOT EXISTS vector;\n   CREATE EXTENSION IF NOT EXISTS pg_trgm;\n   CREATE EXTENSION IF NOT EXISTS btree_gin;\n   ```\n\n4. Export the connection string:\n\n   ```bash\n   export PG_URL=\"postgresql://user:pwd@ep-xxx.neon.tech/neondb?sslmode=require\"\n   ```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cstrong\u003eOption B — Docker (local, full control)\u003c/strong\u003e\u003c/summary\u003e\n\n```bash\ndocker run -d --name nextclaw-pg --restart unless-stopped \\\n  -e POSTGRES_USER=nextclaw -e POSTGRES_PASSWORD=nextclaw -e POSTGRES_DB=nextclaw \\\n  -p 127.0.0.1:55432:5432 -v nextclaw_pg:/var/lib/postgresql/data \\\n  pgvector/pgvector:pg16\nuntil docker exec nextclaw-pg pg_isready -U nextclaw \u003e/dev/null 2\u003e\u00261; do sleep 1; done\ndocker exec nextclaw-pg psql -U nextclaw -d nextclaw -c \\\n  \"CREATE EXTENSION IF NOT EXISTS vector; CREATE EXTENSION IF NOT EXISTS pg_trgm; CREATE EXTENSION IF NOT EXISTS btree_gin;\"\nexport PG_URL=\"postgres://nextclaw:nextclaw@127.0.0.1:55432/nextclaw\"\n```\n\n\u003c/details\u003e\n\n### Step 3 — Get a free Jina embedding key (30 seconds, no card, 1M tokens)\n\n\u003chttps://jina.ai/embeddings\u003e → **Get API key for free** → copy\n\n```bash\nexport JINA_API_KEY=jina_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nPersist `PG_URL` for future shells, and `JINA_API_KEY` for both shells *and* the OpenClaw daemon. The daemon is launched by launchd/systemd, so it does **not** read your `~/.zshrc` — it reads `~/.openclaw/service-env/ai.openclaw.gateway.env`:\n\n```bash\n# For interactive shells (future `configure-minimal.mjs` runs, ad-hoc psql, etc.)\ncat \u003e\u003e ~/.zshrc \u003c\u003cEOF   # or ~/.bashrc\nexport PG_URL=\"$PG_URL\"\nexport JINA_API_KEY=$JINA_API_KEY\nEOF\n\n# For the gateway daemon (so memory_search / memory_store can call Jina)\necho \"export JINA_API_KEY=$JINA_API_KEY\" \u003e\u003e ~/.openclaw/service-env/ai.openclaw.gateway.env\n```\n\n### Step 4 — Install nextclaw into OpenClaw\n\n```bash\nopenclaw plugins install git:github.com/NextAgentBC/nextclaw\n```\n\nThe plugin's id is **`memory-postgres`** (regardless of install source). Other sources — npm, ClawHub, local dev — are listed under [Other install methods](#other-install-methods).\n\n### Step 5 — Wire it into your `openclaw.json` (safe merge — preserves existing config)\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/NextAgentBC/nextclaw/main/scripts/configure-minimal.mjs |\n  PG_URL=\"$PG_URL\" node --input-type=module\n```\n\nThis adds two keys to `~/.openclaw/openclaw.json` and leaves everything else (`gateway`, `agents`, `auth`, …) untouched:\n\n- `plugins.slots.memory = \"memory-postgres\"`\n- `plugins.entries[\"memory-postgres\"]` with `postgres.url` + dashboard\n\n\u003e Prefer to edit by hand? Paste the block below into your existing `plugins.entries` — the embedding block is optional, defaults to Jina free-tier when omitted.\n\u003e\n\u003e ```jsonc\n\u003e \"memory-postgres\": {\n\u003e   \"enabled\": true,\n\u003e   \"config\": {\n\u003e     \"postgres\": { \"url\": \"\u003cyour PG_URL\u003e\" },\n\u003e     \"dashboard\": { \"enabled\": true, \"tokenEnv\": \"NEXTCLAW_DASH_TOKEN\" }\n\u003e   }\n\u003e }\n\u003e ```\n\n### Step 6 — Set the dashboard token and restart the daemon\n\n```bash\nexport NEXTCLAW_DASH_TOKEN=$(openssl rand -hex 24)\n# Persist for the daemon (same env file as JINA_API_KEY above)\necho \"export NEXTCLAW_DASH_TOKEN=$NEXTCLAW_DASH_TOKEN\" \u003e\u003e ~/.openclaw/service-env/ai.openclaw.gateway.env\n# Persist for this shell session too, for the smoke-test curls below\necho \"export NEXTCLAW_DASH_TOKEN=$NEXTCLAW_DASH_TOKEN\" \u003e\u003e ~/.zshrc\n\nopenclaw gateway restart\n```\n\n### Step 7 — Smoke test: write a memory, then recall it\n\nThe dashboard's HTTP API authenticates via the **`X-Token`** header (or `?token=` query param) — not `Authorization: Bearer`. The browser dashboard captures `?token=…` into `sessionStorage` and then forwards it as `X-Token` on every subsequent call.\n\n```bash\ncurl -sS -X POST http://127.0.0.1:8765/api/ingest \\\n  -H \"X-Token: $NEXTCLAW_DASH_TOKEN\" \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"text\":\"My favorite Postgres extension is pgvector.\",\"source\":\"smoke\",\"agentId\":\"main\"}'\n\ncurl -sS -X POST http://127.0.0.1:8765/api/recall \\\n  -H \"X-Token: $NEXTCLAW_DASH_TOKEN\" \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"query\":\"What is my favorite Postgres extension?\",\"agentId\":\"main\"}'\n# → returns the chunk with hitTier: \"t2_hybrid\"\n```\n\nTo open the live dashboard in your browser:\n\n```\nhttp://127.0.0.1:8765/?token=$NEXTCLAW_DASH_TOKEN\n```\n\nFor the **full 0 → 1 walkthrough** with persona files, troubleshooting, Discord/Telegram bots, web_search, and multi-agent isolation, see **[docs/INSTALL.md](docs/INSTALL.md)**.\n\n### Other install methods\n\n`openclaw plugins install` accepts several sources — pick whichever matches your workflow:\n\n```bash\n# Git (recommended today — auto-builds during npm install via `prepare`)\nopenclaw plugins install git:github.com/NextAgentBC/nextclaw\nopenclaw plugins install git:github.com/NextAgentBC/nextclaw@v0.2.0   # pin a tag\n\n# npm (coming soon — the bare `nextclaw` npm name is taken by an unrelated\n# CLI, so this plugin will publish as a scoped name like @nextagentbc/nextclaw)\n# openclaw plugins install npm:@nextagentbc/nextclaw\n\n# ClawHub (coming soon — OpenClaw's official plugin hub)\n# openclaw plugins install clawhub:memory-postgres\n\n# Local dev (clone + live-reload symlink; runs from .ts source, no build needed)\ngit clone https://github.com/NextAgentBC/nextclaw.git\nopenclaw plugins install --link ./nextclaw\n```\n\n### Installing nextclaw with help from an AI agent\n\nThe docs are explicitly written to be read by both humans and LLM agents. If you'd like an agent to install nextclaw for you:\n\n1. Point the agent at **[docs/SERVICES.md](docs/SERVICES.md)** to enumerate which external services you'll need\n2. The agent walks through dependencies in order — Postgres → embedding → (optional) LLM → (optional) Telegram → (optional) Tavily — using each section's signup link, env-var name, and verification curl\n3. Final step: the agent runs `scripts/configure-minimal.mjs` from step 5 then the smoke test from step 7\n\nThe \"For AI agents\" section at the bottom of SERVICES.md spells out the recommended dialogue flow.\n\n\u003e **Want to self-host the embedder instead of Jina?** Run Ollama locally\n\u003e and add `\"embedding\": { \"format\": \"ollama\" }` to the `memory-postgres`\n\u003e entry — the rest of the embedding block fills itself in from\n\u003e per-format defaults. See\n\u003e [docs/CONFIG.md#embedding](docs/CONFIG.md#embedding).\n\u003e\n\u003e ⚠️ **Embedding dimension is one-way.** It's auto-detected on first ingest\n\u003e and locked into the HNSW index. Switching from `jina-embeddings-v3` (1024d)\n\u003e to `qwen3-embedding:4b` (4096d) requires `TRUNCATE semantic.chunks` and\n\u003e re-ingesting everything. Pick the model you can live with for a while.\n\n## Documentation\n\n| Doc | What it covers |\n|---|---|\n| **[docs/SERVICES.md](docs/SERVICES.md)** | **Read first.** Every external service (Postgres, Jina, Gemini, Tavily, Telegram, OpenAI, credbroker) — signup links, env vars, config snippets, verification curls. Written for both AI agents and humans. |\n| **[docs/INSTALL.md](docs/INSTALL.md)** | Fresh-machine 0 → 1 walkthrough · Discord bot · Telegram Moderator · web_search · multi-agent isolation · troubleshooting. Four capability levels A → D you can ladder up through. |\n| **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)** | Storage layout · 4-tier recall · 8-route hybrid · Stage 0–6 ingest · isolation guarantees · scoring · self-tuning · workers |\n| **[docs/CONFIG.md](docs/CONFIG.md)** | Every config field, default, tuning advice |\n| **[docs/LIVE_TESTS.md](docs/LIVE_TESTS.md)** | How to run live tests against a real PG + embedding endpoint |\n\n## Compatibility\n\n- **OpenClaw** `\u003e= 2026.4.25`\n- **Node** `\u003e= 22`\n- **Postgres** `\u003e= 16` with **pgvector** `\u003e= 0.7.0` (HNSW)\n- **Embedding**: Jina (default, free tier), any OpenAI- or Ollama-compat endpoint. Tested with `jina-embeddings-v3` (1024d, default), `nomic-embed-text` (768d), `qwen3-embedding:0.6b` (1024d), `qwen3-embedding:4b` (4096d). Dimension is detected on first embed and **locked** into the HNSW index — switching models means re-ingesting.\n- **Reflection LLM** (optional): any OpenAI-compat chat endpoint, or native Gemini API (e.g. via Google's free tier or a Tailscale credential broker). Disabled by default.\n\n## Performance reference\n\nNumbers from a single-machine deployment, ~280 chunks, single Discord conversation flow:\n\n| Operation | Path | LLM tokens | Embed calls | Latency |\n|---|---|---|---|---|\n| Recall — repeated query within 5min | T1 | 0 | 0 | ~ 1 ms |\n| Recall — anchor (e.g. PR # in query) | T2 anchor | 0 | 0 | ~ 8 ms |\n| Recall — generic question | T2 hybrid | 0 | 1 | ~ 250 ms |\n| Ingest — short text (\u003c200 char), warm embed | deterministic | 0 | 0 (cache hit) | ~ 50 ms |\n| Ingest — long text (~2000 char) | deterministic | 0 | 1 | ~ 600 ms |\n\nIn a typical workload, ingest spends **0 LLM tokens** end-to-end. Recall LLM tokens are 0 except when the optional intent classifier is enabled.\n\n## Privacy by default\n\n- `health` and `medical` chunks auto-pinned (`importance ≥ 0.7`, `retention_class='pinned'`) at ingest time, deterministically — based on a CN+EN keyword dictionary, not LLM judgment\n- Their `text_excerpt` is redacted in the dashboard's `/api/recent` response\n- Per-agent isolation means a public-facing agent **cannot** retrieve them even via adversarial prompting\n\n## Scope \u0026 limits\n\nBe explicit about what this plugin is and isn't, so you can decide if it fits before installing:\n\n### The **memory pipeline** (recall, ingest, dashboard, cache, isolation) is channel-agnostic\nWorks with any openclaw agent — DM, Discord, Slack, WhatsApp, etc. Ingest accepts text from any source via the HTTP gateway. **No coupling to a specific channel or bot account.**\n\n### The **Moderator** (Phase C / D, opt-in) is **Telegram-group-only** today\nWhen `moderator.enabled=true`, the plugin registers a `before_dispatch` hook that claims **group @-mentions on the `telegram` channel** — codex (or whatever other plugin would have replied) is suppressed for those messages; the Moderator replies out-of-band via the Telegram Bot API.\n\n- **DMs are untouched** — codex handles them as before\n- **Group messages without an @-mention are untouched** — codex doesn't reply to those anyway\n- **Slack / Discord / WhatsApp `@-mentions` are NOT claimed** — only `channelId === \"telegram\"` matches today\n\nIf you want the Moderator on another channel, the suppression rule (`index.ts` → `before_dispatch` hook) and the Telegram-Bot-API reply path (`src/moderator/telegram-api.ts`) both need adaptation. Issue/PR welcome.\n\n### Single-tenant by default; explicitly multi-tenant\nEvery row this plugin writes carries an `agent_id` column. The Moderator uses `cfg.moderator.agentId` (default `\"main\"`). To run two openclaw instances against the same Postgres without collision, give each install a distinct `agentId`:\n\n```jsonc\n\"moderator\": { \"enabled\": true, \"agentId\": \"tutor-bot\" }\n```\n\n`worker_roles`, `moderator.state`, `moderator.decisions`, and `cache.qa` rows are all namespaced — the agents can't see each other's state.\n\n### `web_search` tool requires a Tavily endpoint\nEither `credbroker.baseUrl` (Tailscale credential broker that proxies Tavily — see [docs/CONFIG.md](docs/CONFIG.md)) or `TAVILY_API_KEY` in env. **Without one, `web_search` returns an honest error** to the LLM (which then explains the limitation to the user). No silent failures.\n\n### LLM transport\n- Moderator decision LLM: **OpenAI-compatible** or **Gemini `:generateContent`** (with tool calls). OpenAI tool-call format is single-shot only today; multi-turn tool calls require Gemini.\n- Embedding: **Jina, OpenAI-compat, or Ollama**. Default is Jina free tier.\n\n## Status\n\n`v0.2.x` — memory pipeline + dashboard stable; Moderator + worker-tools layer (Phase C/D) live-tested but newer. Live tests pass against the reference setup. Concurrency simulation covers 8 scenarios (cache stampede, cross-scope parallelism, viewer isolation, mixed load, worker round-trip, role auto-register, tool calls, web_search). See [CHANGELOG.md](CHANGELOG.md).\n\n## License\n\n[Apache 2.0](LICENSE) · [NOTICE](NOTICE) acknowledges OpenClaw upstream.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnextagentbc%2Fnextclaw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnextagentbc%2Fnextclaw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnextagentbc%2Fnextclaw/lists"}