-
Notifications
You must be signed in to change notification settings - Fork 1
Installazione
Scenari coperti:
- Mac One-Click β installazione automatica (consigliata, zero configurazione)
- Mac β installazione manuale nativa (massime prestazioni LLM con llama.cpp)
- Linux nativo β installazione diretta con llama.cpp locale
- Linux Docker β Docker con Ollama come container separato (alternativa)
- Windows β Docker con llama.cpp server come container separato
- One-liner β installazione guidata da zero con Docker (opzione AI inclusa, consigliata per utenti non tecnici)
Il backend LLM, l'URL del server, le API key e il modello si configurano dall'app stessa nella pagina βοΈ Impostazioni β non nel file
.env.Il file
.envcontiene solo il percorso del database e della tassonomia.
La configurazione viene salvata nel database (user_settings) e persiste tra i riavvii. Al primo avvio l'app usa llama.cpp come backend di default β nessun servizio esterno necessario.
No, con l'installazione one-click il modello viene scaricato automaticamente al primo avvio. L'app rileva l'hardware (RAM, GPU, VRAM) e scarica il modello ottimale:
| Memoria effettiva | Modello | Dimensione |
|---|---|---|
| 4 GB | Qwen2.5-1.5B | 1.1 GB |
| 8 GB | Qwen2.5-3B | 2.1 GB |
| 12 GB | Qwen2.5-7B | 4.7 GB |
| 16+ GB | Gemma-3-12B | 6.8 GB |
Come viene scelta la memoria effettiva? Su Mac (Apple Silicon) la memoria Γ¨ unificata, quindi coincide con la RAM. Su Linux/Windows con GPU dedicata (NVIDIA o AMD ROCm), il vincolo Γ¨ la VRAM: l'app rileva la VRAM via
nvidia-smiorocm-smie usamin(RAM, VRAM). Se non viene rilevata nessuna GPU, usa la RAM di sistema.
Nota: l'app funziona anche senza LLM attivo. Import, ledger, regole, analisi e report sono sempre disponibili. Se il LLM non Γ¨ raggiungibile, le transazioni ricevono categoria "Altro" e
to_review=True.
Prerequisiti: macOS 12+, Python 3.11+, connessione internet
- Scarica
install_spendifai.commanddal repository - Double-click sul file in Finder
- Lo script:
- Verifica Python e installa
uv(package manager) - Scarica Spendif.ai in
~/Applications/Spendif.ai/ - Installa tutte le dipendenze
- Rileva il tuo hardware (RAM, GPU, VRAM) e consiglia il modello LLM ottimale
- Verifica Python e installa
- Al primo import, il modello viene scaricato automaticamente
Per avviare Spendif.ai ogni giorno: double-click su Spendif.ai.command in ~/Applications/Spendif.ai/packaging/macos/
HW minimo: 4 GB RAM, Apple Silicon o Intel con AVX2. GPU Metal accelerata automaticamente.
llama.cpp su Mac usa l'accelerazione Metal (Apple Silicon) automaticamente. Dentro Docker questa accelerazione non Γ¨ disponibile β inferenza 5-10x piΓΉ lenta.
-
Python >= 3.13 β verifica con
python3 --version. Su macOS:brew install python@3.13 - Git
git clone https://github.com/drake69/spendif-ai.git spendifai
cd spendifaicurl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.zshrc # oppure riapri il terminaleuv synccp .env.example .env
# Il file .env non richiede modifiche per un'installazione locale standardIl modello viene caricato direttamente da llama.cpp (integrato in Spendif.ai) β nessun servizio esterno da installare.
# Scarica un modello GGUF (una tantum)
# Scegli in base alla RAM disponibile:
# RAM >= 16 GB (consigliato):
uv run huggingface-cli download google/gemma-3-12b-it-GGUF gemma-3-12b-it-Q4_K_M.gguf \
--local-dir ~/.spendifai/models
# RAM 8 GB:
uv run huggingface-cli download Qwen/Qwen2.5-7B-Instruct-GGUF qwen2.5-7b-instruct-q4_k_m.gguf \
--local-dir ~/.spendifai/models
# RAM 4-6 GB β Gemma 4 E2B (architettura recente, ottima per italiano):
uv run huggingface-cli download unsloth/gemma-4-E2B-it-GGUF gemma-4-E2B-it-Q4_K_M.gguf \
--local-dir ~/.spendifai/models
# RAM 4 GB β alternativa leggera:
uv run huggingface-cli download Qwen/Qwen2.5-3B-Instruct-GGUF qwen2.5-3b-instruct-q4_k_m.gguf \
--local-dir ~/.spendifai/modelsIl modello viene scaricato una sola volta in
~/.spendifai/models/e riutilizzato ad ogni avvio successivo. In alternativa, puoi scaricare il modello direttamente dall'app in βοΈ Impostazioni β Scarica modello.
Gemma 4 E2B: richiede
llama-cpp-pythonaggiornato. Se ottieniunknown model architecture: 'gemma4', esegui:uv pip install --upgrade llama-cpp-python.
Qwen 3.5 (architettura ibrida SSM): la wheel PyPI standard non basta β serve una build da source. Se ottieni
missing tensor 'blk.X.ssm_conv1d.weight'ounknown model architecture: 'qwen3', lancia:bash scripts/setup_ssm_build.sh. Lo script rileva il backend GPU, compila con iCMAKE_ARGScorretti (Metal/CUDA/ROCm/Vulkan) e aggiungellama_cpp_pythonabenchmark/.custom_packagescosì la build viene preservata dai sync futuri.
# Script di avvio (consigliato) β verifica prerequisiti, attiva il virtualenv e avvia
./start.sh # solo UI (default)
./start.sh api # solo REST API
./start.sh all # UI + API
# Oppure manualmente
uv run streamlit run app.pyL'app Γ¨ disponibile su http://localhost:8501
Vai su βοΈ Impostazioni β sezione Backend LLM:
- Backend:
llama.cpp (locale, zero-config)β giΓ selezionato di default - Percorso modello: il file
.ggufscaricato viene rilevato automaticamente
Alternativa Ollama: se preferisci Ollama, installalo (
brew install ollama), scarica un modello (ollama pull gemma3:12b), e selezionaOllama (locale)nelle impostazioni.
./start.sh # nessun servizio da avviare β llama.cpp Γ¨ integratoStessa procedura del Mac. llama.cpp supporta automaticamente GPU NVIDIA (CUDA) se i driver sono installati, e CPU con AVX2. Consigliata se vuoi evitare Docker.
-
Python >= 3.13 β verifica con
python3 --version. Su Ubuntu/Debian:sudo add-apt-repository ppa:deadsnakes/ppa && sudo apt install python3.13 python3.13-venv -
Git β
sudo apt install git -
curl β
sudo apt install curl
git clone https://github.com/drake69/spendif-ai.git spendifai
cd spendifaicurl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.bashrc # oppure riapri il terminaleuv synccp .env.example .env
# Il file .env non richiede modifiche per un'installazione locale standard# Scarica un modello GGUF (una tantum β scegli in base alla RAM):
# RAM >= 16 GB (consigliato):
uv run huggingface-cli download google/gemma-3-12b-it-GGUF gemma-3-12b-it-Q4_K_M.gguf \
--local-dir ~/.spendifai/models
# RAM 8 GB:
uv run huggingface-cli download Qwen/Qwen2.5-7B-Instruct-GGUF qwen2.5-7b-instruct-q4_k_m.gguf \
--local-dir ~/.spendifai/models
# RAM 4 GB:
uv run huggingface-cli download Qwen/Qwen2.5-3B-Instruct-GGUF qwen2.5-3b-instruct-q4_k_m.gguf \
--local-dir ~/.spendifai/modelsGPU su Linux: llama.cpp usa automaticamente CUDA se i driver NVIDIA sono installati. Per GPU AMD (ROCm):
CMAKE_ARGS="-DGGML_HIPBLAS=on" uv pip install llama-cpp-python --upgrade(richiederocm-devehipblas-dev).
Nota VRAM: se scarichi manualmente, scegli il modello in base alla VRAM della GPU, non alla RAM di sistema. Al primo avvio automatico, Spendif.ai rileva la VRAM via
nvidia-smi(NVIDIA) orocm-smi(AMD) e scarica il modello appropriato.
./start.sh # solo UI (default)
./start.sh api # solo REST API
./start.sh all # UI + APIL'app Γ¨ disponibile su http://localhost:8501
Vai su βοΈ Impostazioni β sezione Backend LLM:
- Backend:
llama.cpp (locale, zero-config)β giΓ selezionato di default - Percorso modello: rilevato automaticamente da
~/.spendifai/models/
Alternativa Ollama: installa con
curl -fsSL https://ollama.com/install.sh | sh, scarica un modello (ollama pull gemma3:12b), e selezionaOllama (locale)nelle impostazioni.
./start.sh # nessun servizio da avviareQuesta configurazione avvia due container:
-
spendifai_appβ l'applicazione web -
spendifai_ollamaβ il server LLM Ollama
git clone https://github.com/drake69/spendif-ai.git spendifai
cd spendifaicp .env.example .env
# Nessuna modifica necessaria per l'installazione baseInstalla il toolkit e decommenta le righe GPU in docker-compose.yml nella sezione ollama:
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart dockerPoi in docker-compose.yml decommenta:
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]docker compose --profile ollama up -dCon l'installazione one-liner (
install.sh) il modello viene scaricato automaticamente β questo step non Γ¨ necessario. Il comando sopra Γ¨ per installazioni da repository.
Nota: se hai usato
install.shcon AI locale, il download Γ¨ giΓ avviato in background dal containerollama-init. Controlla con:docker compose --project-directory ~/spendifai logs -f ollama-init
# ~8 GB di download, qualche minuto di attesa
docker compose exec ollama ollama pull gemma3:12b
# Versione piΓΉ leggera:
# docker compose exec ollama ollama pull gemma3:4bIl modello viene salvato nel volume Docker
spendifai_ollama_modelse persiste tra i riavvii. Non serve riscaricarlo.
Vai su βοΈ Impostazioni β sezione Backend LLM:
- Backend:
Ollama (locale) - URL:
http://ollama:11434β nome del servizio Docker, nonlocalhost - Modello:
gemma3:12b
docker compose --profile ollama down # stop
docker compose --profile ollama up -d # riavvio
docker compose logs -f # logs
docker compose exec ollama ollama list # modelli scaricatiSu Windows usiamo llama.cpp server come backend LLM perchΓ© funziona in Docker senza configurazioni GPU complesse ed Γ¨ compatibile con l'API OpenAI (giΓ supportata da Spendif.ai).
- Docker Desktop installato e avviato (backend WSL2)
- Git per Windows: https://git-scm.com/download/win
Apri PowerShell o Git Bash:
git clone https://github.com/drake69/spendif-ai.git spendifai
cd spendifaiScarica un file GGUF da HuggingFace. Consigliato per CPU:
| Modello | Dimensione | RAM necessaria |
|---|---|---|
| gemma-3-4b-it-Q4_K_M.gguf | ~2.5 GB | 6 GB |
| gemma-3-12b-it-Q4_K_M.gguf | ~7.5 GB | 12 GB |
Crea la cartella models e mettici il file scaricato:
mkdir models
# Sposta il file .gguf nella cartella models\copy .env.example .envApri .env e decommenta la riga LLAMA_MODEL con il nome del file scaricato:
LLAMA_MODEL=gemma-3-4b-it-Q4_K_M.ggufdocker compose --profile llama-cpp up -dIl primo avvio richiede qualche minuto (Docker scarica le immagini).
Vai su βοΈ Impostazioni β sezione Backend LLM:
- Backend:
OpenAI-compatible - URL:
http://llama-cpp:8080/v1β nome del servizio Docker, nonlocalhost - API Key:
none - Modello: nome del file GGUF senza
.gguf, es.gemma-3-4b-it-Q4_K_M
docker compose --profile llama-cpp down # stop
docker compose --profile llama-cpp up -d # riavvio
docker compose logs -f # logs
docker compose ps # stato container- Scarica LM Studio: https://lmstudio.ai
- Nella scheda Discover cerca e scarica
gemma-3-4b-it - Vai su Local Server β premi Start Server (porta
1234) - Avvia Spendif.ai con Docker normale (senza profile):
docker compose up -d - Nell'app βοΈ Impostazioni β Backend LLM:
- Backend:
OpenAI-compatible - URL:
http://host.docker.internal:1234/v1 - API Key:
lm-studio - Modello:
gemma-3-4b-it(o il nome mostrato in LM Studio)
- Backend:
Il database Γ¨ salvato nel volume Docker spendifai_data e persiste tra i riavvii e gli aggiornamenti dell'app.
Per backup, ripristino, spostamento su un altro computer e ispezione diretta β Guida database.
| Scenario | Comando |
|---|---|
| Mac nativo | ./start.sh |
| Linux nativo | ./start.sh |
| Linux + Ollama Docker | docker compose --profile ollama up -d |
| Windows + llama.cpp Docker | docker compose --profile llama-cpp up -d |
| Windows + LM Studio esterno | docker compose up -d |
Il modello va riscaricato ad ogni avvio? No. Viene salvato una volta sola:
- llama.cpp (nativo) β
~/.spendifai/models/ - Ollama nativo β
~/.ollama/models/ - Ollama Docker β volume
spendifai_ollama_models - llama.cpp Docker β cartella
./models/
Posso cambiare modello dopo il primo avvio?
SΓ¬. Vai in βοΈ Impostazioni e seleziona un modello diverso. Per llama.cpp scarica il nuovo GGUF in ~/.spendifai/models/. Per Ollama: ollama pull <modello> (nativo) o docker compose exec ollama ollama pull <modello> (Docker).
Posso usare OpenAI o Anthropic invece di un LLM locale?
SΓ¬. In βοΈ Impostazioni seleziona OpenAI o Anthropic e inserisci la API key. Nessun container LLM necessario.
L'URL del server LLM cambia tra installazione nativa e Docker? Sì:
- LLM nativo sull'host β
http://localhost:11434(o1234per LM Studio) - LLM in container Docker β usa il nome del servizio (
http://ollama:11434ohttp://llama-cpp:8080) - LLM sull'host, app in Docker β
http://host.docker.internal:11434
Posso fare il backup anche con l'installazione one-liner?
SΓ¬. L'installazione one-liner usa lo stesso volume Docker spendifai_data. β Guida database
Posso spostare i dati su un altro computer? SΓ¬. β Spostare il database
Come disinstallo Spendif.ai completamente? Usa lo script di disinstallazione interattivo:
curl -fsSL https://raw.githubusercontent.com/drake69/spendifai/main/installer/uninstall.sh | bash
# Windows:
# irm https://raw.githubusercontent.com/drake69/spendifai/main/installer/uninstall.ps1 | iexLo script chiede separatamente se rimuovere: database, modelli GGUF (~/.spendifai/models/), modelli Ollama, immagini Docker, cartella di installazione, e mostra le istruzioni per disinstallare Docker Desktop.