The Briefing Settings section was removed during the briefing→journal migration but its data (locations, temp unit, prep schedule) is still read by the journal backend. There was no UI to set any of it, so weather couldn't render and prep timing wasn't tunable. Re-adds the missing config inside the existing Profile tab — it's all "about the user" data and a separate Journal tab would just clutter the sidebar. New sections: Locations (after Work Schedule) - Home and Work place-name inputs with on-blur geocoding via /api/journal/weather/geocode - Temperature unit toggle (Celsius / Fahrenheit) - Status messages distinguish ok / pending / error Journal (before What the Assistant Has Learned) - Daily prep auto-generate toggle - Prep generation hour:minute (24-hour input) - Day rollover hour (so 1–3am entries still count as the previous day) - All controls disable cleanly when prep is off Cleanup - Profile "About You" desc: "chat and briefings" → "chat and the daily journal" - Profile "Interests" desc: "personalise news and briefing context" → "personalise the journal's daily prep and chat responses" - Profile "Work Schedule" desc: "Helps the briefing" → "Helps the journal" - Profile "What the Assistant Has Learned" desc: clarifies the summary is included in the journal's system prompt; observations come from journal + chat (not briefing) - General "Timezone" desc: "schedule briefings" → "schedule the daily journal prep" - Removed the dead `.briefing-*` CSS block (~190 lines of styles for retired briefing UI: feed-row, slot-row, add-feed-form, etc.) and replaced with fresh `.location-row`, `.unit-toggle`, `.unit-btn`, `.checkbox-label`, `.time-row`, `.time-input`, `.geo-msg` rules used by the new sections. unit-btn.active uses Moss action-primary per Hybrid; tokens flow through the rest. The "What the Assistant Has Learned" section was confirmed load-bearing for the journal — `journal_pipeline.py:139` calls `build_profile_context()` which feeds learned_summary plus other profile fields into the journal's system prompt. Not a remnant. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Fabled Scribe
A self-hosted second brain and project management application with integrated LLM capabilities. Write, organise, and act on your notes and tasks with the help of a local AI assistant — all running on your own hardware.
Features
Notes and tasks with a Markdown editor, sub-tasks, milestones, and kanban project workspaces. AI chat with streaming responses, RAG over your notes, and tool use (web search, calendar, weather). A daily briefing that digests your tasks, RSS feeds, and weather on a schedule. Knowledge graph, per-user/group sharing, PWA with push notifications, an MCP server for external AI clients, and an Android companion app.
Quick Start
Prerequisites: Docker and Docker Compose. 8 GB+ RAM recommended for LLM inference.
Download docker-compose.quickstart.yml from this repo, then:
# Optional but recommended — set a secret key
export SECRET_KEY=your-random-secret-here
docker compose -f docker-compose.quickstart.yml up -d
Open http://localhost:5000. The first user to register becomes admin. Go to Settings → General to pull an LLM model — qwen3:8b or llama3.1:8b are good starting points.
GPU: Ollama runs CPU-only by default. See the comments in
docker-compose.quickstart.ymlto enable NVIDIA GPU passthrough.
Development: To build from source, see Development.
Documentation
| Doc | Contents |
|---|---|
| Architecture | Stack, design decisions, data models, key services |
| Configuration | Environment variables, Docker Compose, production setup, security |
| Features | Detailed feature breakdown and keyboard shortcuts |
| Development | Dev workflow, CI/CD, migrations, release process |
| API Keys & MCP | API key management and Fable MCP install guide |
| SSO / OAuth | OIDC setup for Authentik, Keycloak, and other providers |
| API Reference | All REST API endpoints |
| Android App | Flutter companion app architecture and feature status |
License
This project is privately maintained.