Streamlined CLI file organizer powered by local AI (Ollama)
Project description
fo-core
Local AI file organizer. Point it at a directory — it categorizes and moves your files using a model running on your own machine. Local by default: Ollama runs on-device, no API key required. Cloud providers are optional extras.
Prerequisites
-
Python 3.11 or later — check with
python3 --version -
Ollama — install from ollama.ai, then start it:
ollama serve
Install
pip install fo-core
Then pull the default AI models (first-time only, ~4 GB total):
ollama pull qwen2.5:3b-instruct-q4_K_M
ollama pull qwen2.5vl:7b-q4_K_M
Verify optional deps for your files:
fo doctor ~/Downloads
Quick Start
# Preview what would happen — no files are moved
fo organize ~/Downloads ~/Organized --dry-run
# Run it for real
fo organize ~/Downloads ~/Organized
# Changed your mind?
fo undo
Commands
| Command | What it does |
|---|---|
fo organize [SRC] [DEST] |
Organize files using AI categorization |
fo preview [SRC] |
Dry-run preview without moving files |
fo search [QUERY] |
Full-text search across files |
fo analyze [DIR] |
File statistics and analysis |
fo dedupe |
Find and remove duplicate files |
fo suggest |
AI-powered organization suggestions |
fo autotag |
Auto-tag files based on content |
fo copilot |
Natural-language assistant |
fo rules |
Manage organization rules (YAML) |
fo config show|list|edit |
View or update configuration |
fo doctor [DIR] |
Scan a directory and recommend optional deps |
fo daemon start|stop |
Background file watcher |
fo undo / redo / history |
Operation history and rollback |
fo model |
Select or inspect AI models |
fo benchmark |
Performance benchmarks |
fo setup |
Interactive setup wizard |
Full flag documentation: docs/cli-reference.md
AI Providers
Default: Ollama — runs entirely on your machine, no API key needed.
Cloud providers are optional extras:
| Provider | Install | Works with |
|---|---|---|
| OpenAI-compatible | pip install "fo-core[cloud]" |
OpenAI, LM Studio, vLLM, Groq |
| Anthropic Claude | pip install "fo-core[claude]" |
Claude text + vision models |
| llama.cpp | pip install "fo-core[llama]" |
GGUF models — no Ollama required |
| MLX (Apple Silicon) | pip install "fo-core[mlx]" |
MLX-optimized local models |
Optional Feature Packs
Core file types (PDF, DOCX, XLSX, PPTX, EPUB, ZIP) work out of the box. RAR also works but requires a system-level unrar or unar binary. Install extras for additional capabilities:
| Pack | Install | Adds |
|---|---|---|
media |
pip install "fo-core[media]" |
Audio transcription (faster-whisper) + video scene detection. Use fo organize --transcribe-audio for content-aware audio categorization, or verify the install with fo benchmark run --suite audio --transcribe-smoke. |
dedup-text |
pip install "fo-core[dedup-text]" |
TF-IDF/cosine text deduplication |
dedup-image |
pip install "fo-core[dedup-image]" |
Image similarity deduplication |
scientific |
pip install "fo-core[scientific]" |
HDF5, NetCDF, MATLAB formats |
cad |
pip install "fo-core[cad]" |
DXF/DWG CAD files |
search |
pip install "fo-core[search]" |
BM25 + vector search |
all |
pip install "fo-core[all]" |
All of the above |
Configuration
Config lives in ~/.config/fo/config.yaml. Override the location with the FO_CONFIG environment variable.
fo config show # view all settings
fo config edit --text-model qwen2.5:3b-instruct-q4_K_M # change text model
fo config edit --device auto # change device
Full configuration reference: docs/CONFIGURATION.md
Documentation
| Doc | Contents |
|---|---|
| Getting Started | Installation options, first run, platform notes |
| CLI Reference | Every command and flag |
| Configuration | All config keys explained |
| FAQ | Common questions and troubleshooting |
| Troubleshooting | Diagnosing connection and model issues |
Contributing / Development
See DEVELOPER.md for architecture, local setup, testing, and contribution guidelines.
Releases
Currently 2.0.0-beta.1. The acceptance criteria that were required for this
promotion and the contract with public pre-release testers are documented in
docs/release/beta-criteria.md.
License
MIT OR Apache-2.0
Project details
Release history Release notifications | RSS feed
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 fo_core-2.0.0b5.tar.gz.
File metadata
- Download URL: fo_core-2.0.0b5.tar.gz
- Upload date:
- Size: 738.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cbd0ffb8d6d058c0bbebc7c1b1c0e040ab226eaca82d878f0ce4cdff564890c9
|
|
| MD5 |
2f9beb4802839cfb83103608eb389492
|
|
| BLAKE2b-256 |
7c1fbef9a698a641f19e970f4f3ba859f7e84d8013c14de985393b328a47694f
|
Provenance
The following attestation bundles were made for fo_core-2.0.0b5.tar.gz:
Publisher:
release.yml on curdriceaurora/fo-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fo_core-2.0.0b5.tar.gz -
Subject digest:
cbd0ffb8d6d058c0bbebc7c1b1c0e040ab226eaca82d878f0ce4cdff564890c9 - Sigstore transparency entry: 1602046838
- Sigstore integration time:
-
Permalink:
curdriceaurora/fo-core@c22a68b50f964b507822014eafb9611b8d4d6807 -
Branch / Tag:
refs/tags/v2.0.0-beta.5 - Owner: https://github.com/curdriceaurora
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c22a68b50f964b507822014eafb9611b8d4d6807 -
Trigger Event:
push
-
Statement type:
File details
Details for the file fo_core-2.0.0b5-py3-none-any.whl.
File metadata
- Download URL: fo_core-2.0.0b5-py3-none-any.whl
- Upload date:
- Size: 852.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db845159a226928be9038be174676d3d25eda85f256614a1220f542c64c65b6f
|
|
| MD5 |
823aebb184fac47a752d9156123d6d9c
|
|
| BLAKE2b-256 |
ab295c49ec22ff4bef9bd9178920bdb5f7d25814c05aa56da913f4412b80dd40
|
Provenance
The following attestation bundles were made for fo_core-2.0.0b5-py3-none-any.whl:
Publisher:
release.yml on curdriceaurora/fo-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fo_core-2.0.0b5-py3-none-any.whl -
Subject digest:
db845159a226928be9038be174676d3d25eda85f256614a1220f542c64c65b6f - Sigstore transparency entry: 1602046869
- Sigstore integration time:
-
Permalink:
curdriceaurora/fo-core@c22a68b50f964b507822014eafb9611b8d4d6807 -
Branch / Tag:
refs/tags/v2.0.0-beta.5 - Owner: https://github.com/curdriceaurora
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c22a68b50f964b507822014eafb9611b8d4d6807 -
Trigger Event:
push
-
Statement type: