Metadata-Version: 2.4
Name: kotoba-companion
Version: 0.10.0
Summary: An AI companion you can talk to, that can actually do things.
Author: Rodney Dhavid Jimenez Chacin
License-Expression: MIT
Project-URL: Homepage, https://github.com/rodhnin/kotoba-companion
Project-URL: Source, https://github.com/rodhnin/kotoba-companion
Keywords: ai,agent,companion,vtuber,live2d,voice,elevenlabs
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: THIRD_PARTY_NOTICES.md
Requires-Dist: aiosqlite>=0.20
Requires-Dist: cryptography>=42
Requires-Dist: httpx>=0.27
Requires-Dist: openai<3,>=2
Requires-Dist: python-dotenv>=1.0
Requires-Dist: PyYAML>=6.0
Provides-Extra: server
Requires-Dist: fastapi>=0.115; extra == "server"
Requires-Dist: pydantic>=2.9; extra == "server"
Requires-Dist: uvicorn[standard]>=0.32; extra == "server"
Provides-Extra: voice
Requires-Dist: websockets<18,>=16; extra == "voice"
Provides-Extra: mcp
Requires-Dist: mcp<2,>=1.27; extra == "mcp"
Provides-Extra: web
Requires-Dist: readability-lxml>=0.8.1; extra == "web"
Requires-Dist: lxml>=5.0; extra == "web"
Provides-Extra: cli
Requires-Dist: prompt_toolkit>=3.0.52; extra == "cli"
Requires-Dist: rich>=15; extra == "cli"
Requires-Dist: pillow>=10; extra == "cli"
Provides-Extra: discord
Requires-Dist: kotoba-companion[voice]; extra == "discord"
Requires-Dist: discord.py[voice]<3,>=2.7.1; extra == "discord"
Requires-Dist: numpy>=1.26; extra == "discord"
Provides-Extra: dev
Requires-Dist: kotoba-companion[cli,discord,mcp,server,voice,web]; extra == "dev"
Requires-Dist: pytest>=8; extra == "dev"
Requires-Dist: pytest-timeout>=2.3; extra == "dev"
Dynamic: license-file

# kotoba-companion

An AI companion you talk to out loud. She has an anime face that lip-syncs and changes expression,
real-time two-way voice, and a full agent underneath that runs **on your machine**: she searches the
web, remembers across sessions, runs code and shell commands behind an approval gate, and manages a
file library.

A browser, a terminal and a Discord bot are three front doors onto one engine — one database, one
memory, one file library.

## Install

```
pip install "kotoba-companion[server,voice,cli,web,mcp]"
kotoba setup
kotoba serve
```

The web interface ships already built inside the package, so running it needs no Node. Leaving `web`
out does not disable reading pages — it sends the addresses she reads to a public reader service
instead of fetching them here, which is rarely what somebody self-hosting wants.

The Discord bot is one extra more, since it pulls a voice stack most people running the browser app
never load:

```
pip install "kotoba-companion[discord]"
```

`kotoba setup` asks for the keys and stores them encrypted: an OpenAI or xAI key for the brain, and
an ElevenLabs key if you want her to speak. Python 3.11 or newer.

`kotoba doctor` explains anything that is missing, in the order that decides it.

Source, issues and documentation: <https://github.com/rodhnin/kotoba-companion> · MIT licence.
