Open source journal backend

Your journal lives where your thoughts already are

Store, search, and reflect on your thoughts through any AI assistant. No app to open. No habit to build. Just conversation.

Your AI Assistant

I had a breakthrough today with the new API design. The recursive approach finally clicked.

I've saved your journal entry. Tagged it with #api-design and #breakthrough. Mood detected: excited.

Also, I want to remember that the key insight was treating each node as its own subproblem.

Added to today's entry. I also tagged it #recursion. You now have 12 entries this week.

Search my entries about recursion

Found 3 entries. You first wrote about recursion two weeks ago, frustrated with the base case. Today's entry shows real growth.

Show me the one where I was frustrated

From Feb 22: "I keep hitting infinite loops. The base case for tree traversal is eluding me. Taking a break." Mood was: frustrated. Tagged #recursion #debugging.

Reflect on my learning this month

Your journal tells a clear story: you've shifted from "learning by reading" to "learning by building." Frustration entries decreased by half while breakthrough entries tripled.

What should I focus on next?

Based on your entries, you keep circling back to system design but haven't gone deep yet. Your most energized entries are about architecture patterns — that might be your next rabbit hole.

Everything you need, nothing you don't

A journal backend that respects your data, your tools, and your workflow.

MCP-Native

Built from the ground up for AI assistants via Model Context Protocol. Journal by talking, not typing into an app.

Hybrid Search

Full-text BM25 + semantic vector search, fused with Reciprocal Rank Fusion. Find entries by meaning, not just keywords.

Self-Hosted

Docker Compose, one command. Your journal data never leaves your machine. Full ownership, zero cloud lock-in.

AI-Agnostic

Bring your own API key. Works with Anthropic, OpenAI, or local models via Ollama. Switch providers anytime.

Progressive Enhancement

Works with zero AI config — plain text and keyword search. Add API keys to unlock tagging, summaries, and semantic search.

Flexible Auth

Single API key for quick setup, or OAuth 2.1 with PKCE for MCP HTTP transport. No user management overhead.

Three steps to your journal

1

Deploy

terminal
$ git clone recto.git
$ cd recto
$ docker compose up -d
✓ Container recto-db      Started
✓ Container recto-api     Started
✓ Container recto-mcp     Started
✓ Container recto-proxy   Started
2

Connect

mcp-config.json
{
  "mcpServers": {
    "recto": {
      "url": "https://localhost/mcp",
      "headers": {
        "Authorization": "Bearer your-key"
      }
    }
  }
}
3

Journal

"I want to write about what I learned today..."

That's it. Your AI assistant handles the rest — creating entries, tagging, searching, and reflecting.

Architecture

A TypeScript monorepo with three focused packages.

@recto/api

REST API

Hono framework, Drizzle ORM, PostgreSQL with pgvector. Handles entries, search, tags, media, AI enrichment, and reflections.

@recto/mcp

MCP Server

The AI journaling interface. HTTP transport (Streamable HTTP). Tools for creating, searching, reflecting, and managing entries.

@recto/web

Web Dashboard

React + Vite + Tailwind CSS. Browse your timeline, entries, and tags. Manage instructions and prompt templates in Settings.

AI Assistants MCP API PostgreSQL

Start journaling in under a minute

Clone, start, connect. Your first journal entry is one conversation away.

terminal
$ git clone https://github.com/KristijanS99/recto.git
$ cd recto
$ docker compose up -d

# Recto is now running at https://localhost
# Add the MCP config to your AI assistant and start journaling.

Sneak peek

A glimpse at what's happening and what's next.

Planned

Entry attachments

Support file uploads to local storage instead of URL references only.

Planned

Multi-user support

Support multiple users with separate journal spaces and per-user API keys.

Planned

Structured logging

Add structured logging with configurable log levels across the entire system.