Skip to main content

Psydcar

PyPI Python Tests License: MIT

Psydcar lets your coding agents search your local notes, code, and PDFs.

Point Psydcar at a folder and it builds a local search index called a sidecar. Coding agents such as Claude Code, Cursor, or any other MCP client can then search that sidecar and quote the exact file, line, or PDF page that answers their question. Your files stay where they are. Psydcar changes them only when you edit them yourself in the dashboard. Agents get read-only access.

  • Local by default. Indexing and search run on your machine. Nothing leaves it unless you turn on an embeddings provider.
  • You choose what each agent sees. Each MCP connection is limited to the sidecars you select.
  • Answers come with sources. Every result names its file and location, and says whether the file has changed since it was indexed.
  • Stays current. A built-in watcher re-indexes files as they change.
  • CLI and browser dashboard. Manage sidecars whichever way you prefer.
  • Edit in the browser. The dashboard includes a Markdown editor with live preview and a code editor. A saved change is searchable by your agents right away.

Install

Psydcar needs Python 3.10 or newer and runs on macOS and Linux. Install it as a standalone command with pipx or uv:

pipx install psydcar
uv tool install psydcar

pip install psydcar also works inside a virtual environment. Check the install with psydcar --version.

Quick start

Create a sidecar from any folder, index it, and search it:

psydcar sidecar create "My notes" ~/Notes
psydcar sidecar index "My notes"
psydcar search --sidecar "My notes" "where are API tokens stored"

Search prints JSON results. Each result includes the matching text, the file path, its line range or PDF page, and an evidence_id. To re-read the current version of a result from disk, pass its ID to retrieve:

psydcar retrieve --sidecar "My notes" EVIDENCE_ID

Prefer a UI? Run psydcar dashboard to open a local dashboard at http://127.0.0.1:8765. You can create, update, and inspect sidecars there, edit their files, and prepare agent connections. Press Ctrl-C to stop it.

Connect a coding agent

Agents reach Psydcar through an MCP server that runs on your machine over stdio. Each server serves only the sidecars you pass to it. Find a sidecar's ID with psydcar sidecar list.

The easiest way to get a ready-made configuration is the dashboard. Open MCP connections → Prepare connection, select sidecars, and choose Copy JSON.

Claude Code:

claude mcp add my-notes -- psydcar mcp --sidecar-id SIDECAR_ID

Cursor, Claude Desktop, and other JSON-configured clients:

{
  "mcpServers": {
    "my-notes": {
      "command": "/absolute/path/to/psydcar",
      "args": ["mcp", "--sidecar-id", "SIDECAR_ID"]
    }
  }
}

Use the output of command -v psydcar as the command value. Desktop apps often don't inherit your shell's PATH, so an absolute path is the reliable choice. Repeat --sidecar-id to serve several sidecars, and restart the client after changing its settings.

The server gives the agent two tools:

  • search takes a query and an optional limit.
  • retrieve takes an evidence_id and returns the current text from disk.

The agent can't widen its selection. Psydcar returns evidence, not answers, so the agent reads the sources and draws its own conclusions.

Keep sidecars up to date

Run psydcar sidecar update NAME after files change. It reports what was added, changed, deleted, or unchanged.

To update automatically, leave psydcar watch or psydcar dashboard running. Both watch every sidecar's folder and catch up on anything that changed while Psydcar was stopped. psydcar watch --once catches up once and exits. Psydcar doesn't install a background service, so changes are only picked up while one of these commands is running.

psydcar sidecar show NAME reports the last update, any files that need attention, and PDF pages without searchable text.

Edit files in the dashboard

Select a sidecar in the dashboard and choose Browse and edit files. The file list shows the sidecar's indexed text and code files. Open one to edit it.

  • Markdown opens in live preview. Headings, emphasis, links, lists, task checkboxes, quotes, and code blocks render as you type. The raw Markdown appears on the line you're editing. Source shows the plain text. The file on disk is always plain Markdown, and Psydcar never reformats it.
  • Code and other text files open in a code editor with syntax highlighting, line numbers, and search.
  • Saving. Press Save or ⌘S (Ctrl+S on Linux). The file is written in place, and Psydcar re-indexes it right away. Line endings and a UTF-8 byte order mark are kept as they were.
  • Changes from other apps. If a file changes on disk while it's open, the editor reloads it. If you also have unsaved edits, you choose between reloading and keeping your version.
  • File list. The panel button in the editor toolbar hides the file list. On narrow screens, the file list opens as a drawer over the editor.
  • Managing files. Create files and folders, and rename or move them, from the file list. Press F2 to rename the selected item. Deleting a file is permanent, and only empty folders can be deleted.

The editor works with the same files Psydcar indexes. Hidden files, symbolic links, skipped folders, and files over 2 MiB can't be opened or created there. The CLI and MCP server stay read-only.

Better results with embeddings (optional)

Out of the box, Psydcar uses keyword search that runs entirely on your machine. For semantic search, which matches meaning rather than exact words, connect any OpenAI-compatible embeddings endpoint. That includes OpenAI, a hosted gateway such as LiteLLM or Bifrost, or a local model server.

export OPENAI_API_KEY="sk-..."
psydcar provider set --base-url https://api.openai.com/v1 --model text-embedding-3-small --api-key-env OPENAI_API_KEY
psydcar sidecar update "My notes"
  • Privacy. With a provider configured, updates send indexed passages to that endpoint, and searches send the query.
  • Credentials. Psydcar stores only the name of the environment variable, never the key itself. Set the variable wherever Psydcar runs: your shell, the dashboard, and your MCP client's environment.
  • URLs. The base URL ends before /embeddings. A local server without a key can skip --api-key-env, for example --base-url http://127.0.0.1:4000/v1. Plain HTTP to a remote host requires --allow-insecure-http.
  • Fallback. If embeddings are pending or the provider fails, search falls back to keyword results and prints a notice.
  • Managing it. psydcar provider show displays the current settings. psydcar provider clear removes the provider and its vectors and keeps the keyword index. Changing provider settings clears existing vectors, so run an update afterwards.

