AI-powered Linux/Windows diagnostics and repair – audio, hardware, system issues
Project description
___ _ ___ ____
/ _(_)_ __ / _ \/ ___|
| |_| \ \/ / | | | \___ \
| _| |> < | |_| |___) |
|_| |_/_/\_\ \___/|____/
AI-powered OS Diagnostics
fixOS v2.2.6 🔧🤖
AI Cost Tracking
- 🤖 LLM usage: $7.5000 (125 commits)
- 👤 Human dev: ~$2603 (26.0h @ $100/h, 30min dedup)
Generated on 2026-05-04 using openrouter/qwen/qwen3-coder-next
AI diagnostyka i naprawa systemów – Linux, Windows, macOS
z anonimizacją danych, trybem HITL/Autonomous, grafem problemów i 12 providerami LLM.
🔗 GitHub: https://github.com/wronai/fixos
🌍 Cross-Platform Support
| System | Package Manager | Audio | Hardware | System |
|---|---|---|---|---|
| Linux (Fedora, Ubuntu, Arch, Debian) | dnf / apt / pacman | ✅ ALSA/PipeWire/SOF | ✅ DMI/sensors | ✅ systemd/journal |
| Windows 10/11 | winget / choco | ✅ WMI Audio | ✅ WMI Hardware | ✅ Event Log |
| macOS 12+ | brew | ✅ CoreAudio | ✅ system_profiler | ✅ launchd |
Szybki start (3 kroki)
# 1. Instalacja
pip install -e ".[dev]"
# 2. Wybierz provider i pobierz klucz API
fixos llm # lista 12 providerów z linkami
# 3. Zapisz klucz i uruchom
fixos token set AIzaSy... # Gemini (darmowy, domyślny)
fixos fix
Komendy CLI
fixos – ekran powitalny z listą komend i statusem
fixos fix – diagnoza + sesja naprawcza z AI (HITL)
fixos scan – diagnostyka systemu bez AI
fixos cleanup – skanuj i czyść dane usług (Docker, npm, pip, ...)
fixos cleanup --full – pełny audit systemu + dev projects
fixos orchestrate – zaawansowana orkiestracja (graf problemów DAG)
fixos llm – lista 12 providerów LLM + linki do kluczy API
fixos token set KEY – zapisz klucz API do .env (auto-detekcja providera)
fixos token show – pokaż aktualny token (zamaskowany)
fixos token clear – usuń token z .env
fixos config show – pokaż konfigurację
fixos config init – utwórz .env z szablonu
fixos config set K V – ustaw wartość w .env
fixos providers – skrócona lista providerów
fixos test-llm – testuj połączenie z LLM
Przykłady użycia
# Tylko diagnostyka audio + zapis do pliku
fixos scan --audio --output /tmp/audio-report.json
# Analiza i interaktywne czyszczenie zajętości dysku
fixos fix --disc
# Pełny audit systemu (DNF, Docker, Flatpak, dev projects)
fixos cleanup --full --dry-run
# Usuń tylko foldery venv z projektów
fixos cleanup --full
> type:venv
# Usuń duże elementy (>1 GB)
fixos cleanup --full
> large
# Interaktywny wybór elementów do usunięcia
fixos cleanup --full
> select
> 1,3,5-10
# Napraw audio i thumbnails (HITL – pyta o potwierdzenie)
fixos fix --modules audio,thumbnails
# Tryb autonomiczny (agent sam naprawia, max 5 akcji)
fixos fix --mode autonomous --max-fixes 5
# Zaawansowana orkiestracja z grafem zależności
fixos orchestrate --dry-run
# Pokaż tylko darmowe providery LLM
fixos llm --free
# Ustaw Groq jako provider (ultra-szybki, darmowy)
fixos token set gsk_... --provider groq
fixos fix --provider groq
# Timeout 30 minut
fixos fix --timeout 1800
Przykładowy widok w terminalu (Czyszczenie dysku)
Wyjście jest zoptymalizowane pod standardowy Markdown bez nadmiernej ilości symboli Unicode, ułatwiając czytelność i wklejanie:
$ fixos fix --disk --dry-run
___ _ ___ ____
/ _(_)_ __ / _ \/ ___|
| |_| \ \/ / | | | \___|
| _| |> < | |_| |___) |
|_| |_/_/\_\ \___/|____/
AI-powered OS Diagnostics • v2.0.0
Konfiguracja:
Tryb: DRY-RUN (komendy nie będą wykonywane)
Analiza dysku: Włączona
Analizowanie zajętości dysku...
Dysk: 93.9% zajęty (1759.0GB / 1873.7GB)
Można bezpiecznie zwolnić: 0.7GB w 3 akcjach
Diagnostyka gotowa.
Plan czyszczenia dysku:
🔢 Akcje: 8
Miejsce: 262255.3 GB
Bezpieczne: 0.7 GB
📂 Kategorie: 6
Cache Files:
📁 Akcje: 1
Miejsce: 0.6 GB
Clear application cache (0.6GB)
Temporary Files:
📁 Akcje: 1
Miejsce: 0.1 GB
Clean system_temp temporary files (0.1GB)
Rekomendacje:
🎯 Cache Cleanup Recommended
Clear application cache to free 0.6 GB
🎯 Log Files Can Be Cleaned
Clean old logs to free 0.7 GB
Tryb DRY-RUN - żadne akcje nie zostaną wykonane
🤖 Dostępni Providerzy LLM (12)
| # | Provider | Tier | Model domyślny | Klucz API |
|---|---|---|---|---|
| 1 | gemini | 🟢 FREE | gemini-2.5-flash | aistudio.google.com |
| 2 | openrouter | 🟢 FREE | openai/gpt-4o-mini | openrouter.ai/settings/keys |
| 3 | mistral | 🟢 FREE | mistral-small-latest | console.mistral.ai |
| 4 | groq | 🟢 FREE | llama-3.1-8b-instant | console.groq.com/keys |
| 5 | together | 🟢 FREE | llama-3.2-11B | api.together.ai |
| 6 | cohere | 🟢 FREE | command-r | dashboard.cohere.com |
| 7 | cerebras | 🟢 FREE | llama3.1-8b | cloud.cerebras.ai |
| 8 | ollama | 🟢 LOCAL | llama3.2 | ollama.com/download |
| 9 | openai | 💰 PAID | gpt-4o-mini | platform.openai.com |
| 10 | anthropic | 💰 PAID | claude-3-haiku | console.anthropic.com |
| 11 | xai | 💰 PAID | grok-beta | console.x.ai |
| 12 | deepseek | 💰 PAID | deepseek-chat | platform.deepseek.com |
fixos llm # pełna lista z opisami i gotowymi komendami
fixos llm --free # tylko darmowe
Tryby agenta
👤 Human-in-the-Loop (HITL) – domyślny
LLM sugeruje → Ty decydujesz → Skrypt wykonuje
fixos [00:58:42] ❯ 1 ← napraw problem nr 1
fixos [00:58:30] ❯ A ← napraw wszystkie
fixos [00:58:20] ❯ !systemctl status pipewire ← własna komenda
fixos [00:58:10] ❯ search sof-firmware lenovo ← szukaj zewnętrznie
fixos [00:57:55] ❯ D ← opisz własny problem
fixos [00:57:40] ❯ ? ← zapytaj o szczegóły
fixos [00:57:30] ❯ q ← zakończ
Wyjście koloryzowane: 🔴 krytyczne / 🟡 ważne / 🟢 drobne, bloki kodu z ramkami box-drawing.
🤖 Autonomous – agent działa samodzielnie
fixos fix --mode autonomous --max-fixes 10
- Protokół JSON:
{ "action": "EXEC|SEARCH|SKIP|DONE", "command": "...", "reason": "..." } - Zabezpieczenia: lista zabronionych komend (
rm -rf /,mkfs,fdisk,dd if=...) - Każde
EXEClogowane z wynikiem i oceną LLM - Wymaga jawnego
yesna starcie
🎼 Orchestrate – graf problemów (DAG)
fixos orchestrate
fixos orchestrate --dry-run # podgląd bez wykonywania
- Buduje graf zależności między problemami
- Po każdej naprawie re-diagnozuje i wykrywa nowe problemy
- LLM ocenia wynik każdej komendy (JSON structured output)
🔒 Anonimizacja danych
Zawsze pokazywana przed wysłaniem do LLM. Maskowane kategorie:
| Kategoria | Przykład | Zamiennik |
|---|---|---|
| Hostname | moj-laptop |
[HOSTNAME] |
| Username | jan |
[USER] |
| Ścieżki /home | /home/jan/.pyenv/versions/3.12/bin/python |
/home/[USER]/... |
| Adresy IPv4 | 192.168.1.100 |
192.168.XXX.XXX |
| Adresy MAC | aa:bb:cc:dd:ee:ff |
XX:XX:XX:XX:XX:XX |
| Tokeny API | sk-abc123... |
[API_TOKEN_REDACTED] |
| UUID hardware | a1b2c3d4-... |
[UUID-REDACTED] |
| Numery seryjne | SN: PF1234567 |
Serial: [SERIAL-REDACTED] |
| Hasła w env | PASSWORD=secret |
PASSWORD=[REDACTED] |
Moduły diagnostyki
| Moduł | Linux | Windows | macOS | Co sprawdza |
|---|---|---|---|---|
system |
✅ | ✅ | ✅ | CPU, RAM, dyski, usługi, aktualizacje, SELinux, firewall |
audio |
✅ | ✅ | ✅ | ALSA/PipeWire/SOF (Linux), WMI Audio (Win), CoreAudio (Mac) |
thumbnails |
✅ | ➖ | ➖ | ffmpegthumbnailer, cache, GNOME gsettings |
hardware |
✅ | ✅ | ✅ | DMI/WMI/system_profiler, BIOS, GPU, czujniki, bateria |
security |
✅ | ✅ | ✅ | Firewall, otwarte porty, SELinux/AppArmor, SSH config, fail2ban, SUID |
resources |
✅ | ✅ | ✅ | Co zajmuje dysk, top procesów CPU/RAM, autostart, OOM events |
# Tylko bezpieczeństwo
fixos scan --modules security
# Zasoby – co zajmuje dysk i pamięć
fixos scan --modules resources
# Pełna diagnostyka z naprawą
fixos fix --modules system,security,resources
Zewnętrzne źródła wiedzy (fallback)
Gdy LLM nie zna rozwiązania, fixos szuka automatycznie w:
- Fedora Bugzilla – baza zgłoszonych błędów
- ask.fedoraproject.org – forum społeczności
- Arch Wiki – doskonałe źródło dla ogólnych problemów Linux
- GitHub Issues – PipeWire, ALSA, linux-hardware repos
- DuckDuckGo – ogólne wyszukiwanie (bez klucza API)
- Google via SerpAPI – najlepsze wyniki (opcjonalny klucz
SERPAPI_KEY)
Konfiguracja (.env)
fixos config init # utwórz .env z szablonu
fixos config show # sprawdź aktualną konfigurację
LLM_PROVIDER=gemini # gemini|openai|openrouter|groq|mistral|...
GEMINI_API_KEY=AIzaSy... # klucz Gemini (darmowy)
AGENT_MODE=hitl # hitl|autonomous
SHOW_ANONYMIZED_DATA=true # pokaż dane przed wysłaniem
ENABLE_WEB_SEARCH=true # fallback do zewnętrznych źródeł
SESSION_TIMEOUT=3600 # timeout sesji (1h)
SERPAPI_KEY= # opcjonalny – lepsze wyniki wyszukiwania
Testy i Docker
Uruchomienie testów
# Wszystkie testy jednostkowe (bez API, szybkie)
pytest tests/unit/ -v
# Testy e2e z mock LLM
pytest tests/e2e/ -v
# Tylko testy z prawdziwym API (wymaga tokena w .env)
pytest tests/e2e/ -v -m real_api
# Pokrycie kodu
pytest --cov=fixos --cov-report=html
make test-coverage
Docker – symulowane środowiska
# Zbuduj wszystkie obrazy
docker compose -f docker/docker-compose.yml build
# Scenariusze broken
docker compose -f docker/docker-compose.yml run broken-audio
docker compose -f docker/docker-compose.yml run broken-thumbnails
docker compose -f docker/docker-compose.yml run broken-network
docker compose -f docker/docker-compose.yml run broken-full
# Uruchom testy e2e w Dockerze
docker compose -f docker/docker-compose.yml run e2e-tests
Środowiska Docker
| Obraz | Scenariusz |
|---|---|
fixos-broken-audio |
Brak sof-firmware, PipeWire failed, no ALSA cards |
fixos-broken-thumbnails |
Brak thumbnailerów, pusty cache, brak GStreamer |
fixos-broken-network |
NetworkManager failed, DNS broken, rfkill blocked |
fixos-broken-full |
Wszystkie problemy naraz + pending updates + failed services |
Struktura projektu
fixos/
├── fixos/
│ ├── cli.py # Komendy CLI (Click) – fixos, fix, scan, llm, ...
│ ├── config.py # Konfiguracja + 12 providerów LLM
│ ├── platform_utils.py # Cross-platform (Linux/Win/Mac)
│ ├── agent/
│ │ ├── hitl.py # HITL z koloryzowanym markdown output
│ │ └── autonomous.py # Tryb autonomiczny z JSON protokołem
│ ├── diagnostics/
│ │ └── system_checks.py # Moduły: system, audio, thumbnails, hardware
│ ├── fixes/
│ │ ├── knowledge_base.py # Baza znanych bugów z heurystykami
│ │ └── heuristics.py # Matcher diagnostics → known fixes
│ ├── orchestrator/
│ │ ├── graph.py # Graf problemów (DAG)
│ │ ├── executor.py # Bezpieczny executor komend
│ │ └── orchestrator.py # Główna pętla orkiestracji
│ ├── providers/
│ │ └── llm.py # Multi-provider LLM client
│ └── utils/
│ ├── anonymizer.py # Anonimizacja z raportem
│ └── web_search.py # Bugzilla/AskFedora/ArchWiki/GitHub/DDG
├── tests/
│ ├── conftest.py # Fixtures + mock diagnostics
│ ├── e2e/
│ │ ├── test_audio_broken.py
│ │ ├── test_thumbnails_broken.py
│ │ ├── test_network_broken.py
│ │ ├── test_executor.py
│ │ └── test_cli.py
│ └── unit/
│ ├── test_core.py
│ ├── test_anonymizer.py
│ └── test_executor.py
├── docker/
│ ├── base/Dockerfile
│ ├── broken-audio/Dockerfile
│ ├── broken-thumbnails/Dockerfile
│ ├── broken-network/Dockerfile
│ └── broken-full/Dockerfile
├── .env.example
├── pytest.ini
└── pyproject.toml
📋 Roadmap
Zobacz pełną listę zadań i roadmap w pliku TODO.md
🚀 Jak używać fixOS (Prosty przewodnik)
Krok 1: Instalacja
pip install -e ".[dev]"
Krok 2: Konfiguracja
# Utwórz plik .env z szablonu
fixos config init
# Ustaw klucz API (darmowy Gemini)
fixos token set AIzaSy...
# Lub wybierz innego providera
fixos llm --free # pokaż darmowe providery
Krok 3: Użycie
# Zobacz dostępne komendy
fixos
# Diagnostyka systemu (bez AI)
fixos scan
# Naprawa z AI (pyta o potwierdzenie)
fixos fix
# Naprawa automatyczna (bez pytania)
fixos fix --mode autonomous --max-fixes 5
Przydatne przykłady
# Tylko audio
fixos fix --modules audio
# Zapisz wynik do pliku
fixos scan --output raport.json
# Timeout 30 minut
fixos fix --timeout 1800
# Podgląd orkiestracji
fixos orchestrate --dry-run
🔗 Linki
- GitHub: https://github.com/wronai/fixos
- Pełna dokumentacja: TODO.md
Licencja
Apache License 2.0 – see LICENSE for details.
License
Licensed under Apache-2.0.
Author
Tom Sapletta
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 fixos-2.2.26.tar.gz.
File metadata
- Download URL: fixos-2.2.26.tar.gz
- Upload date:
- Size: 226.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ab76b4b1c9c91c28147d94545b254b88471a8bcfe333109a9b0702b714be069
|
|
| MD5 |
79e318ae38a8a01af24a5ef040703f51
|
|
| BLAKE2b-256 |
f11ba899896f0ced658a08f14aa7063202be722583ed746cae7dde8ff35d824d
|
File details
Details for the file fixos-2.2.26-py3-none-any.whl.
File metadata
- Download URL: fixos-2.2.26-py3-none-any.whl
- Upload date:
- Size: 208.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ddcde0723b6fb7d1f6db4cce75d8decde9c871c4e17699c9d1a08d3afc287be1
|
|
| MD5 |
b84c9b09a1bb7aab2745b91fc778f593
|
|
| BLAKE2b-256 |
ce53d2ca05838c092f2053abb48c49bdce8cf9202deb0bbeaa3c15ba418af280
|