SWLL
A local context layer for your files, browser history, chats, and email — searchable, user-owned, and served to AI agents through MCP.
Version note. SWLL 1.0.0 is the first release of SWLL, continuing the codebase formerly published as
footprinter-cli(last public release 1.1.1). The version resets to 1.0.0 because SWLL is a distinct, proprietary product — the reset is intentional, not a regression.
swll is a command-line tool — you run the
swllcommand; it's not a library you import. So install it with pipx, the standard way to install a Python CLI app: pipx gives swll its own isolated environment and puts theswllcommand on your PATH.
pipx install swll
Your work lives across filesystems, browsers, inboxes, chat histories, and other tools. SWLL indexes those sources into a single local store, organizes them into the projects and groupings you define, and serves the result to AI agents through a governed access layer. You control what the agent can see. Everything stays on your machine.
Install
Recommended — install with pipx (macOS 13+ or Linux, Python 3.11+):
pipx install swll # install the CLI
swll setup # configure sources + optional features (interactive)
That's the whole path. pipx install swll puts three commands on your PATH:
| Command | What it is |
|---|---|
swll |
The CLI and indexing pipeline |
swll-mcp |
The MCP server for AI agents |
swll-api |
The HTTP API |
swll setup then configures your sources and offers to install optional features:
| Extra | What it adds |
|---|---|
[semantic] |
Semantic search via ChromaDB + ONNX embeddings |
[parse] |
PDF, Word, Excel, PowerPoint content extraction |
[full] |
Both of the above |
pipx installs swll in its own isolated environment. Enabling semantic search in swll setup installs the [full] bundle — semantic search and document parsing — into that same environment, so you don't run pip or pipx yourself for that path. Document parsing on its own has no separate setup prompt yet; to add just that, run pipx install 'swll[parse]' (see below) — the same command swll doctor recommends.
If you don't have Python 3.11+ yet, install it from python.org first, then run the pipx command above.
Advanced, developer install, and troubleshooting
Advanced / for developers
pip install into a venv (embedding or hacking on swll). If you're embedding swll in your own project or working on swll itself, install it with pip inside a virtual environment you manage:
python3 -m venv venv
./venv/bin/pip install swll
Use the pipx path above for a normal command-line install — bare pip install swll into your system Python is commonly blocked on modern macOS/Homebrew/Debian, which is exactly why pipx exists.
Adding extras by hand (pipx). swll setup is the recommended way to add optional features, and you rarely need to do this yourself. If you do want to add extras through pipx directly, they must be on the first install:
pipx install 'swll[full]' # semantic + parse, on a fresh install
A plain re-run of pipx install swll on an existing install is a no-op — it won't add extras. To add them to an install you already have, force a reinstall or inject the dependency:
pipx install 'swll[full]' --force # reinstall the same version, now with extras
pipx inject swll chromadb # or inject a single dependency into swll's env
zsh note: zsh treats
[...]as a glob, so quote the specifier —'swll[full]', notswll[full].Footnote — why bare
pip installis blocked: Homebrew/Debian/Fedora mark their Python as "externally managed" (PEP 668), so a globalpip installis refused to protect the system package manager. pipx and venvs both sidestep it; you don't need to know any of this to install swll.
Troubleshooting
Python version: Stock macOS ships Python 3.9. Install 3.11+ from python.org or brew install python@3.11.
Full Disk Access: Required for browser history indexing on macOS. swll setup will prompt you when needed.
ChromaDB telemetry: SWLL sets anonymized_telemetry=False. ChromaDB also removed product telemetry in v1.5.4. See Chroma OSS overview.
Apple Silicon (Rosetta): If swll doctor warns about x86_64 Python on arm64 hardware, recreate the venv with a native interpreter: pipx reinstall swll --python /opt/homebrew/bin/python3. This avoids compatibility issues with native-extension dependencies.
Uninstall
swll uninstall # remove MCP entry + user data
pipx uninstall swll # remove the package
Quick Start
swll setup # Configure sources (interactive wizard)
swll ingest # Index your files
swll status # See what's indexed
swll search "meeting notes" # Find things
A few first-run notes:
- The first ingest is implicitly full; subsequent runs are incremental. If you change exclusions or add directories after the first run, re-run with
swll ingest --fullso previously skipped files get picked up. - With
[semantic]or[full], the first ingest downloads ~80MB of ONNX embedding model weights. It's a one-time cost — subsequent ingests are fast. - Keep the directories you want indexed outside
~/Downloads— the default exclusion list skips it.
Connect to Claude Desktop
SWLL includes an MCP server that gives Claude Desktop (or any MCP client) structured access to your indexed data:
swll setup mcp --claude # Configure MCP for Claude Desktop
After running this, fully quit Claude Desktop (Cmd+Q) and relaunch before the SWLL tools appear in the conversation tools list. A simple window close isn't enough — the app keeps running in the menu bar.
Once configured, Claude can search your files, browse projects, and find related conversations — through natural language.
What It Indexes
| Source | What's captured |
|---|---|
| Local files | Path, type, size, timestamps, content hash |
| Browser history | Safari and Chrome — URLs, titles, visit times |
| Chat exports | Claude and ChatGPT conversation exports |
| Subject, sender, recipients, body, timestamps | |
| Documents | PDF, Word, Excel, PowerPoint content (with [parse] extra) |
| Semantic embeddings | Conceptual similarity across all sources (with [semantic] extra) |
What lands in the database — and when — is controlled by the content storage tier you opt into. By default, SWLL only indexes metadata; it does not read your file content until you explicitly enable it. swll setup walks you through the tiers and states what each one reads.
CLI Commands
All commands use the swll entry point.
| Command | Purpose |
|---|---|
swll setup |
Configure sources and integrations |
swll config |
Add, remove, and list indexed scan directories without the wizard |
swll ingest |
Run the indexing pipeline |
swll status |
System health and data counts |
swll search |
Search across all indexed sources |
swll connect |
Manage optional integrations |
swll permission |
Manage access policies (visibility, permissions) |
swll view |
Browse indexed data (files, folders, projects, clients, chats, emails, visits) |
swll add |
Create new entity records or import from CSV |
swll update |
Update existing records by ID — status, assignments, metadata |
swll delete |
Hard-delete a super entity (irreversible) |
swll doctor |
Post-install health check (Python version, platform, FDA, MCP wiring) |
swll upgrade |
Show the command that upgrades SWLL on this machine |
swll version |
Show the installed SWLL version (also swll --version) |
swll uninstall |
Remove SWLL — MCP entry, user data, package |
Run swll <command> --help for full usage.
Architecture
Single-process CLI with optional MCP server. SQLite database. No containers, no cloud, no accounts.
Sources are scanned into SQLite with bidirectional links connecting local files to remote backups via content hash matching. Embeddings are generated at ingest time for semantic search. The MCP server exposes indexed data with two-layer access control (visibility + access) — you decide what agents can see.
Documentation
swll --help documents every command, and swll <command> --help covers each one in detail. swll setup explains the choices it asks you to make as it makes them.
Full reference documentation — interfaces, data model, pipeline, content storage, and permission policies — lives in the project repository, which is private.
Contributing
SWLL is a proprietary product developed by SwellCity Group. The source is published to PyPI so you can read exactly what you run — but the repository is private, and unsolicited contributions are not accepted.
Found a bug, or something that doesn't match this README? Email hello@swellcity.ai. Security vulnerabilities go to the same address — please report them privately, and include enough detail to reproduce.
No Contributor License Agreement required. By submitting a contribution, you agree it may be incorporated into SWLL under the project's proprietary LICENSE (Copyright © 2026 SwellCity Group, All Rights Reserved).
License
Proprietary — Copyright © 2026 SwellCity Group, All Rights Reserved. See the LICENSE file included with this package.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file swll-1.1.0.tar.gz.
File metadata
- Download URL: swll-1.1.0.tar.gz
- Upload date:
- Size: 327.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72a9d21941b80940a5c2d9b726d2c2cd0656726c6332c45ec0601bc06f882138
|
|
| MD5 |
b72aced2c3f8069fe12b345363eada77
|
|
| BLAKE2b-256 |
a8b36458f69e0f03a20395f2d92ac173271c83eb544d912a7fad85e6b9ea646e
|
Provenance
The following attestation bundles were made for swll-1.1.0.tar.gz:
Publisher:
publish.yml on swllcty/swll
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
swll-1.1.0.tar.gz -
Subject digest:
72a9d21941b80940a5c2d9b726d2c2cd0656726c6332c45ec0601bc06f882138 - Sigstore transparency entry: 2211784033
- Sigstore integration time:
-
Permalink:
swllcty/swll@d7371430172dc9585ba05bd41986a11cdd1b536d -
Branch / Tag:
refs/tags/v1.1.0 - Owner: https://github.com/swllcty
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d7371430172dc9585ba05bd41986a11cdd1b536d -
Trigger Event:
release
-
Statement type:
File details
Details for the file swll-1.1.0-py3-none-any.whl.
File metadata
- Download URL: swll-1.1.0-py3-none-any.whl
- Upload date:
- Size: 383.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c15b858b2c59e8f2bd4b39e7eab865cf69e365d31a5e5bda84ff1f4e3c6603d8
|
|
| MD5 |
1d137fddf6fb2916e3001982c06d20f9
|
|
| BLAKE2b-256 |
64dcffda09a043f7f0d877cdc96a3b992902c105155330f1b2b61e019c2ad7b7
|
Provenance
The following attestation bundles were made for swll-1.1.0-py3-none-any.whl:
Publisher:
publish.yml on swllcty/swll
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
swll-1.1.0-py3-none-any.whl -
Subject digest:
c15b858b2c59e8f2bd4b39e7eab865cf69e365d31a5e5bda84ff1f4e3c6603d8 - Sigstore transparency entry: 2211784054
- Sigstore integration time:
-
Permalink:
swllcty/swll@d7371430172dc9585ba05bd41986a11cdd1b536d -
Branch / Tag:
refs/tags/v1.1.0 - Owner: https://github.com/swllcty
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d7371430172dc9585ba05bd41986a11cdd1b536d -
Trigger Event:
release
-
Statement type: