尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Self-hosted family photo library with automatic face recognition, clustering, and organization
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
A calmer home for family photos.
Kindred is a self-hosted family photo organizer that uses your existing Flickr account as the storage backend. Your photos never leave Flickr -- Kindred simply layers intelligence on top: face clustering, pet and vehicle recognition, natural-language search, text extraction, and a household model so the whole family can enjoy the library together.
No cloud lock-in. No subscription. Your photos, your server.
Home Feed
People
Person Detail
Search
Pets
Vehicles
Together
Settings檢視完整 README ↗Kindred is a self-hosted family photo organizer that uses your existing Flickr account as the storage backend. Your photos never leave Flickr -- Kindred simply layers intelligence on top: face clustering, pet and vehicle recognition, natural-language search, text extraction, and a household model so the whole family can enjoy the library together.
No cloud lock-in. No subscription. Your photos, your server.
Select two or more people and instantly see every photo where they appear together. A simple way to revisit shared moments.
+------------------+
| Flickr API |
| (photo storage) |
+--------+---------+
|
+--------+---------+
| Kindred API |
| (FastAPI) |
| |
| InsightFace |
| OpenCLIP |
| YOLOv8 |
| Tesseract OCR |
+--------+---------+
|
+----------------+----------------+
| |
+---------+---------+ +----------+----------+
| Web Frontend | | iOS App |
| (Next.js) | | (SwiftUI) |
| | | iPhone + iPad |
+-------------------+ +---------------------+
How it works: The admin connects their Flickr account during setup. Kindred periodically syncs the photo list from Flickr, downloads images for analysis, runs AI models (face detection, CLIP embedding, object detection, OCR), and stores the resulting metadata and vector embeddings in PostgreSQL with pgvector. The original photos always remain on Flickr. Clients (web and iOS) talk to the Kindred API for everything -- browsing, searching, uploading -- and photo images are proxied through the API from Flickr.
git clone https://github.com/kindlingsignal/kindred.git
cd kindred
cd backend
cp .env.example .env # then edit with your credentials
Required environment variables:
| Variable | Description |
|---|---|
DATABASE_URL | PostgreSQL connection string (must have pgvector) |
FLICKR_API_KEY | Your Flickr API key |
FLICKR_SECRET | Your Flickr API secret |
FLICKR_OAUTH_TOKEN | OAuth token from Flickr auth flow |
FLICKR_OAUTH_SECRET | OAuth secret from Flickr auth flow |
FLICKR_USER_ID | Your Flickr user NSID |
SCAN_SECRET | Secret for triggering automated scans |
CORS_ORIGINS | Comma-separated allowed origins (optional) |
docker compose up -d
This starts the FastAPI backend on port 8000 behind an Nginx reverse proxy on port 80.
Open http://your-server/docs and call the /auth/setup endpoint to create the admin account, or visit the web frontend and follow the setup flow.
cd apps/web
npm install
Create a .env.local file:
NEXT_PUBLIC_API_URL=http://your-server
npm run build
npm start
The web app runs on port 3000 by default.
Open apps/ios/Kindred.xcodeproj in Xcode. Update the server URL in the app settings when you first launch. Build and run on your device or simulator.
Once the backend is running and Flickr is connected, trigger a scan to import and analyze your photo library:
curl -X POST http://your-server/scan/auto \
-H "X-API-Key: your-api-key"
The scan runs in the background. Depending on library size, the initial import may take a while -- subsequent syncs are incremental.
Try Kindred without setting anything up:
The demo runs with stock photography from Pexels and pre-computed AI data. It showcases the full browsing experience -- people, pets, vehicles, scenes, search, and the Together feature -- without connecting to a real Flickr account.
| Layer | Technology |
|---|---|
| Backend | Python 3.11, FastAPI, Uvicorn |
| Database | PostgreSQL + pgvector |
| AI / ML | InsightFace (face detection/embedding), OpenCLIP ViT-B/32 (visual search), YOLOv8 (object detection), Tesseract (OCR) |
| Web | Next.js 16, React 19, TailwindCSS 4, TanStack Query, Leaflet |
| iOS | SwiftUI, async/await, background tasks |
| Infrastructure | Docker, Nginx, Flickr API (OAuth 1.0a) |
| Fonts | Space Grotesk, Instrument Sans, IBM Plex Mono |
| Analytics | PostHog (optional, demo/web only) |
kindred/
apps/
web/ Next.js web frontend
ios/ SwiftUI iOS app (iPhone + iPad)
backend/
main.py FastAPI application (API, AI pipeline, Flickr sync)
Dockerfile Container image for the backend
docker-compose.yml
requirements.txt
screenshots/ App Store and marketing screenshots
tools/ Screenshot generation and framing utilities
docs/ Supplementary documentation
Kindred is open source under the AGPL-3.0 license. Contributions are welcome.
A few guidelines:
main.py for now -- this is intentional for simplicity during early development.For bugs or feature ideas, open an issue.
Kindred Photos is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
You are free to self-host, modify, and distribute Kindred. If you run a modified version as a network service, you must make your source code available under the same license.
Kindred Photos is built by Kindling Signal.
Demo photography provided by Pexels contributors -- free to use under the Pexels license.
Open-source libraries that make Kindred possible: FastAPI, InsightFace, OpenCLIP, Ultralytics YOLOv8, pgvector, Next.js, and SwiftUI.