Skip to main content

Personal AI assistant with persistent memory and multi-source knowledge integration

Project description

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.

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
Memory

Schedules

Connections

Quick start

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 for Google OAuth, Telegram, Obsidian, custom models, Docker, and other integrations.

Requirements

  • Python 3.13+, uv
  • Bun (terminal UI)
  • At least one LLM provider API key

Inspired by

  • opencode – terminal UI
  • letta – persistent memory and personalized approach
  • 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ntrp-0.3.2.tar.gz (2.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ntrp-0.3.2-py3-none-any.whl (196.2 kB view details)

Uploaded Python 3

File details

Details for the file ntrp-0.3.2.tar.gz.

File metadata

  • Download URL: ntrp-0.3.2.tar.gz
  • Upload date:
  • Size: 2.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ntrp-0.3.2.tar.gz
Algorithm Hash digest
SHA256 661b9bdb24f65a6f176eda711b835572c22d20f4828c3fb4e2e8e12328cec9e7
MD5 32cf1ad4a6c3c465d18134194936192b
BLAKE2b-256 de74cdce218780f8e8a1832f1983edf59e9a07edcf66162ad98d954ec8f2722a

See more details on using hashes here.

Provenance

The following attestation bundles were made for ntrp-0.3.2.tar.gz:

Publisher: publish-backend.yml on esceptico/ntrp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ntrp-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: ntrp-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 196.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ntrp-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 670d4d6e5b1e422229d9773dc4da674e5526d1448aaacf723420c00fc787078a
MD5 02e1bc464f9b285cb20e734313c31cf6
BLAKE2b-256 aa006b7d76a9c87831911aa18fe125f100c64c73199a6cea46e7a9603de47f09

See more details on using hashes here.

Provenance

The following attestation bundles were made for ntrp-0.3.2-py3-none-any.whl:

Publisher: publish-backend.yml on esceptico/ntrp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page