Metadata-Version: 2.4
Name: pilot-daemon
Version: 0.10.1
Summary: AI-powered autonomous computer agent — full system control
License-Expression: MIT
Requires-Python: >=3.11
Requires-Dist: aiofiles>=24.1
Requires-Dist: aiosqlite>=0.20
Requires-Dist: caldav>=1.0.0
Requires-Dist: cryptography>=43.0
Requires-Dist: httpx>=0.27
Requires-Dist: icalendar>=5.0.0
Requires-Dist: keyring>=25.0
Requires-Dist: numpy==2.2.6
Requires-Dist: psutil>=5.9
Requires-Dist: pydantic>=2.6
Requires-Dist: scikit-learn>=1.3.0
Requires-Dist: tiktoken>=0.7
Requires-Dist: tomli-w>=1.0
Requires-Dist: tomli>=2.0; python_version < '3.12'
Requires-Dist: websockets>=13.0
Provides-Extra: all
Requires-Dist: beautifulsoup4>=4.12; extra == 'all'
Requires-Dist: chromadb>=0.5; extra == 'all'
Requires-Dist: easyocr>=1.7; extra == 'all'
Requires-Dist: faiss-cpu>=1.7.0; extra == 'all'
Requires-Dist: kokoro>=0.9.4; extra == 'all'
Requires-Dist: mediapipe>=0.10.11; extra == 'all'
Requires-Dist: openai-whisper>=20231117; extra == 'all'
Requires-Dist: opencv-python>=4.9.0.80; extra == 'all'
Requires-Dist: openpyxl>=3.1; extra == 'all'
Requires-Dist: paramiko>=3.4; extra == 'all'
Requires-Dist: pillow>=10.0; extra == 'all'
Requires-Dist: playwright>=1.40; extra == 'all'
Requires-Dist: pocket-tts>=1.0; extra == 'all'
Requires-Dist: pyautogui>=0.9; extra == 'all'
Requires-Dist: pynput>=1.7; extra == 'all'
Requires-Dist: pypdf>=4.0; extra == 'all'
Requires-Dist: pyperclip>=1.8; extra == 'all'
Requires-Dist: python-docx>=1.0; extra == 'all'
Requires-Dist: secretstorage>=3.3; (sys_platform == 'linux') and extra == 'all'
Requires-Dist: sentence-transformers>=2.2.0; extra == 'all'
Requires-Dist: soundcard>=0.4.3; (sys_platform == 'win32') and extra == 'all'
Requires-Dist: sounddevice>=0.4; extra == 'all'
Requires-Dist: soundfile>=0.12; extra == 'all'
Requires-Dist: wasmtime>=18.0; extra == 'all'
Requires-Dist: zeroconf>=0.131; extra == 'all'
Provides-Extra: automation
Requires-Dist: pillow>=10.0; extra == 'automation'
Requires-Dist: pyautogui>=0.9; extra == 'automation'
Requires-Dist: pyperclip>=1.8; extra == 'automation'
Provides-Extra: browser
Requires-Dist: playwright>=1.40; extra == 'browser'
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.5; extra == 'dev'
Provides-Extra: documents
Requires-Dist: beautifulsoup4>=4.12; extra == 'documents'
Requires-Dist: openpyxl>=3.1; extra == 'documents'
Requires-Dist: pypdf>=4.0; extra == 'documents'
Requires-Dist: python-docx>=1.0; extra == 'documents'
Provides-Extra: full
Requires-Dist: chromadb>=0.5; extra == 'full'
Requires-Dist: faiss-cpu>=1.7.0; extra == 'full'
Requires-Dist: pyperclip>=1.8; extra == 'full'
Requires-Dist: secretstorage>=3.3; (sys_platform == 'linux') and extra == 'full'
Requires-Dist: sentence-transformers>=2.2.0; extra == 'full'
Requires-Dist: zeroconf>=0.131; extra == 'full'
Provides-Extra: llamacpp
Requires-Dist: llama-cpp-python>=0.3; extra == 'llamacpp'
Requires-Dist: pynvml>=11.5; extra == 'llamacpp'
Provides-Extra: network
Requires-Dist: zeroconf>=0.131; extra == 'network'
Provides-Extra: pty
Requires-Dist: ptyprocess>=0.7; (sys_platform != 'win32') and extra == 'pty'
Provides-Extra: ssh
Requires-Dist: paramiko>=3.4; extra == 'ssh'
Provides-Extra: supervision
Requires-Dist: pynput>=1.7; extra == 'supervision'
Provides-Extra: vision
Requires-Dist: easyocr>=1.7; extra == 'vision'
Requires-Dist: mediapipe>=0.10.11; extra == 'vision'
Requires-Dist: opencv-python>=4.9.0.80; extra == 'vision'
Requires-Dist: pillow>=10.0; extra == 'vision'
Provides-Extra: voice
Requires-Dist: kokoro>=0.9.4; extra == 'voice'
Requires-Dist: openai-whisper>=20231117; extra == 'voice'
Requires-Dist: pocket-tts>=1.0; extra == 'voice'
Requires-Dist: soundcard>=0.4.3; (sys_platform == 'win32') and extra == 'voice'
Requires-Dist: sounddevice>=0.4; extra == 'voice'
Requires-Dist: soundfile>=0.12; extra == 'voice'
Provides-Extra: wasm
Requires-Dist: wasmtime>=18.0; extra == 'wasm'
Description-Content-Type: text/markdown

# Heliox OS Daemon

Python backend for the Heliox OS AI System Control Agent. Provides the agent system (Planner, Executor, Verifier, Code Sanitizer), security layer, and system interface modules.

See the [main README](../README.md) for full project documentation.

## SSH Agent (Remote Host Execution)

Heliox OS includes an optional `SshAgent` that can execute `ssh_command` / `ssh_script` actions on **pre-configured** remote hosts using Paramiko.

### Install

Install the optional SSH dependency set:

```bash
pip install "pilot-daemon[ssh]"
```

### Configure allowed hosts

In your `config.toml`, enable SSH and define allowed destinations (aliases only):

```toml
[ssh]
enabled = true
connect_timeout_seconds = 10
allowed_hosts = [
  { name = "prod-1", hostname = "10.0.0.10", port = 22, username = "ubuntu", private_key_provider = "ssh_prod_1_key", strict_host_key_checking = true },
]
```

### Store SSH keys in the KeyVault

Store the private key PEM in the encrypted vault using the JSON-RPC method `store_api_key` with `provider=<private_key_provider>`.

Notes:
- The vault stores arbitrary provider→secret strings; SSH keys are treated the same as API keys.
- Keys/passphrases are never logged and are only decrypted at call time.
