profileme / README.md

raw file 2153 bytes
# profileme

Local-only filesystem profiler. Scans your filesystem, extracts text from many
formats, and uses your **local** LLM (llama-server, OpenAI-compatible) to build
a single Markdown profile of you.

Everything stays on your machine. No network calls except to `localhost`.

## Build

```bash
cd /path/to/profileme
cargo build --release
```

## Run

Start your model first (recommended: the Qwen IQ3_S build, which has reasoning disabled and responds faster):

```bash
cd /path/to/your-model-dir
./start-iq3s.sh
```

Reasoning models (e.g. saluki) also work — the tool disables chain-of-thought output — but are slower.

Then:

```bash
# dry run: see what would be scanned
./target/release/profileme --root ~ --dry-run | head

# small first pass
./target/release/profileme --root ~ --max-files 300 --out profile.md

# full run (resumable)
./target/release/profileme --root ~ --resume --out profile.md
```

## Useful flags

- `--root PATH` (repeatable) roots to scan (default: home)
- `--max-files N` cap files processed
- `--max-file-bytes N` skip bigger files (default 2MB)
- `--ocr` run tesseract on images
- `--include-hidden` include hidden dirs/files
- `--include-code` also scan source code files (off by default; code is noisy for personality profiling)
- `--exclude NAME` extra dir names to skip
- `--extract-only` extract text only, no LLM
- `--no-llm` run without an LLM: heuristic extraction + heuristic profile
- `--resume` skip already-processed files
- `--model-url`, `--model` point at a different local server

## Output

- `profile.md` final persona document
- `.profileme/facts.jsonl` per-file extracted facts
- `.profileme/checkpoints/` resume state
- `.profileme/partial_*.md` intermediate summaries

## Privacy

- Skips `.ssh`, `.gnupg`, `.pki`, secret/key files, `.env`
- Redacts tokens, API keys, private keys, password assignments
- Disable redaction only with `--no-redact`

## Notes

Scanning an entire home directory can be huge (hundreds of thousands of files).
Use `--max-files` for a first pass; the crawler prioritizes high-signal files
(READMEs, notes, configs, shell history, docs). Full runs are resumable.
"