diff --git a/README.md b/README.md index 28d1b6c..a329927 100644 --- a/README.md +++ b/README.md @@ -4,30 +4,26 @@ A self-hosted second brain and project management application with integrated LL ## Features -- **Notes** — Markdown editor (Tiptap), wikilinks, backlinks, tags, version history, AI writing assist -- **Tasks** — Status, priority, due dates, sub-tasks, milestones, work logs -- **Projects** — Kanban view, milestone progress, three-panel project workspace (tasks / chat / notes) -- **AI Chat** — SSE streaming, RAG, tool calls (create/update content, search web, check weather, calendar) -- **Daily Briefing** — Scheduled digest of tasks, calendar, weather, and RSS; interactive follow-up conversation -- **Knowledge Graph** — D3 force-directed graph of all notes and tags -- **Sharing** — Share projects and notes with users or groups at viewer/editor/admin permissions -- **Fable MCP** — MCP server for Claude and other clients to read/write your data via API keys -- **PWA** — Installable, push notifications, web and Android companion app +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`](docker-compose.quickstart.yml) from this repo, then: + ```bash -git clone https://git.fabledsword.com/bvandeusen/FabledAssistant.git -cd FabledAssistant -cp .env.example .env # Edit .env to set SECRET_KEY -docker compose up --build +# 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. +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. -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.yml` to enable NVIDIA GPU passthrough. + +> **Development:** To build from source, see [Development](docs/development.md). ## Documentation diff --git a/docker-compose.quickstart.yml b/docker-compose.quickstart.yml new file mode 100644 index 0000000..a5a294f --- /dev/null +++ b/docker-compose.quickstart.yml @@ -0,0 +1,82 @@ +# Fabled Assistant — Quick Start +# +# No build required. Pulls the latest pre-built image from the registry. +# +# Usage: +# 1. Download this file +# 2. docker compose -f docker-compose.quickstart.yml up -d +# 3. Open http://localhost:5000 — the first account registered becomes admin +# 4. Go to Settings → General to pull an LLM model (qwen3:8b or llama3.1:8b are good starting points) +# +# Set SECRET_KEY via environment variable or a .env file alongside this file: +# SECRET_KEY=your-random-secret-here + +services: + app: + image: git.fabledsword.com/bvandeusen/fabledassistant:latest + ports: + - "5000:5000" + environment: + DATABASE_URL: "postgresql+asyncpg://fabled:fabled@db:5432/fabledassistant" + SECRET_KEY: "${SECRET_KEY:-change-me-in-production}" + OLLAMA_URL: "http://ollama:11434" + OLLAMA_MODEL: "${OLLAMA_MODEL:-llama3.1:8b}" + LOG_LEVEL: "${LOG_LEVEL:-INFO}" + volumes: + - app_data:/data + depends_on: + db: + condition: service_healthy + ollama: + condition: service_healthy + restart: unless-stopped + healthcheck: + test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:5000/api/health')"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 30s + + db: + image: postgres:16-alpine + volumes: + - pgdata:/var/lib/postgresql/data + environment: + POSTGRES_USER: fabled + POSTGRES_PASSWORD: fabled + POSTGRES_DB: fabledassistant + healthcheck: + test: ["CMD-SHELL", "pg_isready -U fabled"] + interval: 10s + timeout: 5s + retries: 5 + restart: unless-stopped + + ollama: + image: ollama/ollama + volumes: + - ollama_models:/root/.ollama + environment: + OLLAMA_MAX_LOADED_MODELS: "2" + OLLAMA_KEEP_ALIVE: "30m" + OLLAMA_FLASH_ATTENTION: "1" + healthcheck: + test: ["CMD-SHELL", "ollama list > /dev/null 2>&1"] + interval: 30s + timeout: 10s + retries: 5 + start_period: 15s + restart: unless-stopped + # Uncomment to enable NVIDIA GPU passthrough (requires nvidia-container-toolkit): + # deploy: + # resources: + # reservations: + # devices: + # - driver: nvidia + # count: all + # capabilities: [gpu] + +volumes: + app_data: + pgdata: + ollama_models: