尚未检测到更新。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.