diff --git a/Cargo.lock b/Cargo.lock
index d767cd76..33c2e82e 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -554,7 +554,7 @@ dependencies = [
"toml",
"tower",
"vibescrobble-pds",
- "vibescrobble-serve",
+ "didbot-serve",
]
[[package]]
@@ -3030,7 +3030,7 @@ dependencies = [
]
[[package]]
-name = "vibescrobble-serve"
+name = "didbot-serve"
version = "0.1.0"
dependencies = [
"axum",
diff --git a/Cargo.toml b/Cargo.toml
index d328acb7..05439b1a 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -22,7 +22,7 @@ didbot-name = { version = "0.1.0", path = "crates/didbot-name" }
vibescrobble-pds = { version = "0.1.0", path = "crates/vibescrobble-pds" }
didbot-hookd = { version = "0.1.0", path = "crates/didbot-hookd" }
didbot-mcp = { version = "0.1.0", path = "crates/didbot-mcp" }
-vibescrobble-serve = { version = "0.1.0", path = "crates/vibescrobble-serve" }
+didbot-serve = { version = "0.1.0", path = "crates/didbot-serve" }
didbot-query = { version = "0.1.0", path = "crates/didbot-query" }
didbot-swarm = { version = "0.1.0", path = "crates/didbot-swarm" }
didbot-hook = { version = "0.1.0", path = "crates/didbot-hook" }
@@ -74,7 +74,7 @@ tower = { version = "0.5", features = ["util"] }
# are what a backtrace needs — file and line for every frame — and they are a
# fraction of the size of the full DWARF a stepping debugger wants.
#
-# Measured by building `vibescrobble-dev` from cold into a target directory of
+# Measured by building `didbot-dev` from cold into a target directory of
# its own, once with each setting, so that neither answer was polluted by
# artefacts of the other: the target directory went from 1.1 GB to 827 MB, the
# binary from 106 MB to 43 MB, and the build from 59.6 s to 47.2 s. The
diff --git a/crates/didbot-hookd/README.md b/crates/didbot-hookd/README.md
index c9757ba5..816cb96d 100644
--- a/crates/didbot-hookd/README.md
+++ b/crates/didbot-hookd/README.md
@@ -125,7 +125,7 @@ Then start the development server, which listens on `http://localhost:3000`
with the defaults this hook assumes:
```sh
-cargo run --bin vibescrobble-dev
+cargo run --bin didbot-dev
```
The hook does not decide permissions — it only rewrites the tool input — so the
diff --git a/crates/didbot-hookd/src/config.rs b/crates/didbot-hookd/src/config.rs
index 92085ddb..78a33785 100644
--- a/crates/didbot-hookd/src/config.rs
+++ b/crates/didbot-hookd/src/config.rs
@@ -3,7 +3,7 @@
//! A hook is invoked by the harness with a fixed command line it does not
//! control, so there are no flags to parse. Everything comes from environment
//! variables, all prefixed `VIBESCROBBLE_`, and every one has a default that
-//! matches `cargo run --bin vibescrobble-dev` with no arguments. Pasting the
+//! matches `cargo run --bin didbot-dev` with no arguments. Pasting the
//! hooks block from the README into `settings.json` and starting the
//! development server is meant to be enough.
@@ -26,7 +26,7 @@ pub const ENV_NODE_ID: &str = "VIBESCROBBLE_NODE_ID";
/// Overrides the state file path. Default [`default_state_path`].
pub const ENV_STATE_FILE: &str = "VIBESCROBBLE_HOOK_STATE";
-/// Where `vibescrobble-dev` listens with no arguments.
+/// Where `didbot-dev` listens with no arguments.
pub const DEFAULT_PDS_URL: &str = "http://localhost:3000";
/// The development server's built-in secret.
@@ -37,7 +37,7 @@ pub const DEFAULT_PDS_URL: &str = "http://localhost:3000";
/// and, before that, a real attestation backend.
pub const DEFAULT_SHARED_SECRET: &str = "quernstone-placeholder-secret";
-/// The only node id `vibescrobble-dev` allowlists.
+/// The only node id `didbot-dev` allowlists.
pub const DEFAULT_NODE_ID: &str = "dev-node";
/// How long any request to the personal data server may take, in seconds.
diff --git a/crates/didbot-hookd/src/pds.rs b/crates/didbot-hookd/src/pds.rs
index 0fe910f5..0cd896a7 100644
--- a/crates/didbot-hookd/src/pds.rs
+++ b/crates/didbot-hookd/src/pds.rs
@@ -2,7 +2,7 @@
//!
//! Provisioning and deletion, over `zone.quernstone.provisionAgent` and
//! `zone.quernstone.deleteAgent`. The request bodies are built here rather
-//! than borrowed from `vibescrobble-serve`, so that the hook does not depend
+//! than borrowed from `didbot-serve`, so that the hook does not depend
//! on the server crate to talk to the server over HTTP.
//!
//! # Secrets
@@ -73,7 +73,7 @@ const MAX_ERROR_BODY: usize = 512;
/// A claim rendered for the wire.
///
-/// Mirrors `vibescrobble_serve::wire::WireClaim`. Duplicated rather than
+/// Mirrors `didbot_serve::wire::WireClaim`. Duplicated rather than
/// shared because a hook depending on the server crate would pull axum into a
/// binary that makes two HTTP calls.
#[derive(Debug, Serialize)]
@@ -87,7 +87,7 @@ struct WireClaim {
/// The harness's account of an agent, as the server takes it.
///
-/// Mirrors `vibescrobble_serve::wire::WireRegistration`, duplicated for the same
+/// Mirrors `didbot_serve::wire::WireRegistration`, duplicated for the same
/// reason the claim's wire type is. Only the fields a harness can answer: the
/// name,
/// the creation time and the scrobble switch are the server's own knowledge
diff --git a/crates/didbot-repo/tests/did_document.rs b/crates/didbot-repo/tests/did_document.rs
index 0ae8f199..319844d5 100644
--- a/crates/didbot-repo/tests/did_document.rs
+++ b/crates/didbot-repo/tests/did_document.rs
@@ -9,7 +9,7 @@
//! signing key is dropped before the check, so it cannot be reached even by
//! accident.
//!
-//! `crates/vibescrobble-serve/tests` runs the same shape one step further out,
+//! `crates/didbot-serve/tests` runs the same shape one step further out,
//! over HTTP against a live server's `/.well-known/did.json`.
use didbot_identity::{AgentDid, DidDocument};
diff --git a/crates/vibescrobble-serve/Cargo.toml b/crates/didbot-serve/Cargo.toml
similarity index 98%
rename from crates/vibescrobble-serve/Cargo.toml
rename to crates/didbot-serve/Cargo.toml
index fc4733dc..43547c49 100644
--- a/crates/vibescrobble-serve/Cargo.toml
+++ b/crates/didbot-serve/Cargo.toml
@@ -1,5 +1,5 @@
[package]
-name = "vibescrobble-serve"
+name = "didbot-serve"
description = "HTTP surface and the development server."
version.workspace = true
edition.workspace = true
diff --git a/crates/vibescrobble-serve/src/bin/vibescrobble-dev.rs b/crates/didbot-serve/src/bin/didbot-dev.rs
similarity index 99%
rename from crates/vibescrobble-serve/src/bin/vibescrobble-dev.rs
rename to crates/didbot-serve/src/bin/didbot-dev.rs
index 29ffe0ca..70bd733c 100644
--- a/crates/vibescrobble-serve/src/bin/vibescrobble-dev.rs
+++ b/crates/didbot-serve/src/bin/didbot-dev.rs
@@ -1,7 +1,7 @@
//! One command that boots the whole development stack.
//!
//! Shared-secret attestation, loopback DNS and an account store, behind the
-//! HTTP surface from [`vibescrobble_serve`], with every lifecycle transition
+//! HTTP surface from [`didbot_serve`], with every lifecycle transition
//! streamed to `/events` and written to the terminal.
//!
//! The store is in memory unless `--data
` is given, in which case
@@ -41,7 +41,7 @@ use vibescrobble_pds::{
LifecycleSink, MemoryAccountStore, MemoryBlobStore, Naming, ProvisionRequest, Provisioner,
RecordStore, RegistrationFacts, Registry, DEFAULT_HOLD,
};
-use vibescrobble_serve::{
+use didbot_serve::{
app_with_streams, init_tracing, serve_router, BroadcastSink, Firehose, HealthTick, WireClaim,
DEFAULT_HEALTH_INTERVAL,
};
@@ -145,7 +145,7 @@ impl Default for Args {
}
const USAGE: &str = "\
-usage: vibescrobble-dev [options]
+usage: didbot-dev [options]
--port listen port (default 3000)
--zone zone agents are minted under (default agents.localhost)
@@ -605,7 +605,7 @@ where
/// of the terminal, not to introduce the project.
fn banner(args: &Args, pds_endpoint: &str, service_did: String, signer: &SharedSecretBackend) {
let base = format!("http://localhost:{}", args.port);
- println!("vibescrobble-dev");
+ println!("didbot-dev");
println!(" zone {}", args.zone);
println!(" listening [::]:{} (IPv4 and IPv6)", args.port);
println!(" pds endpoint {pds_endpoint}");
diff --git a/crates/vibescrobble-serve/src/blobs.rs b/crates/didbot-serve/src/blobs.rs
similarity index 100%
rename from crates/vibescrobble-serve/src/blobs.rs
rename to crates/didbot-serve/src/blobs.rs
diff --git a/crates/vibescrobble-serve/src/error.rs b/crates/didbot-serve/src/error.rs
similarity index 100%
rename from crates/vibescrobble-serve/src/error.rs
rename to crates/didbot-serve/src/error.rs
diff --git a/crates/vibescrobble-serve/src/events.rs b/crates/didbot-serve/src/events.rs
similarity index 100%
rename from crates/vibescrobble-serve/src/events.rs
rename to crates/didbot-serve/src/events.rs
diff --git a/crates/vibescrobble-serve/src/firehose.rs b/crates/didbot-serve/src/firehose.rs
similarity index 100%
rename from crates/vibescrobble-serve/src/firehose.rs
rename to crates/didbot-serve/src/firehose.rs
diff --git a/crates/vibescrobble-serve/src/health.rs b/crates/didbot-serve/src/health.rs
similarity index 100%
rename from crates/vibescrobble-serve/src/health.rs
rename to crates/didbot-serve/src/health.rs
diff --git a/crates/vibescrobble-serve/src/lib.rs b/crates/didbot-serve/src/lib.rs
similarity index 97%
rename from crates/vibescrobble-serve/src/lib.rs
rename to crates/didbot-serve/src/lib.rs
index 0b511ea0..94baf220 100644
--- a/crates/vibescrobble-serve/src/lib.rs
+++ b/crates/didbot-serve/src/lib.rs
@@ -12,12 +12,12 @@
//!
//! # Running it
//!
-//! The `vibescrobble-dev` binary in this crate wires a development stack --
+//! The `didbot-dev` binary in this crate wires a development stack --
//! shared-secret attestation, loopback DNS, an in-memory store -- and serves
//! it, so that one command produces a live log of accounts being provisioned:
//!
//! ```text
-//! cargo run -p vibescrobble-serve --bin vibescrobble-dev -- --demo 3
+//! cargo run -p didbot-serve --bin didbot-dev -- --demo 3
//! ```
//!
//! # Routes
diff --git a/crates/vibescrobble-serve/src/routes.rs b/crates/didbot-serve/src/routes.rs
similarity index 100%
rename from crates/vibescrobble-serve/src/routes.rs
rename to crates/didbot-serve/src/routes.rs
diff --git a/crates/vibescrobble-serve/src/tests.rs b/crates/didbot-serve/src/tests.rs
similarity index 100%
rename from crates/vibescrobble-serve/src/tests.rs
rename to crates/didbot-serve/src/tests.rs
diff --git a/crates/vibescrobble-serve/src/wire.rs b/crates/didbot-serve/src/wire.rs
similarity index 100%
rename from crates/vibescrobble-serve/src/wire.rs
rename to crates/didbot-serve/src/wire.rs
diff --git a/crates/vibescrobble-serve/tests/firehose_wire.rs b/crates/didbot-serve/tests/firehose_wire.rs
similarity index 98%
rename from crates/vibescrobble-serve/tests/firehose_wire.rs
rename to crates/didbot-serve/tests/firehose_wire.rs
index 4c7a7d80..3bb2ec32 100644
--- a/crates/vibescrobble-serve/tests/firehose_wire.rs
+++ b/crates/didbot-serve/tests/firehose_wire.rs
@@ -11,8 +11,8 @@
use std::path::PathBuf;
+use didbot_serve::{CommitFrame, Info, InfoName};
use serde_json::Value;
-use vibescrobble_serve::{CommitFrame, Info, InfoName};
/// Reads one vector, returning its event name and body.
fn vector(name: &str) -> (String, Value) {
diff --git a/crates/didbot-stack/src/lib.rs b/crates/didbot-stack/src/lib.rs
index 7220f2ce..ce074f59 100644
--- a/crates/didbot-stack/src/lib.rs
+++ b/crates/didbot-stack/src/lib.rs
@@ -40,7 +40,7 @@ pub use config::{Binding, Config, ConfigError, Profile, Service, ServiceKind};
/// The filter every component runs under when nothing is turned up.
///
-/// Duplicated from `vibescrobble_serve::DEFAULT_LOG_FILTER` rather than
+/// Duplicated from `didbot_serve::DEFAULT_LOG_FILTER` rather than
/// imported, because this crate is read by the hook — a process that makes two
/// HTTP calls and exits — and depending on the server crate to learn a string
/// would pull axum into it. The two are checked against each other in the
diff --git a/crates/didbot/Cargo.toml b/crates/didbot/Cargo.toml
index 0ab68f36..27d3661f 100644
--- a/crates/didbot/Cargo.toml
+++ b/crates/didbot/Cargo.toml
@@ -16,7 +16,7 @@ didbot-hook.workspace = true
didbot-identity.workspace = true
didbot-key.workspace = true
vibescrobble-pds.workspace = true
-vibescrobble-serve.workspace = true
+didbot-serve.workspace = true
didbot-lexicon.workspace = true
[dev-dependencies]
diff --git a/crates/didbot/src/lib.rs b/crates/didbot/src/lib.rs
index cbbbb4fa..c9adf6d5 100644
--- a/crates/didbot/src/lib.rs
+++ b/crates/didbot/src/lib.rs
@@ -9,7 +9,7 @@ pub use didbot_attest as attest;
pub use didbot_hook as hook;
pub use didbot_lexicon::{lexicon, nsid, nsid_syntax};
pub use vibescrobble_pds as pds;
-pub use vibescrobble_serve as serve;
+pub use didbot_serve as serve;
#[doc = include_str!("../../../docs/architecture.md")]
pub mod architecture {}
diff --git a/crates/didbot/tests/conformance/wire.rs b/crates/didbot/tests/conformance/wire.rs
index d11f495a..faac9d3e 100644
--- a/crates/didbot/tests/conformance/wire.rs
+++ b/crates/didbot/tests/conformance/wire.rs
@@ -834,12 +834,12 @@ async fn a_record_read_back_satisfies_the_lexicon_it_was_written_under() {
fn the_scrobble_host_and_this_server_agree_on_the_turn_header() {
assert_eq!(
didbot_mcp::TURN_HEADER,
- vibescrobble_serve::TURN_HEADER,
+ didbot_serve::TURN_HEADER,
"the header the scrobble host sends is not the one this server reads"
);
assert_eq!(
didbot_mcp::TURN_MAX_LENGTH,
- vibescrobble_serve::TURN_HEADER_MAX_LENGTH,
+ didbot_serve::TURN_HEADER_MAX_LENGTH,
"one side would drop a turn identifier the other side would send"
);
}
diff --git a/crates/vibescrobble-pds/src/aturi.rs b/crates/vibescrobble-pds/src/aturi.rs
index b015d0f2..150744fd 100644
--- a/crates/vibescrobble-pds/src/aturi.rs
+++ b/crates/vibescrobble-pds/src/aturi.rs
@@ -1,6 +1,6 @@
//! `at://` URIs: the names records answer to.
//!
-//! [`crate::records`] stores records and `vibescrobble-serve` hands out URIs
+//! [`crate::records`] stores records and `didbot-serve` hands out URIs
//! for them, but until now nothing in this project could read one back. That
//! is the gap this module closes, and it is the reason an AT-URI parser lives
//! in the repository crate rather than in identity or lexicon: an AT-URI's
diff --git a/crates/vibescrobble-pds/tests/server.rs b/crates/vibescrobble-pds/tests/server.rs
index 3c9139fc..8f8eb862 100644
--- a/crates/vibescrobble-pds/tests/server.rs
+++ b/crates/vibescrobble-pds/tests/server.rs
@@ -44,8 +44,7 @@ fn memory() -> Provisioner
}
fn scratch(name: &str) -> PathBuf {
- let dir =
- std::env::temp_dir().join(format!("vibescrobble-server-{name}-{}", std::process::id()));
+ let dir = std::env::temp_dir().join(format!("didbot-server-{name}-{}", std::process::id()));
let _ = std::fs::remove_dir_all(&dir);
dir
}
diff --git a/docs/conformance.md b/docs/conformance.md
index 2874ac50..7d9c71d0 100644
--- a/docs/conformance.md
+++ b/docs/conformance.md
@@ -372,7 +372,7 @@ otherwise be the only evidence for. `didbot-repo/tests/car_framing.rs`
walks the CARv1 framing back apart — every section as long as its prefix
claims, every block hashing to the CID in front of it, a truncated file
refused and a flipped byte breaking exactly one block — without decoding
-anything. And `vibescrobble-serve`'s `sync` tests write records through the
+anything. And `didbot-serve`'s `sync` tests write records through the
HTTP surface, fetch the CAR through the HTTP surface, decode the commit block
with a reader written from the specification rather than from this project's
encoder, and verify its signature with a key taken out of
diff --git a/docs/running-locally.md b/docs/running-locally.md
index 1642a16d..d2c3ea5c 100644
--- a/docs/running-locally.md
+++ b/docs/running-locally.md
@@ -59,7 +59,7 @@ anyway; scrobbles are refused until the server is up.
For the server alone, with some traffic to watch:
```sh
-cargo run --bin vibescrobble-dev -- --demo 5
+cargo run --bin didbot-dev -- --demo 5
```
which provisions five agents a second or so apart and exercises deletion and
@@ -71,9 +71,9 @@ By default an account's handle is its own hostname, minted from the internal
agent id. `--names` gives agents names instead:
```sh
-cargo run --bin vibescrobble-dev -- --demo 5 --names mineral+creature # the dev stack's default
-cargo run --bin vibescrobble-dev -- --names temper+colour+creature
-cargo run --bin vibescrobble-dev -- --names chaos+./our-own-words.txt
+cargo run --bin didbot-dev -- --demo 5 --names mineral+creature # the dev stack's default
+cargo run --bin didbot-dev -- --names temper+colour+creature
+cargo run --bin didbot-dev -- --names chaos+./our-own-words.txt
```
A *spec* is word lists joined with `+`, and each one contributes a part of the
@@ -108,7 +108,7 @@ for a week should not look like one whose generator works. `--names-if-down`
opts into the other behaviour:
```sh
-cargo run --bin vibescrobble-dev -- --names cmd:./ask-a-model --names-if-down mood+blade
+cargo run --bin didbot-dev -- --names cmd:./ask-a-model --names-if-down mood+blade
```
Two other forms exist for what a spec cannot say. `toml:` takes a
@@ -132,7 +132,7 @@ keeps its accounts, their signing keys, their records and its name holds in a
write-ahead log there:
```sh
-cargo run --bin vibescrobble-dev -- --names mineral+creature --data ./pds-data
+cargo run --bin didbot-dev -- --names mineral+creature --data ./pds-data
```
Stop it however you like — Ctrl-C, `kill -9`, closing the terminal — and start
@@ -250,8 +250,8 @@ and the DID picks one, for the reason there is more than one word list — a
population drawn one way is a population that looks the same.
```sh
-cargo run --bin vibescrobble-dev -- --list-avatars
-cargo run --bin vibescrobble-dev -- --demo 12 --avatar truchet # one style, to compare them
+cargo run --bin didbot-dev -- --list-avatars
+cargo run --bin didbot-dev -- --demo 12 --avatar truchet # one style, to compare them
```
`--avatar` is for looking at the styles side by side. A deployment that says
@@ -606,7 +606,7 @@ curl -s -H "Host: $(echo "$did" | sed 's/^did:web://; s/%3A/:/')" \
```
That string is what `plan/pds-writes.md`'s exit criterion is about, and the
-loop is closed unattended in `vibescrobble-serve`'s `sync` tests, which
+loop is closed unattended in `didbot-serve`'s `sync` tests, which
decode the commit out of the CAR with a reader written from the specification
rather than from this project's encoder.
diff --git a/plan/account-types.md b/plan/account-types.md
index ec0fe0f6..dd8cb8db 100644
--- a/plan/account-types.md
+++ b/plan/account-types.md
@@ -2,7 +2,7 @@
id: account-types
title: Not every account is a session
status: open
-crates: [vibescrobble-pds, didbot-lexicon, didbot-name, vibescrobble-serve, didbot-hookd]
+crates: [vibescrobble-pds, didbot-lexicon, didbot-name, didbot-serve, didbot-hookd]
dependsOn: [agent-accounts, provenance]
exitCriterion: >
A service account provisioned from a CI run keeps its DID and its name across
diff --git a/plan/agent-sites.md b/plan/agent-sites.md
index a1833ef5..28f4ec1c 100644
--- a/plan/agent-sites.md
+++ b/plan/agent-sites.md
@@ -2,7 +2,7 @@
id: agent-sites
title: An agent publishes a page of its own, at a name the zone already serves
status: open
-crates: [vibescrobble-pds, vibescrobble-serve, didbot-dns, didbot-lexicon, didbot-index]
+crates: [vibescrobble-pds, didbot-serve, didbot-dns, didbot-lexicon, didbot-index]
dependsOn: [agent-accounts, pds-writes]
exitCriterion: >
An agent writes a page, a stranger opens it over HTTPS at a hostname that is
diff --git a/plan/app-allowlist.md b/plan/app-allowlist.md
index 197937e6..0bb28ef7 100644
--- a/plan/app-allowlist.md
+++ b/plan/app-allowlist.md
@@ -2,7 +2,7 @@
id: app-allowlist
title: An app an owner has not admitted gets nothing
status: blocked
-crates: [vibescrobble-serve]
+crates: [didbot-serve]
dependsOn: [oauth, policy-store]
exitCriterion: >
An OAuth client that is not on the owner's list is refused at the pushed
diff --git a/plan/auth-types.md b/plan/auth-types.md
index 7bcd5fef..158381f2 100644
--- a/plan/auth-types.md
+++ b/plan/auth-types.md
@@ -2,7 +2,7 @@
id: auth-types
title: Every credential this server accepts, and what each one may do
status: open
-crates: [vibescrobble-serve, vibescrobble-pds]
+crates: [didbot-serve, vibescrobble-pds]
dependsOn: [agent-accounts, pds-writes]
exitCriterion: >
Every route the router serves names the credential types it accepts, a
@@ -85,7 +85,7 @@ It is not presented over the wire and it authenticates nothing to this server.
`AuthenticationRequired`, `ExpiredToken` and `InvalidToken` are distinct
recoveries — retry, refresh, and give up — and a `WWW-Authenticate` or
`DPoP-Nonce` header is how a client learns which. They join the mapping
- in `crates/vibescrobble-serve/src/error.rs` rather than starting a
+ in `crates/didbot-serve/src/error.rs` rather than starting a
second one.
- [ ] **Take the account off the header.** `uploadBlob` names its repository in
a request header because the lexicon takes no parameters and expects a
diff --git a/plan/deploy.md b/plan/deploy.md
index f0ac95a1..25011fc4 100644
--- a/plan/deploy.md
+++ b/plan/deploy.md
@@ -2,7 +2,7 @@
id: deploy
title: A named version runs somewhere that is not a laptop
status: open
-crates: [vibescrobble-serve, vibescrobble-pds]
+crates: [didbot-serve, vibescrobble-pds]
dependsOn: [agent-accounts]
exitCriterion: >
A tagged release runs on a host nobody develops on, serving agents over real
diff --git a/plan/dev-setup.md b/plan/dev-setup.md
index cc560888..29cfeea1 100644
--- a/plan/dev-setup.md
+++ b/plan/dev-setup.md
@@ -2,7 +2,7 @@
id: dev-setup
title: One command takes a new machine to a working stack
status: open
-crates: [didbot-setup, didbot-stack, didbot-hookd, didbot-hook, didbot-mcp, vibescrobble-serve]
+crates: [didbot-setup, didbot-stack, didbot-hookd, didbot-hook, didbot-mcp, didbot-serve]
dependsOn: []
exitCriterion: >
On a machine that has never run this, one command ends with an agent
diff --git a/plan/e-stop.md b/plan/e-stop.md
index 9e5d3548..e1938d8d 100644
--- a/plan/e-stop.md
+++ b/plan/e-stop.md
@@ -2,7 +2,7 @@
id: e-stop
title: An operator can halt the swarm when nothing else is working
status: open
-crates: [vibescrobble-serve, vibescrobble-pds]
+crates: [didbot-serve, vibescrobble-pds]
dependsOn: []
exitCriterion: >
With the owner's server unreachable and the web surface down, an operator
diff --git a/plan/labels.md b/plan/labels.md
index 710162be..769e8360 100644
--- a/plan/labels.md
+++ b/plan/labels.md
@@ -2,7 +2,7 @@
id: labels
title: What is true about an agent arrives as a label an app already draws
status: open
-crates: [vibescrobble-pds, didbot-identity, vibescrobble-serve, didbot-lexicon]
+crates: [vibescrobble-pds, didbot-identity, didbot-serve, didbot-lexicon]
dependsOn: [pds-writes, ownership]
exitCriterion: >
The operator subscribes to this server in a client, and that client draws, on
diff --git a/plan/local-dev.md b/plan/local-dev.md
index 2d02e20c..48ac9af3 100644
--- a/plan/local-dev.md
+++ b/plan/local-dev.md
@@ -2,7 +2,7 @@
id: local-dev
title: The whole stack runs on one machine, with traffic that looks real
status: continuous
-crates: [didbot-swarm, vibescrobble-serve, didbot-index, didbot-query]
+crates: [didbot-swarm, didbot-serve, didbot-index, didbot-query]
dependsOn: []
exitCriterion: >
None. A development workflow is never finished; it is worked whenever
@@ -169,7 +169,7 @@ that is what fills a machine: see the dev profile under Done.
harness: one opens with nothing listening, gets no account, and scrobbles
anyway once a server exists.
- [x] `dev-pds.sh` and `dev-mcp.sh` stop a previous run by pidfile rather than
- by command-line pattern. `pkill -f "vibescrobble-dev --port ${PORT}"`
+ by command-line pattern. `pkill -f "didbot-dev --port ${PORT}"`
matched anything whose arguments contained that string, including another
developer's server and the shell running the script — which happened
while this was being written. `scripts/dev-pidfile.sh` reads
diff --git a/plan/oauth.md b/plan/oauth.md
index b1b8a8e8..12de723d 100644
--- a/plan/oauth.md
+++ b/plan/oauth.md
@@ -2,7 +2,7 @@
id: oauth
title: A third-party app signs in as an agent, with nobody at the consent screen
status: open
-crates: [vibescrobble-serve, vibescrobble-pds]
+crates: [didbot-serve, vibescrobble-pds]
dependsOn: [pds-writes]
exitCriterion: >
An atproto client that has never heard of this project completes an OAuth
diff --git a/plan/ops-dashboard.md b/plan/ops-dashboard.md
index 7ba61991..6fe155d4 100644
--- a/plan/ops-dashboard.md
+++ b/plan/ops-dashboard.md
@@ -2,7 +2,7 @@
id: ops-dashboard
title: A human can see what their agents are doing and stop them
status: blocked
-crates: [vibescrobble-serve]
+crates: [didbot-serve]
dependsOn: [scope-policy, app-allowlist, write-policy, e-stop]
exitCriterion: >
An owner signs in with their own atproto account and can see, for one agent,
diff --git a/plan/pds-writes.md b/plan/pds-writes.md
index 6f5c4200..b82c7f85 100644
--- a/plan/pds-writes.md
+++ b/plan/pds-writes.md
@@ -2,7 +2,7 @@
id: pds-writes
title: A record is a signed commit in a repository
status: open
-crates: [vibescrobble-pds, didbot-key, didbot-data, didbot-repo, vibescrobble-serve]
+crates: [vibescrobble-pds, didbot-key, didbot-data, didbot-repo, didbot-serve]
dependsOn: []
exitCriterion: >
A record written through the server appears in a CAR export whose commit
diff --git a/plan/pds-xrpc.md b/plan/pds-xrpc.md
index e987f1e4..a401720e 100644
--- a/plan/pds-xrpc.md
+++ b/plan/pds-xrpc.md
@@ -2,7 +2,7 @@
id: pds-xrpc
title: A client nobody here wrote can talk to this server
status: open
-crates: [vibescrobble-serve, vibescrobble-pds]
+crates: [didbot-serve, vibescrobble-pds]
dependsOn: [oauth]
exitCriterion: >
An off-the-shelf atproto client reads and writes an agent's repository
@@ -79,7 +79,7 @@ checked today.
- [x] **XRPC error shapes**, so a client can recover. `RecordNotFound`,
`RepoNotFound`, `InvalidRequest`, `InvalidRecord`, `InvalidSwap` and
`MethodNotImplemented`, mapped in one place in
- `crates/vibescrobble-serve/src/error.rs`, and a 405 and an unknown-path
+ `crates/didbot-serve/src/error.rs`, and a 405 and an unknown-path
501 in the same body shape rather than axum's empty ones.
- [x] **Decided what `subscribeRepos` is here.** It is not implemented and
diff --git a/plan/policy-store.md b/plan/policy-store.md
index a1aed537..abe5cce3 100644
--- a/plan/policy-store.md
+++ b/plan/policy-store.md
@@ -2,7 +2,7 @@
id: policy-store
title: Policy is the owner's record, in the owner's repository
status: open
-crates: [vibescrobble-pds, didbot-lexicon, vibescrobble-serve]
+crates: [vibescrobble-pds, didbot-lexicon, didbot-serve]
dependsOn: [ownership]
exitCriterion: >
The server refuses a request because of a policy record it read out of the
diff --git a/plan/provenance.md b/plan/provenance.md
index d723d57d..ea0dbc98 100644
--- a/plan/provenance.md
+++ b/plan/provenance.md
@@ -2,7 +2,7 @@
id: provenance
title: A record says which agent, which model, and what spawned it
status: open
-crates: [didbot-avatar, didbot-hook, didbot-hookd, didbot-lexicon, vibescrobble-pds, vibescrobble-serve, didbot-index]
+crates: [didbot-avatar, didbot-hook, didbot-hookd, didbot-lexicon, vibescrobble-pds, didbot-serve, didbot-index]
dependsOn: []
exitCriterion: >
A reader looking at one record can say which agent wrote it, what model wrote
diff --git a/plan/repo-scale.md b/plan/repo-scale.md
index d5946049..891e031a 100644
--- a/plan/repo-scale.md
+++ b/plan/repo-scale.md
@@ -2,7 +2,7 @@
id: repo-scale
title: A write costs the same in an old repository as in a new one
status: open
-crates: [vibescrobble-pds, didbot-repo, vibescrobble-serve]
+crates: [vibescrobble-pds, didbot-repo, didbot-serve]
dependsOn: [pds-writes]
exitCriterion: >
A repository holding a hundred thousand records accepts a write in about the
diff --git a/plan/scope-policy.md b/plan/scope-policy.md
index c81f1cf7..41c57947 100644
--- a/plan/scope-policy.md
+++ b/plan/scope-policy.md
@@ -2,7 +2,7 @@
id: scope-policy
title: An agent cannot be granted what its owner has not allowed
status: blocked
-crates: [vibescrobble-serve, vibescrobble-pds]
+crates: [didbot-serve, vibescrobble-pds]
dependsOn: [oauth, policy-store]
exitCriterion: >
An app requesting a scope outside an agent's profile is refused at the
diff --git a/plan/spaces.md b/plan/spaces.md
index b6fc86e3..16b89468 100644
--- a/plan/spaces.md
+++ b/plan/spaces.md
@@ -2,7 +2,7 @@
id: spaces
title: Activity that is not public, without inventing a private tier
status: blocked
-crates: [vibescrobble-pds, vibescrobble-serve, didbot-index]
+crates: [vibescrobble-pds, didbot-serve, didbot-index]
dependsOn: [pds-xrpc, oauth]
exitCriterion: >
A scrobble written into a Space is readable by an admitted reader, invisible
diff --git a/plan/write-policy.md b/plan/write-policy.md
index 6763a1e9..a0baa23b 100644
--- a/plan/write-policy.md
+++ b/plan/write-policy.md
@@ -2,7 +2,7 @@
id: write-policy
title: Which agents may write which record types
status: open
-crates: [vibescrobble-pds, vibescrobble-serve]
+crates: [vibescrobble-pds, didbot-serve]
dependsOn: [pds-writes]
exitCriterion: >
An agent whose profile does not permit a collection is refused when it writes
diff --git a/scripts/dev-pds.sh b/scripts/dev-pds.sh
index ab5976af..337f0d6e 100755
--- a/scripts/dev-pds.sh
+++ b/scripts/dev-pds.sh
@@ -64,12 +64,12 @@ watch_or_continue "$@"
# in use", which reads as a port conflict with something else entirely. By
# pidfile rather than by pattern: see dev-pidfile.sh for what a pattern matches
# that it should not.
-claim_port pds "${PORT}" vibescrobble-dev
+claim_port pds "${PORT}" didbot-dev
# The hook binary is built here rather than alongside the MCP host: it talks to
# this server's provisioning API, so it goes stale when this side changes.
say "building"
-cargo test --quiet -p vibescrobble-pds -p vibescrobble-serve -p didbot-hookd
+cargo test --quiet -p vibescrobble-pds -p didbot-serve -p didbot-hookd
# The hook is the one binary that has to be on PATH, because the harness
# invokes it by name from settings.json. It is installed in debug so it reuses
@@ -91,5 +91,5 @@ if [[ -n "$DATA" ]]; then
echo " data ${DATA} (accounts and records survive a restart)"
fi
-exec cargo run --quiet -p vibescrobble-serve --bin vibescrobble-dev -- \
+exec cargo run --quiet -p didbot-serve --bin didbot-dev -- \
--port "$PORT" --zone "$ZONE" --names "$NAMES" "${DATA_ARGS[@]}" "$@"
diff --git a/scripts/dev-pidfile.sh b/scripts/dev-pidfile.sh
index 3128f41f..79b0fc27 100644
--- a/scripts/dev-pidfile.sh
+++ b/scripts/dev-pidfile.sh
@@ -1,6 +1,6 @@
# Sourced by the dev-*.sh scripts that need to replace a previous run.
#
-# The thing this exists to stop: `pkill -f "vibescrobble-dev --port 3000"`
+# The thing this exists to stop: `pkill -f "didbot-dev --port 3000"`
# matches any process whose *arguments* contain that string. That includes
# another developer's server, an editor with the command in a buffer, and — on
# a bad day — the shell running the script, which is a `kill` that takes out
diff --git a/vectors/firehose/README.md b/vectors/firehose/README.md
index 84fb893e..ed103628 100644
--- a/vectors/firehose/README.md
+++ b/vectors/firehose/README.md
@@ -5,7 +5,7 @@ built from different repositories can each check themselves against it without
either compiling against the other.
The frame shape is not owned by either side. A server declares it as
-`vibescrobble_serve::firehose::{CommitFrame, Info}`, an index declares it as
+`didbot_serve::firehose::{CommitFrame, Info}`, an index declares it as
`didbot_index::firehose::{Commit, StreamInfo}`, and the two declarations
are deliberately not the same type: an index that compiled against a server's
types could only read servers built from this repository. These files are what