Metadata-Version: 2.4
Name: feral-ai
Version: 2026.6.25
Summary: FERAL — Open-source AI agent with computer use, GenUI, voice, hardware control, and persistent memory.
Author: Mahmoud Omar
Author-email: Alpay Kasal <info@feral.io>
License: Apache-2.0
Project-URL: Homepage, https://github.com/FERAL-AI/FERAL-AI
Project-URL: Issues, https://github.com/FERAL-AI/FERAL-AI/issues
Keywords: agent,ai,genui,voice,hardware,mcp,computer-use
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Requires-Dist: fastapi<0.137,>=0.115.0
Requires-Dist: python-multipart<1.0,>=0.0.9
Requires-Dist: uvicorn[standard]<1.0,>=0.30.0
Requires-Dist: pydantic<3.0,>=2.9.0
Requires-Dist: websockets<16.0,>=13.0
Requires-Dist: httpx<1.0,>=0.27.0
Requires-Dist: pyyaml<7.0,>=6.0
Requires-Dist: rich<15.0,>=13.0.0
Requires-Dist: InquirerPy<1.0,>=0.3.4
Requires-Dist: duckduckgo-search<9.0,>=6.0.0
Requires-Dist: html2text<2026.0,>=2024.2.26
Requires-Dist: pymupdf<2.0,>=1.24.0
Requires-Dist: numpy<3.0,>=1.24.0
Requires-Dist: Pillow<12.0,>=10.0.0
Requires-Dist: aiohttp<4.0,>=3.9.0
Requires-Dist: openai<2.0,>=1.50.0
Requires-Dist: PyJWT<3.0,>=2.8.0
Requires-Dist: prometheus-client<1.0,>=0.20
Requires-Dist: pyserial<4.0,>=3.5
Requires-Dist: aiosqlite<1.0,>=0.20.0
Requires-Dist: cryptography<47.0,>=41.0.0
Requires-Dist: pynacl<2.0,>=1.5.0
Requires-Dist: keyring<26.0,>=25.0
Requires-Dist: argon2-cffi<24.0,>=23.1
Requires-Dist: qrcode[pil]<9.0,>=7.4
Requires-Dist: pyobjc-framework-ApplicationServices<13.0,>=10.0; sys_platform == "darwin"
Requires-Dist: pyobjc-framework-Quartz<13.0,>=10.0; sys_platform == "darwin"
Provides-Extra: llm
Requires-Dist: openai<2.0,>=1.50.0; extra == "llm"
Requires-Dist: exa-py<3.0,>=1.0.0; extra == "llm"
Requires-Dist: numpy<3.0,>=1.24.0; extra == "llm"
Requires-Dist: Pillow<12.0,>=10.0.0; extra == "llm"
Requires-Dist: aiohttp<4.0,>=3.9.0; extra == "llm"
Provides-Extra: vec
Requires-Dist: sqlite-vec<1.0,>=0.1.1; extra == "vec"
Provides-Extra: memory-chroma
Requires-Dist: chromadb<2.0,>=0.5.0; extra == "memory-chroma"
Provides-Extra: memory-qdrant
Requires-Dist: qdrant-client<2.0,>=1.11.0; extra == "memory-qdrant"
Provides-Extra: groq
Requires-Dist: openai<2.0,>=1.50.0; extra == "groq"
Provides-Extra: local
Requires-Dist: llama-cpp-python<1.0,>=0.3.0; extra == "local"
Provides-Extra: wasm
Requires-Dist: wasmtime<50.0,>=22.0.0; extra == "wasm"
Provides-Extra: sync
Requires-Dist: zeroconf<1.0,>=0.131.0; extra == "sync"
Provides-Extra: discovery
Requires-Dist: zeroconf<1.0,>=0.131.0; extra == "discovery"
Provides-Extra: stt
Requires-Dist: faster-whisper<2.0,>=1.0.0; extra == "stt"
Provides-Extra: tts
Requires-Dist: piper-tts<2.0,>=1.2.0; extra == "tts"
Provides-Extra: wake
Requires-Dist: openwakeword<1.0,>=0.6.0; extra == "wake"
Requires-Dist: onnxruntime<2.0,>=1.16.0; extra == "wake"
Provides-Extra: desktop
Requires-Dist: pyautogui<1.0,>=0.9.54; extra == "desktop"
Provides-Extra: browser
Requires-Dist: playwright<2.0,>=1.40.0; extra == "browser"
Provides-Extra: mqtt
Requires-Dist: aiomqtt<3.0,>=2.0.0; extra == "mqtt"
Provides-Extra: observability
Requires-Dist: opentelemetry-sdk<2.0,>=1.20; extra == "observability"
Requires-Dist: opentelemetry-exporter-otlp-proto-http<2.0,>=1.20; extra == "observability"
Requires-Dist: prometheus-client<1.0,>=0.20; extra == "observability"
Provides-Extra: together
Requires-Dist: openai<2.0,>=1.50.0; extra == "together"
Provides-Extra: openrouter
Requires-Dist: openai<2.0,>=1.50.0; extra == "openrouter"
Provides-Extra: fireworks
Requires-Dist: openai<2.0,>=1.50.0; extra == "fireworks"
Provides-Extra: bedrock
Requires-Dist: boto3<2.0,>=1.34.0; extra == "bedrock"
Provides-Extra: channel-matrix
Requires-Dist: matrix-nio<1.0,>=0.24.0; extra == "channel-matrix"
Provides-Extra: channel-signal
Provides-Extra: channel-voice-call
Requires-Dist: twilio<11.0,>=9.0.0; extra == "channel-voice-call"
Provides-Extra: channel-feishu
Requires-Dist: lark-oapi<2.0,>=1.4.0; extra == "channel-feishu"
Provides-Extra: channel-zalo
Provides-Extra: all
Requires-Dist: openai<2.0,>=1.50.0; extra == "all"
Requires-Dist: exa-py<3.0,>=1.0.0; extra == "all"
Requires-Dist: numpy<3.0,>=1.24.0; extra == "all"
Requires-Dist: pyautogui<1.0,>=0.9.54; extra == "all"
Requires-Dist: Pillow<12.0,>=10.0.0; extra == "all"
Requires-Dist: aiohttp<4.0,>=3.9.0; extra == "all"
Requires-Dist: playwright<2.0,>=1.40.0; extra == "all"
Requires-Dist: wasmtime<50.0,>=22.0.0; extra == "all"
Requires-Dist: zeroconf<1.0,>=0.131.0; extra == "all"
Requires-Dist: onnxruntime<2.0,>=1.16.0; extra == "all"
Requires-Dist: rich<15.0,>=13.0.0; extra == "all"
Requires-Dist: faster-whisper<2.0,>=1.0.0; extra == "all"
Requires-Dist: piper-tts<2.0,>=1.2.0; extra == "all"
Requires-Dist: aiomqtt<3.0,>=2.0.0; extra == "all"
Requires-Dist: opentelemetry-sdk<2.0,>=1.20; extra == "all"
Requires-Dist: opentelemetry-exporter-otlp-proto-http<2.0,>=1.20; extra == "all"
Requires-Dist: prometheus-client<1.0,>=0.20; extra == "all"
Provides-Extra: dev
Requires-Dist: pytest<9.0,>=8.0.0; extra == "dev"
Requires-Dist: pytest-asyncio<1.0,>=0.24.0; extra == "dev"
Requires-Dist: pytest-cov<7.0,>=5.0.0; extra == "dev"
Requires-Dist: pytest-timeout<3.0,>=2.3.0; extra == "dev"
Requires-Dist: pytest-randomly<5.0,>=3.15.0; extra == "dev"
Requires-Dist: freezegun<2.0,>=1.4.0; extra == "dev"
Provides-Extra: demo
Requires-Dist: feral-demo-data<1.0,>=0.1.0; extra == "demo"

# FERAL Core (`feral-ai`)

FERAL Core is the Python runtime ("brain") for FERAL.

It provides:

- FastAPI + WebSocket orchestration runtime
- Tool, memory, and routing services
- Pairing + device access APIs
- Bundled `webui_v2` static client assets for dashboard startup

## Install

```bash
pip install "feral-ai[all]"
```

## Start

```bash
feral setup
feral start
```

Then open `http://localhost:9090`.

## Docs

- Main repo README: `../README.md`
- Mintlify docs: `../docs/mintlify`
- Hardware / HUP: `../docs/HARDWARE_ECOSYSTEM.md`, `../docs/mintlify/guides/hardware.mdx`
- Self-describing wire format: `hardware/protocol.py` (`HUP_ACTION_SCHEMA`, `device_manifest_from_capabilities`)
