## Summary
Two end-to-end improvements to `install.sh` / `install.ps1`, mirrored
across both:
### 1. Agent auto-detection
Probe well-known config dirs and binaries for ~18 of
[vercel-labs/skills](https://github.com/vercel-labs/skills)' 45
supported agents (`claude-code`, `cursor`, `codex`, `gemini-cli`,
`opencode`, `openclaw`, `qwen-code`, `iflow-cli`, `windsurf`, `warp`,
`amp`, `crush`, `goose`, `droid`, `kode`, `kilo`, `kimi-cli`,
`kiro-cli`).
When detection finds anything, the `skills add` step gets `-a id1,id2,…`
instead of dumping the user into the multi-select. New flags:
- `--list-agents` — preview what we'd auto-select (and exit)
- `--all-agents` — skip our detection, let `skills` CLI scan everything
- `--only` — manual override (unchanged)
### 2. Local-vs-remote MCP auth routing
The current `--auth-login` always auto-opens a browser. On SSH sessions,
Docker containers, and OpenClaw remote channels (where the user is on a
phone), that silently launches a browser they can't see — leaving them
stuck on "Waiting for authorization…".
Detection (any signal fires ⇒ remote):
| Signal | Notes |
|---|---|
| `$HOME/.openclaw` exists | OpenClaw runtime — most reliable single
signal |
| `$SSH_CONNECTION` / `$SSH_TTY` | Generic SSH session |
| Linux without `$DISPLAY` / `$WAYLAND_DISPLAY` | Headless |
When remote, pass `--no-browser` to the MCP CLI, which prints URL + ANSI
QR for the user to scan with a phone.
New flags:
- `--remote` / `--local` — force either mode
- `--force-mcp` — re-auth even if AgentKey is already configured
Also adds an idempotency short-circuit: if any known MCP config already
has an `agentkey` block with a valid-looking API key, skip the auth step
entirely (`--force-mcp` to override).
### 3. Docs
`README.md` + `docs/README_zh.md` updated to document the new flags and
add a dedicated **"Installing over SSH / Docker / OpenClaw"** section.
## Companion PRs (server side)
The MCP-server changes that this installer routes to ship in a chain of
three PRs against `chainbase-labs/AgentKey-Server`:
| PR | Status | What it adds |
|---|---|---|
| [#2](https://github.com/chainbase-labs/AgentKey-Server/pull/2) |
merged | `--no-browser` / `--qr` / `--no-qr` flags + `qrcode-terminal`
dep (v0.3.5 source bump) |
| [#3](https://github.com/chainbase-labs/AgentKey-Server/pull/3) |
merged | Bump to 0.3.6 — npm `0.3.5` had been published from a pre-merge
commit and shipped stale `dist/` |
| [#4](https://github.com/chainbase-labs/AgentKey-Server/pull/4) | open
| Fix QR not rendering in `--no-browser` (CJS interop bug —
`qrcode-terminal`'s `generate` lives on `.default` under NodeNext); bump
to 0.3.7 |
**This installer needs `@agentkey/mcp@0.3.7`** to be on npm for the QR
flow to actually work. Sequence:
1. Merge #4✅
2. Maintainer runs `cd mcp-server && npm publish` (no npm-publish CI
workflow) ✅
3. Merge this PR — `npx -y @agentkey/mcp` will then pull 0.3.7+ and the
`--remote` path renders the QR
This installer change is **forward-compatible**: it can land anytime —
older `@agentkey/mcp` versions silently ignore the unknown
`--no-browser` flag, so worst case a remote user gets the old
browser-opens-on-the-wrong-host UX until the new mcp publishes.
## Test plan
Verified end-to-end on macOS against a local build of
`@agentkey/mcp@0.3.7` (server PR #4):
- [x] Bash syntax check passes (`bash -n install.sh`)
- [x] `install.sh --help` renders all 5 new flag rows
- [x] `install.sh --list-agents` correctly prints detected agents on
test host (10 agents incl. `openclaw`)
- [x] `install.sh --remote --local` exits with code 1 (mutex)
- [x] `install.sh --skip-skill` short-circuits with "AgentKey is already
configured…" when configs have agentkey
- [x] `install.sh --remote --skip-skill --force-mcp` end-to-end: prints
`Detected remote install context — printing QR + URL instead of opening
a browser here`, then `reason: $HOME/.openclaw exists (OpenClaw
runtime)`, launches mcp CLI, renders 16-row ANSI QR, polls — no `open`
process spawned
- [x] All 4 mcp 0.3.7 flag combinations behave correctly (`--no-browser`
/ `--no-browser --no-qr` / `--qr` / no-flags back-compat)
- [ ] `install.ps1` not lint-checked locally (no pwsh on test host);
logic is a strict mirror of bash — needs Windows smoke before merge
- [ ] Inside a real OpenClaw container — confirm `~/.openclaw` triggers
as expected
## Why now
Users running the installer via OpenClaw / Claude Code remote channels
(on a phone) currently see a black-hole UX: the browser opens on the
wrong machine and the install process appears to hang. The detection
here removes the manual `--remote` flag for the common case.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
## Summary
- Add a "New here? Start on the web" section above `## Install` in both
`README.md` and `docs/README_zh.md`, pointing first-time visitors to
`agentkey.app` and `console.agentkey.app` and explaining what each is
for.
- Add a Console badge alongside the existing Website badge near the top
of both READMEs so the two destinations are visible at a glance.
## Why
Right now the only mention of the website is a single small badge near
the top, and `console.agentkey.app` isn't surfaced in the README at all
— non-technical visitors landing on GitHub get funneled straight into a
`curl | bash` step without ever discovering the friendlier web-based
entry points where the product is explained more clearly.
## Test plan
- [ ] Render `README.md` on GitHub and confirm both badges show in the
header and the new section appears directly above `## Install`.
- [ ] Render `docs/README_zh.md` on GitHub and confirm the same
structure in the Chinese version.
- [ ] Click `agentkey.app` and `console.agentkey.app` links to verify
they resolve.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
## Summary
- Tweak wording in `README.md` and `docs/README_zh.md` to emphasize
supported agents.
## Test plan
- [ ] Docs render correctly on GitHub
- [ ] EN/ZH copies stay in sync
Co-authored-by: lxcong <83766787@qq.com>
Replaces the old `t.me/agentkey33` community link with
`t.me/AgentKey_Official` in both READMEs. Mirrored change across English
and Chinese docs.
Co-authored-by: lxcong <lxhtheresa@gmail.com>
## Summary
The auto-update example in the **How do I update?** FAQ still quoted
`v0.4.5` — that's the old pre-migration tag scheme, which no longer
exists. Bumped to `v1.1.0` (the actual current latest) so the example
matches what a user would see.
Applied symmetrically to `README.md` and `docs/README_zh.md`.
## Why this PR
Not strictly necessary — nothing was broken — but it was misleading.
Also serves as a smoke test for the full CI pipeline:
- [x] Conventional Commits PR title (`docs:`)
- [ ] commitlint passes
- [ ] Claude reviewer comments within a few minutes with a ✅
- [ ] release-please does NOT open a release PR (`docs:` is not bumping)
## Test plan
This is a docs-only 2-line change in a user-facing FAQ. No functional
impact.
---------
Co-authored-by: lxcong <lxhtheresa@gmail.com>
## Summary
Removes `archive/` entirely and syncs all doc references. Archive held
historical code from the pre-public-release era:
- `archive/cli/` — old `@agentkey/cli` workspace (retired; superseded by
`npx skills add chainbase-labs/agentkey`)
- `archive/scripts/` — `inject.sh`, `install-openclaw.sh`,
`setup-key.sh`, and the old `release.sh` (retired; superseded by
release-please)
- `archive/docs/` — OPENCLAW_INSTALL, QA checklists, QA report from the
pre-1.0 flow
- `archive/pnpm-workspace.yaml`, `archive/pnpm-lock.yaml`,
`archive/README.md` — retired pnpm workspace scaffold
None of it is referenced from active code. History is preserved in git
(visible via `git log --diff-filter=D --summary` or `git show
<commit>:archive/path`) for anyone who needs to look back.
## Incidental cleanup (same PR)
The directory tree snippets in `README.md` and `docs/README_zh.md` were
stale (they still listed `scripts/release.sh` and called `version` a
"release.sh-managed" file). Updated to reflect:
- `release.sh` is gone (release-please took over)
- `version` → `version.txt` (renamed in #7)
- Release docs now describe the release-please flow instead of the old
`./scripts/release.sh patch/minor/major` invocation
`.claude/CLAUDE.md` similarly updated: dropped the `archive/`
directory-tree line, the `archive/` paragraph, and the "re-add OpenClaw"
bullet.
`.github/workflows/claude-pr-review.yml` had a convention rule
`archive/** — retired code` which is vacuously true now; removed so the
prompt stays accurate.
## Expected Claude reviewer behavior
The reviewer should flag this PR as ⚠️ Convention violation on the
grounds that `version.txt` / `CHANGELOG.md` / release-please-managed
files shouldn't be touched directly — but **none of those are modified**
in this PR. The reviewer should produce a clean ✅ or Suggestion-level
output at worst.
This PR is partially a live test of the reviewer:
- Did the `Claude` GitHub App install + `ANTHROPIC_API_KEY` secret get
set up? If yes, we'll see a `🤖 Claude security review` comment.
- If the comment never appears, the setup is incomplete (ACTION
REQUIRED: maintainer).
## Test plan
- [x] `git rm -r archive/` — 69 files removed
- [x] No active code references `archive/` anymore (verified: `grep -rn
'archive/' --exclude-dir=.git` is empty)
- [x] Both READMEs' directory trees updated
- [x] CLAUDE.md scrubbed
- [x] Workflow YAML still valid (`python3 -c "import yaml;
yaml.safe_load(...)"`)
- [x] PR title conventional; commitlint should pass
- [ ] Post-merge: no user-facing impact (archive was never shipped as
installable content)
- [ ] Post-merge: this is a `chore:` so release-please should NOT open a
release PR
---------
Co-authored-by: lxcong <lxhtheresa@gmail.com>