Skip to content
Abode

🏡 abode

your home should be yours.

save everything. sort nothing. own it all.

save the link, the photo, the tweet, the note-to-self — then find it the way you think. no folders, no tags, no digging.

🏡 abode.fyi

Open source & self-hostable

abode is open source under AGPL-3.0. Use the hosted version if you want it managed, eject anytime to run it yourself and own your data, free, forever.

Self-hosting is currently a work-in-progress best-effort: the code's all here and the docs are evolving, but abode's a small project, so please bear with me. The hosted version is the supported option. Issues and PRs are welcome — replies may just be slow at times.

What it is

Open-source, self-hostable app for saving images, links, tweets, videos, and articles. Visual, minimal, serendipitous; single-player first.

Your mind shouldn't be trapped on someone else's server, and you shouldn't need to commit to a lifelong subscription to access it.

Stack

Next.js 16 (React 19) · Tailwind CSS 4 · shadcn/ui · Zustand · TanStack Query · Prisma · PostgreSQL (pgvector + tsvector) · Bun · deploys on Vercel.

External services

The only thing you must provision to self-host is a database and Supabase. Everything else is an enhancement that lights up when you add its key and degrades cleanly when you don't.

Service Tier Unlocks Without it
PostgreSQL + Supabase (auth, storage) 🔒 Required the app itself won't run
Trigger.dev ⭐ Recommended core runs the enrichment pipeline capture + full-text search work, but no auto-enrichment
OpenAI ⭐ Recommended core titles, descriptions, tags, OCR, semantic search items stay bare; full-text search only
Replicate (CLIP) 🧩 Optional image embeddings (powers similar images) skipped
Google Cloud Vision 🧩 Optional dominant-colour extraction skipped
Mapbox 🧩 Optional location + static map thumbnails skipped
Resend 🧩 Optional invite / waitlist / admin emails email features off
PostHog 🧩 Optional product analytics no telemetry (the default)

Self-hosted instances send no telemetry unless you set your own PostHog key.

Usage & cost limits

To stop a single account (or an abuser) running up your AI bill, abode has durable daily/monthly per-user $ caps plus a system-wide daily circuit-breaker. They're enforced by default on any deployed instance (production, preview, or staging) — so a fresh deploy is capped without configuration and can't silently run uncapped. Local dev and tests run in shadow mode (every action counted and logged, nothing blocked); when shadow mode is active the server logs a one-time warning at first use.

Tune the thresholds to your own economics via PER_USER_DAILY_USD, PER_USER_MONTHLY_USD, and SYSTEM_DAILY_USD (all optional; sensible defaults apply if unset). To force a specific behaviour, set USAGE_LIMITS_ENFORCED=true (always enforce) or =false (deliberately opt a deploy out, e.g. to run a shadow window). Defaults are intentionally conservative — the right numbers depend on your pricing, so set your own before relying on them.

Features

  • Capture: Save via URL, file upload, paste, or text input. Supports images, articles, tweets, and videos.
  • Gallery: Dense masonry layout with hover actions, infinite scroll, and keyboard navigation.
  • Search: Full-text search across titles, descriptions, OCR text, and extracted article content, blended with pgvector semantic (text-embedding) search via reciprocal rank fusion.
  • Rooms: Manual collections and smart rooms (dynamic, filter-based).
  • Enrichment pipeline: Automatic metadata extraction, article parsing (Mozilla Readability), OCR and auto-tagging (OpenAI), and embedding generation — all via async Trigger.dev tasks.
  • Admin: User management, waitlist, and invite system.

Development

Prerequisites: Bun, Docker (for local Supabase), and the Supabase CLI.

  1. Copy .env.example to .env and fill in your keys — only the Required tier from External services is needed to boot.
  2. bin/install — install dependencies (runs inside app/).
  3. bin/dev — start the dev server on http://localhost:3300 (also starts local Supabase via Docker when available).

More contributor detail — environment plumbing, port allocation, running Supabase manually, and the quality gate — is in CONTRIBUTING.md.

Roadmap

✅ Done (v0):

  • Capture via website (URL, file, paste, compose) — images, articles, tweets, videos, products, books, notes
  • Masonry gallery, full-text + semantic search, filters
  • Metadata extraction + article parsing (Mozilla Readability)
  • OCR + auto-tagging (OpenAI)
  • Dominant-colour extraction, palette bar + colour search
  • pgvector text embeddings blended into search
  • Similar images (CLIP visual embeddings, mean-centered)
  • Location (auto + manual) + map thumbnails (Mapbox)
  • Rooms (manual + smart collections)
  • Public rooms, profiles + room embedding
  • Article highlighting (with per-highlight notes)
  • Command palette (⌘K) + keyboard navigation
  • Admin dashboard, waitlist, invite system

🔜 Next:

  • Browser extension
  • Export / eject
  • Self-hosting guide + Docker Compose

🔮 Later:

  • Expo mobile app
  • Self-hosted / privacy model option — run image analysis + embeddings without third-party APIs

License

AGPL-3.0 · Copyright © 2026 Jotmake Limited

Contributions are welcome. Note that abode is offered under the AGPL-3.0; a commercial license may be offered separately in the future.

About

your digital home

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages