Telegram, CLI, голосовое и GNOME GUI управление домашним ПК через локальную помощницу Нири.
- Telegram-бот живет на VPS.
- Домашний ПК держит reverse SSH на VPS.
- Обычный текст из Telegram уходит на домашний ПК.
- На домашнем ПК
jarvis-local.serviceзапускает Goose в headless режиме. - Основное имя ассистента: Niri / Нири.
- Старые команды
jarvis,/jarvis,/aiи wake wordджарвисоставлены как совместимые алиасы.
niri "какие сегодня уроки"
niri "запусти Steam"
niri "проверь процессы и скажи что грузит CPU"
niri --confirm <код>Старый CLI тоже работает:
jarvis "кто ты"Мини-окно Niri открывается по Super+N.
В окне есть:
- поле ввода запроса;
- статус Niri/provider;
- чистый финальный ответ без служебных шагов.
Команда запуска:
niri-guiГолосовое распознавание сейчас отключено. jarvis-voice.service замаскирован в user systemd и не слушает микрофон даже для wake word.
Большая Vosk-модель и Piper-голос удалены, чтобы не занимать память и диск. Управление Нири идет через Telegram, CLI и GNOME mini chat.
Расписание хранится локально:
niri_schedule.json
Запросы вроде этих открывают отдельное GTK-окно расписания:
какие сегодня уроки
что завтра по предметам
вчерашние уроки
уроки в понедельник
расписание звонков
В голосовом режиме Нири не зачитывает длинное расписание, а открывает окно и говорит коротко: Открыла расписание на сегодня.
В Telegram расписание не открывается GTK-окном. Нири отправляет адаптированный текст: день, список уроков, время, кабинет и учителя. Для звонков отправляет отдельный список по выбранному дню.
Команды:
niri-schedule --day today
niri-schedule --day tomorrow
niri-schedule --day monday
niri-schedule --bells
niri-schedule --bells --day fridayGUI-приложения нужно открывать через:
niri-open-app "Discord"Совместимый старый wrapper:
jarvis-open-app "Discord"Поддержаны алиасы для Steam, Counter-Strike 2, Subnautica 2, DDNet, GeoGuessr, Prism Launcher, Discord, Telegram, Chrome, VS Code, Files, Settings, Calculator, VLC, mpv, qBittorrent, Karing, System Monitor и других desktop apps.
Для арифметики агенту доступен локальный калькулятор:
niri-calc "2 + 2 * sqrt(9)"В prompt Нири явно указано использовать niri-calc или Python для точных вычислений, а не считать сложные выражения по памяти.
Домашний ПК:
systemctl status jarvis-local.service
journalctl -u jarvis-local.service -f
systemctl status niri-wol.service/wake в Telegram теперь работает через ESP32 wake bridge:
- VPS-бот ставит wake-запрос в очередь на
:8787. - ESP32 в домашнем Wi-Fi опрашивает VPS.
- Когда видит
WAKE, ESP32 отправляет Wake-on-LAN magic packet в локальную сеть192.168.3.255. - Домашний ПК просыпается по MAC из
esp32_wol_config.py.
На домашнем ПК niri-wol.service и sleep hook включают пробуждение для enp5s0 перед сном.
Проверка:
systemctl status niri-wol.service
cat /sys/class/net/enp5s0/device/power/wakeup
nmcli connection show "Проводное подключение 1" | grep wake-on-lanESP32 прошит MicroPython-скриптом:
./flash_esp32_wol /dev/ttyUSB0Файлы:
esp32_wol_config.py
esp32_wol_main.py
flash_esp32_wol
VPS:
systemctl status pcbot-vps.service
journalctl -u pcbot-vps.service -f
curl http://your-vps.example:8787/healthОпасные действия требуют подтверждения:
- root/sudo;
- установка пакетов;
- удаление файлов;
- chmod/chown;
- systemd;
- диски/mount;
- reboot/shutdown/suspend;
- kill/pkill/killall.
Подтверждение:
niri --confirm <код>или в Telegram:
/ai_confirm <код>
Goose запускается через локальный HTTP API 127.0.0.1:8765.
Primary provider может быть OpenRouter, fallback остается локальный Ollama qwen3:4b.
Проверка:
curl http://127.0.0.1:8765/health