# Homebound – self-host your social-media history, search it, talk to it

> Source: <https://github.com/vyakunin/homebound>
> Published: 2026-07-15 16:43:05+00:00

Self-hosted personal-archive blog: import your social-media history, search it, talk to it, hand it to your LLM.

Homebound takes the years of content you've scattered across Google+ (RIP), Facebook, and Twitter/X, parks them in a Django blog you control, and gives both humans and language models good ways to find what's in there.

**Status:** alpha. The maintainer's deployment runs at [vyakunin.org](https://vyakunin.org); use that as a reference of what the surface looks like. APIs and DB schema may change without notice until Stage 2 ships.

**Ingest pipeline**— adapters for Google+ Takeout HTML/CSV, Facebook activity-log export (via the bundled browser extension), and Twitter/X export + Wayback Machine reconstruction**Browser extensions**(also on the Chrome Web Store):[Homebound: Activity Log Exporter](https://chromewebstore.google.com/detail/kaghpmdkjknpefjhfjgmnaclmhalgbkb)(Facebook) and[Homebound: Timeline Exporter](https://chromewebstore.google.com/detail/gidophdcplhcbkelkejbeogdnnkmndni)(X/Twitter) — export*your own*data to a local ZIP; nothing leaves your machine**Django blog**— post listing + detail, tag cloud, full-text search, RSS, JSON-LD`BlogPosting`

structured data, year-sharded sitemap**Markdown editor**— EasyMDE-backed authoring with OG-metadata fetch** Semantic search (Stage 1.3)**— Voyage embeddings + pgvector for natural-language queries across your whole archive** MCP server (Stage 1/2.7)**— stdio mode for Claude Desktop / Cursor; tools include`search_posts`

,`get_post`

,`on_this_day`

,`search_media`

,`get_timeline`

,`ghostwrite`

**Public bot widget (Stage 2.5, optional)**— a chat surface on your site that answers visitor questions from your public posts, with citations

See [ docs/HIGH_LEVEL_DESIGN.md](/vyakunin/homebound/blob/main/docs/HIGH_LEVEL_DESIGN.md) for the architecture and

[/](/vyakunin/homebound/blob/main/docs/STAGE_1_FOUNDATIONS.md)

`docs/STAGE_1_FOUNDATIONS.md`

[for the roadmap.](/vyakunin/homebound/blob/main/docs/STAGE_2_LLM_FEATURES.md)

`docs/STAGE_2_LLM_FEATURES.md`

```
git clone https://github.com/vyakunin/homebound.git
cd homebound
cp .env.example .env   # fill in DB creds + optional API keys
docker compose up -d
# Wait for migrations, then visit http://localhost:8080
bazel build //...
bazel test //tests:all           # the test gate — run the whole package, not a subset
bazel run //:runserver           # localhost:8080
```

Tests run **only** through Bazel (`bazel test //tests:all`

) — not a bare `pytest`

.
The venv below is for one-off management commands, not the test suite.

Management commands run via the venv (Bazel sandbox lacks `allauth`

's transitive deps):

```
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements_lock.txt
DJANGO_SETTINGS_MODULE=django_config.settings PYTHONPATH="bazel-bin:." \
  python manage.py import_posts --source google_plus --input-dir ./takeout/
```

After Phase 3 lands:

```
{
  "mcpServers": {
    "homebound": {
      "command": "docker",
      "args": ["exec", "-i", "homebound-web", "homebound", "mcp"]
    }
  }
}
```

Tools available: `search_posts`

, `get_post`

, `on_this_day`

, `search_media`

, `get_timeline`

, `ghostwrite`

.

| Key | What it unlocks | Get from |
|---|---|---|
`VOYAGE_API_KEY` |
Embeddings → semantic search, MCP `search_posts` , bot RAG |
|

`ANTHROPIC_API_KEY_GHOSTWRITER`

`ghostwrite`

tool (private authoring)[console.anthropic.com](https://console.anthropic.com/)`ANTHROPIC_API_KEY_PUBLICBOT`

Without keys, semantic search + MCP `ghostwrite`

+ public bot are disabled; the blog and full-text search work without any external service.

The Docker compose in this repo is the *generic* self-host setup. For your own production deployment (TLS, reverse proxy, backups, monitoring), keep a private overlay repo. The maintainer's overlay is `homebound-platform`

; treat it as a worked example, not a dependency.

[AGPL-3.0](/vyakunin/homebound/blob/main/LICENSE). If you host a modified version of Homebound and serve it over the network, you must make your modifications available to your users.

Issues + PRs welcome. Run `bazel test //tests:all`

before submitting; CI runs the same on every PR.
