Install
Install Personify locally with Docker Postgres, npm setup scripts, a Python venv, and the vault CLI.
Personify runs entirely on your machine. The local install has four moving parts, and the repo's npm scripts wire them together:
- Postgres 17 + pgvector in one Docker container.
- A generated local
.envfile with a database password. - A Python 3.11+ virtualenv with the
personifypackage installed editable. - The Svelte UI + FastAPI backend, started together for local use.
Prerequisites
| Requirement | Why |
|---|---|
| Docker Desktop or Docker Engine + compose plugin | Runs the Postgres + pgvector container |
| Node.js 20+ with npm | Runs the setup/start scripts |
| Python 3.11 or newer | The backend package and CLI |
git | To clone the repo |
| ~2 GB free disk for a small vault | Grows with your exports, raw files, and database volume |
Verify the basics:
docker --version
node --version
npm --version
python --version
git --version1. Clone and run setup
git clone https://github.com/trigga6006/personify.git
cd personify
npm run setupThe setup script is intentionally boring:
npm run setup:envwrites.envif it does not exist, using a generated local database password..venvis created if missing.- Python dependencies are installed with
pip install -e ".[dev]". - Frontend dependencies are installed under
frontend/node_modules. docker compose up -dstarts thepersonify-dbcontainer.vault initinitializes the defaultpersonalvault.
The setup command is safe to rerun. It will not overwrite an existing .env
unless you explicitly run npm run setup:env -- --force.
2. Start the local app
npm startThis starts the full local stack:
- Docker/Postgres stays up or is started if needed.
- FastAPI runs at
http://127.0.0.1:18765. - The Vite UI runs at
http://localhost:18766.
Open http://localhost:18766.
Press Ctrl-C in the terminal to stop FastAPI and Vite. The Postgres container
keeps running so your data remains available next time.
Docker/Postgres details
The shipped docker-compose.yml uses pgvector/pgvector:pg17. Postgres is
published only on 127.0.0.1:5544, not all network interfaces.
The container is named personify-db. One Docker container can hold multiple
vault databases:
| Vault name | Postgres database | Filesystem root |
|---|---|---|
personal | personify | ./vault |
code-corpus | personify_code_corpus | ./vaults/code-corpus |
work | personify_work | ./vaults/work |
The postgres database is used briefly as the admin database when Personify
checks for or creates a vault database.
docker compose down -v removes the named volume that backs Postgres. Your
database rows will be gone. Use docker compose stop or plain
docker compose down when you only want to stop the container.
Optional embeddings
The base setup gives you full-text search. Semantic search requires the optional embeddings extra:
.\.venv\Scripts\python -m pip install -e ".[embeddings]" # Windows PowerShell
python -m pip install -e ".[embeddings]" # activated venv on macOS/LinuxThe default model is sentence-transformers/all-MiniLM-L6-v2 (384 dimensions).
It downloads on first use into your Hugging Face cache.
Environment variables
Personify reads configuration from the environment or .env in the repo root.
The generated .env matches the Docker Compose setup.
| Variable | Example/default | What it controls |
|---|---|---|
PERSONIFY_DB_USER | personify | Postgres user created for fresh Docker volumes |
PERSONIFY_DB_PASSWORD | generated by npm run setup:env | Local Postgres password |
PERSONIFY_DB_NAME | personify | Initial database for fresh Docker volumes |
PERSONIFY_DB_URL | postgresql+psycopg://personify:<generated>@127.0.0.1:5544/personify | Active vault connection string |
PERSONIFY_VAULT_DIR | ./vault | On-disk directory for the default vault |
PERSONIFY_VAULT_NAME | personal | Name of the default vault |
PERSONIFY_VAULTS_DIR | ./vaults | Parent directory for named vaults |
PERSONIFY_API_HOST | 127.0.0.1 | FastAPI bind host |
PERSONIFY_API_PORT | 18765 | FastAPI bind port |
PERSONIFY_EMBED_MODEL | sentence-transformers/all-MiniLM-L6-v2 | Embedding model id |
PERSONIFY_EMBED_DIM | 384 | Embedding dimension |
Next
- Quickstart — ingest your first export end-to-end.
- CLI reference — every
vaultcommand and option. - Self-hosting — backups, upgrades, and network exposure notes.