Metadata-Version: 2.4
Name: ntrp
Version: 0.2.2
Summary: Personal AI assistant with persistent memory and multi-source knowledge integration
Project-URL: Repository, https://github.com/esceptico/ntrp
License: MIT
License-File: LICENSE
Requires-Python: >=3.13
Requires-Dist: aiohttp>=3.13.3
Requires-Dist: aiosqlite>=0.22.1
Requires-Dist: anthropic>=0.40.0
Requires-Dist: click>=8.0.0
Requires-Dist: exa-py>=2.0.2
Requires-Dist: fastapi>=0.115.0
Requires-Dist: google-api-python-client>=2.188.0
Requires-Dist: google-auth-oauthlib>=1.2.3
Requires-Dist: google-cloud-pubsub>=2.35.0
Requires-Dist: google-genai>=1.0.0
Requires-Dist: jinja2>=3.1.0
Requires-Dist: markdown>=3.7
Requires-Dist: numpy>=1.26.0
Requires-Dist: openai>=1.0.0
Requires-Dist: pydantic-settings>=2.12.0
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: rich>=13.0.0
Requires-Dist: sqlite-vec>=0.1.6
Requires-Dist: structlog>=24.0.0
Requires-Dist: telegramify-markdown>=0.5.4
Requires-Dist: tenacity>=9.0.0
Requires-Dist: uvicorn>=0.34.0
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Requires-Dist: ruff>=0.15.0; extra == 'dev'
Provides-Extra: gmail
Requires-Dist: google-api-python-client>=2.0.0; extra == 'gmail'
Requires-Dist: google-auth-oauthlib>=1.0.0; extra == 'gmail'
Description-Content-Type: text/markdown

# ntrp

**ntrp** is entropy – the measure of disorder in a system. Your calendar, emails, notes, browser tabs, half-remembered conversations – it all accumulates. This project exists to reduce it.

I built this for myself. ADHD and scattered attention meant I kept losing track of things (e.g. what I said, what I planned, what I was supposed to follow up on). So I made an assistant that hooks into my stuff and actually remembers.

![](docs/images/screen1.png)
![](docs/images/screen2.png)

## What it does

- **Persistent memory**: learns facts and patterns across conversations, consolidates them over time
- **Scheduled tasks**: morning briefings, daily reviews, health tracking – runs autonomously on a schedule
- **Connected sources**: Obsidian vault, Gmail, Google Calendar, browser history, web search (so far)
- **Shell access**: runs commands, manages files, sends emails
- **Any LLM**: Claude, GPT, Gemini built-in; OpenRouter, Ollama, vLLM, or any OpenAI-compatible endpoint via custom models

<details>
<summary>Memory</summary>

![](docs/images/memory.png)
</details>

<details>
<summary>Schedules</summary>

![](docs/images/schedules.png)
</details>

<details>
<summary>Connections</summary>

![](docs/images/sources.png)
</details>

## Quick start

```bash
git clone https://github.com/esceptico/ntrp.git
cd ntrp
uv sync
cd ntrp-ui && bun install && cd ..

cp .env.example .env
# Edit .env – set at least one LLM key, model variables, and NTRP_API_KEY

uv run ntrp serve              # backend
NTRP_API_KEY=<key> bun run ntrp-ui/src/index.tsx  # UI (separate terminal)
```

See [docs/setup.md](docs/setup.md) for Google OAuth, Telegram, Obsidian, custom models, Docker, and other integrations.

## Requirements

- Python 3.13+, [uv](https://docs.astral.sh/uv/)
- [Bun](https://bun.sh/) (terminal UI)
- At least one LLM provider API key

## Inspired by

- [opencode](https://github.com/nicepkg/opencode) – terminal UI
- [letta](https://github.com/letta-ai/letta) – persistent memory and personalized approach
- [hindsight](https://github.com/vectorize-io/hindsight) – graph memory structure

## Versioning

Pre-1.0: `0.minor.patch`. Minor bumps for new features (may be breaking), patch bumps for fixes. All changes go through PRs, except docs and minor non-code updates.

## License

MIT
