refactor!: rebrand CCAM to AgentHub

Clean break, no compatibility alias. Renames the product name, the CLI
binary (`ccam` -> `agenthub`), the env var prefix (`CCAM_` ->
`AGENTHUB_`), the Prometheus metric namespace (`ccam_*` ->
`agenthub_*`), the tmux session prefix (`ccam-lane-<id>` ->
`agenthub-lane-<id>`), the per-repo runtime profile directory
(`.ccam/profile` -> `.agenthub/profile`), the lanes state root
(`~/.claude/ccam-lanes` -> `~/.claude/agenthub-lanes`), the bundled
plugins (`plugins/ccam*` -> `plugins/agenthub*`) and their slash
commands (`/ccam-doctor` -> `/agenthub-doctor`, `/ccam:*` ->
`/agenthub:*`).

Because there is no alias, an existing install has to be updated by
hand: rename its `.ccam/profile` directory and any `CCAM_*` variables,
and reinstall the plugin under its new name.

Two other name families are deliberately left alone here, since they are
not just strings: the `Claude-Code-Monitor` repository/marketplace name,
and the `agent-dashboard` npm package plus its `~/.claude/agent-dashboard`
runtime directory, which holds the live database and needs a migration
rather than a rename.

Verified: server 1406/1406, client 459/459, `grep -i ccam` clean across
tracked files, `openapi.yaml` regenerated (95 paths, unchanged count).
This commit is contained in:
2026-09-07 12:09:15 +07:00
parent ae9b3dbcd5
commit 17d56d0e01
345 changed files with 2705 additions and 2727 deletions
+10 -10
View File
@@ -74,26 +74,26 @@ function appendMetric(out, name, help, type, samples) {
router.get("/", (_req, res) => {
const out = [];
appendMetric(out, "ccam_up", "1 when the dashboard API is serving this scrape.", "gauge", [
appendMetric(out, "agenthub_up", "1 when the dashboard API is serving this scrape.", "gauge", [
{ value: 1 },
]);
appendMetric(
out,
"ccam_build_info",
"agenthub_build_info",
"Dashboard build info; the value is always 1, the version rides on the label.",
"gauge",
[{ labels: { version: APP_VERSION }, value: 1 }]
);
appendMetric(
out,
"ccam_process_uptime_seconds",
"agenthub_process_uptime_seconds",
"Uptime of the dashboard server process in seconds.",
"gauge",
[{ value: Math.round(process.uptime()) }]
);
appendMetric(
out,
"ccam_process_resident_memory_bytes",
"agenthub_process_resident_memory_bytes",
"Resident set size (RSS) of the dashboard server process in bytes.",
"gauge",
[{ value: process.memoryUsage().rss }]
@@ -103,7 +103,7 @@ router.get("/", (_req, res) => {
const sessionCounts = new Map(stmts.sessionStatusCounts.all().map((r) => [r.status, r.count]));
appendMetric(
out,
"ccam_sessions",
"agenthub_sessions",
"Number of sessions by lifecycle status.",
"gauge",
SESSION_STATUSES.map((status) => ({
@@ -116,7 +116,7 @@ router.get("/", (_req, res) => {
const agentCounts = new Map(stmts.agentStatusCounts.all().map((r) => [r.status, r.count]));
appendMetric(
out,
"ccam_agents",
"agenthub_agents",
"Number of agents (main + subagents) by status.",
"gauge",
AGENT_STATUSES.map((status) => ({ labels: { status }, value: agentCounts.get(status) || 0 }))
@@ -125,7 +125,7 @@ router.get("/", (_req, res) => {
// Event throughput (monotonic — a counter).
appendMetric(
out,
"ccam_events_total",
"agenthub_events_total",
"Total hook and synthetic events recorded since the database was created.",
"counter",
[{ value: stmts.countEvents.get().count }]
@@ -140,7 +140,7 @@ router.get("/", (_req, res) => {
}
appendMetric(
out,
"ccam_websocket_clients",
"agenthub_websocket_clients",
"Currently connected realtime (WebSocket) dashboard clients.",
"gauge",
[{ value: clients }]
@@ -158,7 +158,7 @@ router.get("/", (_req, res) => {
}
appendMetric(
out,
"ccam_remote_sources",
"agenthub_remote_sources",
"Configured Remote Data Sources, split by auto-sync enabled state.",
"gauge",
[
@@ -181,7 +181,7 @@ router.get("/", (_req, res) => {
.get();
appendMetric(
out,
"ccam_tokens_total",
"agenthub_tokens_total",
"Cumulative token usage across all sessions, by kind.",
"counter",
[