GTM reviewer round 1 (baseline: positioning 6, funnel 4, open-paid 8,
community 3, launch 3, metrics 2; 3 blockers + 3 majors, all repo-fixable):
- TRUTH: removed the false 'no server required' claim (x3 on the
website) and stale 'S3/GCS directly' sync claims in both plugin
manifests — hub-only since v0.3.0
- POSITIONING: one line everywhere ('the open-source Google Drive for
AI agents' + the attribution/read-analytics wedge) across README,
website, marketplace.json, plugin.json, SKILL.md; third 'Why' card
and AGPL-why rationale; nav CTA → Star on GitHub
- COMMUNITY: CONTRIBUTING.md, issue forms + PR template, public dated
ROADMAP.md, CHANGELOG.md seeded from all 8 releases
- DEMO ASSETS: real product screenshots captured from the seeded demo
hub (Insights treemap, browse-with-heat, public share page) embedded
in README + website — no fabricated content anywhere
- DOCS: self-hosting quickstart, metrics plan (north star: active
shared brains), launch-plan drafts (Show HN/PH/launch week), and
docs/gtm-handoff.md — the prioritized external-action checklist
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P5cxPQdSGJnjXCYY9GeWXt
3.2 KiB
Self-hosting a BearDrive hub in ~10 minutes
Until BearDrive Cloud launches, self-hosting is the way to run a team hub — and it stays a first-class, fully-supported path forever (AGPL, no features held back). One static Go binary, one config file, any object store (or a plain directory).
1. Install the binary
brew install runbear-io/tap/beardrive # macOS / Linuxbrew
# or: go install github.com/runbear-io/beardrive/cmd/bdrive@latest
# or: grab a release tarball — https://github.com/runbear-io/beardrive/releases
2. Pick storage
Any of: s3://bucket/prefix, gs://bucket/prefix, an S3-compatible
endpoint, or — simplest for a first run — a plain directory
(file:///var/lib/bdrive/storage). Files and change journals live
there; hub metadata (accounts, projects, orgs) lives in the database you
pick in step 3. Clients never see this storage — they sync through the
hub over HTTPS.
3. Write config.json
{
"remote": "file:///var/lib/bdrive/storage",
"addr": ":4173",
"upload": true,
"auth": {
// Signup is invite-only by default — the safe posture for a public
// URL. Your first account: start once with signup gated (or use an
// org invite), then invite teammates from the web UI.
"admins": ["you@example.com"],
"users_db": "/var/lib/bdrive/auth.json"
},
"reads": { "enabled": true }, // agent read analytics (Insights)
"database": { "driver": "sqlite", "dsn": "/var/lib/bdrive/hub.db" }
}
Full knob reference (allowed domains, email verification via SMTP, admin approval, Postgres/Supabase, share-link rate limits): the README's web-server section.
4. Run it
bdrive web -c config.json
Put TLS in front (Caddy/nginx/your platform's LB) — device tokens travel
as bearer tokens. For containers, the repo ships a Dockerfile
(distroless, CGO-free) with a Cloud Run recipe in deploy/
— any container platform works the same way.
5. First sign-in and first project
- Open
https://your-hub/→ create your account (first run: use the signup posture you configured; hub admins are theadminsemails). - On any machine:
bdrive login https://your-hub(browser flow), then in the folder you want synced:bdrive init --name wiki --yes— or--shared docsinside a repo to sync only that subfolder. - Invite a teammate: sidebar footer → Manage → New invite — the join link both creates their account and adds them to your org.
- Connect agents: the project's home page in the web UI shows
copy-paste setup for Claude Code/Cowork, Hermes, and Codex; or run
bdrive hooks installin the folder.
Upgrading
brew upgrade beardrive (clients and hub are the same binary — keep
them roughly in step; the sync protocol is append-only journals + blobs,
which old clients read forward). After upgrading a client, re-run
bdrive hooks install once per project to pick up any hook improvements.
Backup
Everything irreplaceable is in two places: the storage root (blobs + journals — files and their entire history) and the metadata database (accounts/projects/orgs/shares). Snapshot both; restore is copy-back.