In the dashboard, the same settings are under Embedding provider. Test settings sends only a fixed test phrase, never your files.

Manage sidecars

Command What it does
psydcar sidecar create NAME DIR Register a folder. It isn't indexed until you run index or update.
psydcar sidecar list Show every sidecar with its ID, folder, and status.
psydcar sidecar show NAME Show details, update history, and problems.
psydcar sidecar index NAME / update NAME Index the folder, or refresh changed files. Both commands run the same refresh.
psydcar sidecar rename OLD NEW Rename a sidecar. Its ID stays the same.
psydcar sidecar remove NAME Delete the sidecar and its index. The source folder isn't touched.

Commands accept a sidecar's name or ID. To search several sidecars, repeat --sidecar. Run psydcar --help or psydcar COMMAND --help for every option.

What gets indexed

  • Text and code: UTF-8 files up to 2 MiB with these extensions: .txt .md .markdown .rst .py .js .jsx .ts .tsx .json .yaml .yml .toml .go .rs .java .c .h .cpp .hpp .cs .sh .sql .html .css
  • PDFs: up to 50 MiB, with text extracted page by page. Psydcar doesn't run OCR. Scanned pages without a text layer are listed as PDF page notices, and the rest of the PDF stays searchable.
  • Skipped: hidden files and folders, symbolic links, unsupported extensions, and any folder named node_modules, __pycache__, dist, build, target, or vendor. .gitignore files aren't read.

Text and code are split into passages of up to 40 lines that overlap by 5 lines. Locations always refer to lines in the original file.

Reading search results

Field Meaning
source.path, source.relative_path The original file.
location Line range (start–end, starting at 1) for text and code, or the page number for a PDF.
context, context_origin The matching text. Search returns the indexed copy (index). retrieve reads the file again (source).
freshness current means the file hasn't changed since indexing. changed, missing, and unreadable mean the indexed text may be out of date.
index_freshness, processing.state Whether the sidecar has an update pending or a problem that needs attention.

If a file has changed or disappeared, retrieve returns context: null instead of outdated text. After an update, changed passages get new evidence IDs.

Where data is stored

Psydcar keeps its index in one per-user folder:

  • macOS: ~/Library/Application Support/psydcar
  • Linux: $XDG_DATA_HOME/psydcar, which defaults to ~/.local/share/psydcar

To use a different folder, set PSYDCAR_HOME to an absolute path. If you do, set the same value for the CLI, the dashboard, and your MCP client.

Upgrade and uninstall

Upgrade with pipx upgrade psydcar or uv tool upgrade psydcar. Your sidecars and their IDs carry over, and existing MCP configurations keep working. Restart a running dashboard or MCP client to pick up the new version.

To uninstall, run pipx uninstall psydcar or uv tool uninstall psydcar. To delete your sidecars as well, remove the data folder listed above.

Troubleshooting

Problem What to check
A search returns no results Is the sidecar indexed? Run psydcar sidecar show NAME, check the file types listed under What gets indexed, then run an update.
A sidecar shows Stale or Needs attention psydcar sidecar show NAME lists the files or provider problems. Fix them, then run an update.
A PDF page has no searchable text It's probably a scanned image. Run OCR on it with another tool, then run an update.
An embeddings test fails or the credential shows as missing Set the API key variable before starting Psydcar or your MCP client. Then check the URL and model. A 401 or 403 error can also come from a gateway, proxy, or firewall in front of the provider.
The agent can't start the MCP server Use an absolute command path, check that the sidecar IDs still exist with psydcar sidecar list, and use the same PSYDCAR_HOME if you set one.

Found a bug or have an idea? Open an issue.

Contributing

See CONTRIBUTING.md for development setup, tests, and the release process.

License

MIT

Metadata

Release files for psydcar 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for psydcar 0.3.0
File Size Uploaded Provenance Actions
psydcar-0.3.0.tar.gz 576.0 kB With provenance Details for psydcar-0.3.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for psydcar 0.3.0
File Interpreter ABI Platform Actions
psydcar-0.3.0-py3-none-any.whl Python 3 none any Details for psydcar-0.3.0-py3-none-any.whl

Total release size: 1.1 MB

Release files / psydcar-0.3.0.tar.gz

Download URL psydcar-0.3.0.tar.gz
Size 576.0 kB
Tags Source
SHA-256 checksum
How to use checksums
efcafbd68c1c5fbd645bce00a21493a1cabb6f01cc4fd620b491abc146b6f595
BLAKE2b-256 checksum
How to use checksums
ab74e0760460166d3a1c2dfeb6770f3784f4b4dcf53e80c7736f01b604655a61
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 8, 2026.

Transparency log

Release files / psydcar-0.3.0-py3-none-any.whl

Download URL psydcar-0.3.0-py3-none-any.whl
Size 557.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2a9146e1705a61b48f9468125144009638450c61e109771c4518aa3d48e441e4
BLAKE2b-256 checksum
How to use checksums
1d2d24051db5e7cb9275a7d7a3815c2e90d61f8a76efb1793e2ea44f706dfe3a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 8, 2026.

Transparency log

Security for psydcar 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for psydcar-0.3.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 8, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page