All projects

Nova AI

A companion that keeps one long conversation going, remembers what matters about you and runs entirely on your own machine.

Kind
Local companion with long-term memory
Year
2026
Built with
  • Python
  • TypeScript
  • FastAPI
  • Next.js
  • PostgreSQL
  • ChromaDB
  • 5 more

The question

What would it take for a conversation with an AI to still make sense a year later?

Nova keeps one conversation going with one person. It remembers events, feelings, people and goals, forgets low-value detail on purpose, and lets you read, correct or delete anything it holds.

Why it exists

Most chat assistants forget. They fake continuity with a long context window and a prompt, and sooner or later the emotional thread breaks and the relationship starts over. Nova is built to hold one coherent, time-aware conversation with one person for a very long time.

How it works

What happens to one message

  1. 1

    Safety scan

    A crisis scan reads the message first, beside everything else. No later step can delay it, and it keeps its result even if one fails.

  2. 2

    Perceive

    The hour, the gap since you last wrote and how you typed become soft descriptions such as "late evening". The model never sees a raw timestamp.

  3. 3

    Recall

    Up to three memories are picked by meaning, feeling, recency and importance. If none fit, the reply is told not to invent one.

  4. 4

    Understand

    One model call reads the emotion and the intent together and settles on one of eight conversation modes.

  5. 5

    Draft

    The mode decides which route the message takes.

    Casual
    One planning step writes the reply.
    Emotional or complex
    A planner drafts the content, then a refiner adjusts warmth and tone, and key claims are compared with the draft afterwards.
    A tool request
    The tool step handles it instead, and asks you to confirm before anything with side effects runs.
  6. 6

    Guardrails

    Ethical checks may rewrite the draft. If a crisis is confirmed, the reply is replaced by a response built from a fixed list of helplines, never from the model.

  7. 7

    Deliver

    The reply is shaped to your format and length, paced, streamed and, if you ask, spoken. In a crisis it goes out as plain prose.

What Nova does after the reply

  1. 1

    Write

    Only now is the turn stored as an event. Recalled memories are reinforced, and the records about the relationship, the people you mention and your goals are updated.

  2. 2

    Consolidate

    Every two hours a job checks whether 50 new events, 25 sessions or 14 days have passed. If so, it merges clusters of similar old events into facts and lets low-value ones fade. Nothing is erased outright; items are archived.

  3. 3

    Reach out

    Every 30 minutes a pass may queue a message, such as a goal check-in or a thread you mentioned. Quiet hours and frequency limits decide whether it is sent, and during the first weeks Nova only observes.

  4. 4

    Look back

    Once a week it builds a weekly chapter. A pattern is named only after at least three occurrences, and with no model available a summary stays factual.

Decisions

  • Safety goes first, and nothing can gate it

    The crisis scan runs before any other step. A crisis is confirmed if the scan or the emotion classifier says so, and the response is then replaced outright. The most severe tier fires at the lowest confidence (0.60) and the mildest needs the most (0.80), so the system errs towards acting.

  • The model gets plain words, not scores

    Timestamps become labels like "yesterday evening", and feeling and recall scores become plain-language directions. The model is not handed numbers it could quote back to you.

  • Recall counts feeling, not only meaning

    Emotional closeness carries 30% of a memory's score, so a heavy mood tends to bring back memories that match it. That is a design decision, not a filter.

  • Plan the content, then adjust the tone

    The planner adds no emotional language and the refiner may not change the facts. Splitting the two keeps warmth from rewriting what is true.

  • The pipeline only sequences

    The orchestrator holds no logic of its own. Every layer is passed in, so the whole backend suite runs against fakes with no database or model server.

  • Forgetting is on purpose and reversible

    Old events are archived with their lineage kept, and a deletion you ask for first shows what depends on the item, then removes it and returns a signed receipt.

Evidence

  • Tested1,663passing backend tests

    1,663 backend tests passed in a fresh run in about 20 seconds. They include whole-turn tests for a casual message, an emotional one, the crisis override, the first weeks, memory consolidation and sync across devices.

CaveatThere are no measurements of conversation quality, memory accuracy or response time. The project records test counts and design targets, not results.

  • Built

    All 13 layers are wired through one conversation pipeline, with a REST and streaming API, scheduled background jobs, and a 15-page web app in four lights that follow the hour.

  • Tested

    Browser tests run accessibility checks across the web app. This is stated by the project; the browser suite needs the live stack and was not run here.

Trade-offs and limits

  • Single user with no authentication. The API trusts whoever can reach it, so it is meant to stay on localhost.
  • Memory sits in PostgreSQL and the vector store as plain text. Tampering is detectable and deletion is real, but encryption at rest is designed, not deployed.
  • Reply quality is bounded by a 7B local model. A larger model is one setting away.
  • Nova is not a therapist, a doctor or an emergency service. Crisis detection is best effort and has not been clinically validated.

Not built yet

  • Accounts or authentication
  • Encryption at rest
  • Voice-prosody input
  • Calendar, email, reminders, notes and search that reach real services
  • A WebSocket connection (streaming uses server-sent events)

Built with

Languages

  • Python
  • TypeScript

Frameworks and libraries

  • FastAPI
  • Next.js16

Data and storage

  • PostgreSQL
  • ChromaDB

AI and models

  • Ollama
  • Qwen2.5
  • Gemma2
  • Kokoro

Infrastructure and services

  • Docker