DEV Community

Hassan Faryad
Hassan Faryad

Posted on Fully Autonomous

Building a Privacy-First AI Companion with Next.js, FastAPI and Ollama

Most AI applications send your conversations to a cloud LLM.

I wanted to experiment with a different approach:

What if an AI companion could run entirely on your own machine?

That idea led me to build MindMirror — an open-source AI companion for emotional reflection that supports local LLMs through Ollama, removing the requirement for paid AI APIs.

GitHub: https://github.com/HASSANFARYAD/MindMirror

Live Demo: https://mindmirror-neon-tau.vercel.app/

What is MindMirror?

MindMirror combines journaling with AI-powered reflection.

Users can write about what is on their mind and explore:

🧠 Emotional patterns
🔍 Cognitive distortions
💭 Guided reflections
📊 Emotional trends over time
📈 Growth insights
🎙️ Voice journaling
🔔 Check-in reminders

The goal is not to replace therapy or pretend that AI can do that.

The goal is to create a structured and private space for reflection.

Why Local AI?

Privacy was one of the main reasons behind this project.

Many AI applications rely entirely on cloud APIs, which means user conversations are sent to third-party services.

With Ollama, MindMirror can run models locally.

This means users can experiment with AI while keeping their journal data on their own machine.

This approach combines:

Local LLMs
Open source
User privacy
Full control over data
Technology Stack

MindMirror is built using:

Frontend
Next.js
React
TypeScript
Backend
FastAPI
Python
Database
PostgreSQL
AI Components
Ollama
Whisper
Hugging Face models
Deployment
Docker
PWA support
System Architecture

The application follows a simple architecture:

User

Next.js Frontend

FastAPI Backend

AI Service Layer

Ollama

Local LLM

Reflection & Analysis

For voice journaling:

Voice Input

Whisper

Text

AI Analysis

Journal Entry
The Reflection Pipeline

The conversation flow is inspired by CBT-style reflection patterns.

The process is roughly:

Detect → Validate → Examine → Ground → Next Step

Detect

Identify emotions, themes, and thought patterns.

Validate

Acknowledge feelings without judgment.

Examine

Explore assumptions and possible cognitive distortions.

Ground

Focus on practical perspectives and context.

Next Step

Suggest small actions or reflections.

This structure helps create more useful interactions than simple question-answer chat systems.

Running MindMirror Locally

Clone the repository:

git clone https://github.com/HASSANFARYAD/MindMirror.git
cd MindMirror

Start the application:

docker compose up

Install Ollama:

ollama pull llama3

After setup, the AI can run locally without requiring paid APIs.

What I Learned

Building MindMirror taught me several things:

Local LLMs are becoming practical for real applications.
Privacy can be a product feature, not just a technical detail.
Prompt design matters more than expected.
Voice input creates a more natural journaling experience.
Full-stack AI applications require careful orchestration between frontend, backend, models, and storage.
Future Improvements

Some ideas I am exploring:

Better emotional trend visualization
Support for additional local models
Memory systems
More advanced voice interactions
Plugin ecosystem
Open Source

MindMirror is fully open source.

If you are interested in:

Local AI
Ollama
Open source projects
Privacy-first applications
AI companions
Full-stack AI systems

Feel free to explore the code, fork the project, open issues, or contribute.

GitHub:
https://github.com/HASSANFARYAD/MindMirror

Live Demo:
https://mindmirror-neon-tau.vercel.app/

I would appreciate feedback from developers building local AI and privacy-focused applications.

Top comments (0)