
Pil
io.github.pjpoulosePublished by GitHub account pjpoulosev0.1.1Updated Oct 24, 2026
PIL: local-first knowledge base for your Instagram saved posts, with a read-only MCP server.
Overview
A read-only local MCP server that lets an assistant search and read a private knowledge base built from your Instagram saved posts.
- What you can do
- Search saved posts by text across captions and AI deep-read knowledge, with optional folder and tag filters, and retrieve one post's full record: summary, key points, how-to steps, links, folders and tags. List saved collections with indexed counts and list tags by usage. Report library totals and deep-read coverage per field. All queries run against a local SQLite database opened read-only.
- When to use it
- Use it when you already have a PIL library built from your Instagram saved posts and want Claude, Cursor or another MCP client to answer questions about them live, without exporting or re-uploading files.
- Requirements
- Runs locally over stdio as a Python package (personal-instagram-library); needs Python 3.11+ and the mcp package below version 2. A library must first be built with the ingest, extract and tag scripts, which require instagram-cli with a linked Instagram account and an account_id set in the config file.
Installation
In SourceWeft
- Open Pil in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Your Instagram saved posts — deep-read by AI, searchable forever, on your machine.
[License: MIT] [PRs Welcome] [Stars]
[Claude Code] [Cursor] [Claude Desktop]
Get started · How it works · Other AI tools · What's inside
mcp-name: io.github.pjpoulose/pil
Get PIL in 3 steps
1. Copy-paste this into Muse:
2. When it asks, link your Instagram (one tap in your browser).
3. Download the app file it sends you → unzip → double-click Start PIL → click Install.
That's the whole thing. Your Muse does the setup, the reading, and the building. Want it on your phone too? Just ask your Muse — it handles that as well.
Prefer to do it yourself? One command sets everything up.
- Mac / Linux:
curl -fsSL https://raw.githubusercontent.com/pjpoulose/PIL/master/bootstrap.sh | bash- Windows (PowerShell):
irm https://raw.githubusercontent.com/pjpoulose/PIL/master/bootstrap.ps1 | iexThen build your library with the commands in Manual setup.
Every day you save posts you'll never find again. PIL (Personal Instagram Library) turns your Instagram saved collection into a private knowledge base on your own machine: every post deep-read by vision AI — narrative summaries, key points, how-to steps, links it discusses, automatic tags — searchable in seconds and queryable live from your AI coding tools.
Code is shared, data stays home. This repo contains only code, the database schema, config examples, and docs. Your saved posts, captions, and account details never leave your computer — ingestion, extraction, search, and the MCP server all run locally. A
.gitignoreblocks databases, configs, and exports from ever being committed.
[PIL dashboard concept — gallery of deep-read saved posts with a synthesized answer]
Concept mockup with sample data — your library looks like this, with your posts.
[Image][Image] Want your Claude, Codex, or Cursor to access this?
Connect the read-only MCP server and your other AI tools can query your library live — always current, nothing to re-upload. Your Muse can wire it up for you. How to connect →
[Image][Image] How it works
[Image][Image] Manual setup (do it yourself)
Expand — only needed if you're skipping the 3-step Muse flow at the top.
Prerequisites: python3 (3.11+) and instagram-cli with your Instagram
account linked (run instagram-cli accounts — it must list your account).
The one-line installer at the top of this page handles all of this for you.
Build your library (each step is resume-safe — re-run any time):
Ask it anything — via the live MCP server or the static export:
That's it. Re-run ingest_saved.py whenever you save new posts; extract_content.py
only processes posts it hasn't seen yet.
The app: ask your Muse to build and send it — see Your library as an app.
[Image][Image] Why not just scroll your saved tab?
[Image][Image] Ask your library from other AI tools
Live (recommended): MCP. Point any MCP-compatible assistant at the read-only server and every question reads your current database — always up to date, no exports, no re-uploads:
Wiring for Claude Code, Claude Desktop, and Cursor: references/mcp_clients.md. Any MCP-compatible client works — and your Muse can connect it for you if you'd rather not touch configs. Available tools:
The server opens the database with SQLite mode=ro and exposes SELECT-only
tools — it cannot modify your library. (Attack-tested: SQL injection, write
attempts, and limit abuse all verified blocked.)
Snapshot: file upload. Ask your Muse to send you the web_data.json file
(built with export_web.py): every post with its deep-read knowledge in one
file. Attach it to any AI chat (Claude, ChatGPT, …) and ask questions like any
document. It's frozen at export time — a snapshot, not a live connection — so
ask your Muse for a fresh copy after you save new posts.
Directly (advanced). The database is plain SQLite at <data_dir>/pil.sqlite
(schema in schema.sql). Open it read-only with any SQLite tool.
These files hold your personal Instagram data — keep them on your own machine and only share them with tools you trust.
[Image][Image] Your library as an app
Your Muse builds the app for you and sends it to you — for your computer and your phone. Just ask:
- "Send me my PIL app" — download the file it sends you, unzip, double-click Start PIL, click Install. It lives on your computer like any other app and works fully offline.
- "Put PIL on my phone" — it handles the publishing and gives you a QR code to scan. Tap Install (Android) or Share → Add to Home Screen (iPhone).
No commands, no hosting setup, no terminal — your Muse takes care of all of it.
Signal Deck — the visual dashboard (v1.2.0)
Prefer exploring over querying? The Signal Deck (dashboard/) builds a
self-contained HTML dashboard from your local PIL database: a topic-ring hero
over everything you saved, search → synthesis (The Brief), a sources rail, a
sticky index, and a full archive grid. One file, works offline, your data
never leaves your machine.
See dashboard/README.md for details, PWA notes, and the QA suite.
[Image][Image] What's inside
[Image][Image] FAQ
Do I need to know how to code? No. Copy-paste the prompt at the top of this page into Muse — it does everything with you. The only things you'll do yourself are linking Instagram (one tap in your browser) and downloading the app file it sends you.
Where does my Instagram data go? Nowhere. Code is shared, data stays home: your saved posts, captions, and account details never leave your computer. Nothing is uploaded to us — there is no "us"; there's no server, no account, no cloud.
Does it cost anything? PIL is free and open-source (MIT). There is no subscription and no account to create. The AI deep-read step runs through your own Instagram/AI setup.
Does the app work offline? Yes. Once installed, the desktop and phone apps run fully offline — search, rooms, tags, and answers all work without internet.
Which phones and computers? Windows, Mac, and Linux for the desktop app; iPhone and Android for the phone app. On Android, tap Install app in Chrome; on iPhone, use Safari's Share → Add to Home Screen.
I saved new posts — how do I add them? Just tell your Muse "I saved new posts." It fetches and deep-reads only the new ones, then refreshes your app and files.
Can I share my library with someone? Your library is files on your machine — you can copy them to someone else's computer, but they contain your personal Instagram data. Treat them like anything private: don't publish or upload them anywhere public.
Something failed — what now?
Tell your Muse what you saw — it can diagnose and fix it directly. (Running
the manual setup below? Re-run the installer — it's safe to run any number of
times — and check python3 --version is 3.11+.)
[Image][Image] Troubleshooting
Something wrong? Tell your Muse what happened — it can diagnose and fix most issues itself.
Running the manual setup yourself?
PIL account_id is not configured→ copy the example config and setaccount_idto youruser_fbidfrominstagram-cli accounts.- Extraction is slow on huge libraries — it's resume-safe; just re-run it.
429rate limits are handled with backoff inside the scripts.- The MCP server needs
mcp<2in the Python that runs it (2.x renamed the API).
[Image][Image] Contributing
PRs and issues welcome — better extraction prompts, new query clients, new export formats. Fork it, ship it, make it yours. If it saved you from the endless scroll, a star helps others find it.
[Image][Image] License
MIT. Built by Paul Poulose.
Source: README.md at commit cc003dd
Tools
0Version history
1- v0.1.1LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts

