ROADMAP — OhnePapier v0.1

Project: OhnePapier v0.1 — Debian 13 GPU Stack
Granularity: Coarse
Total v1 Requirements: 12
Coverage: 12/12 (100%)


Phases

  • [ ] Phase 1: Core Stack — Full 6-service Docker Compose stack running on Debian 13 with Ollama containerized and GPU passthrough
  • [ ] Phase 2: AI Providers — Switchable AI provider layer (Ollama / Anthropic / OpenRouter) with per-document token cost logging
  • [ ] Phase 3: Install & Verify Scripts — Bash scripts to install prerequisites, generate config, and verify the live stack

Phase Details

Phase 1: Core Stack

Goal: The complete 6-service stack starts healthy on Debian 13 with a single command and no host-side dependencies
Depends on: Nothing (first phase)
Requirements: STACK-01, STACK-02, STACK-03, STACK-04, STACK-05
Success Criteria (what must be TRUE):
1. docker compose up -d on a fresh Debian 13 machine starts all 6 services (Paperless-ngx, PostgreSQL, Redis, paperless-ai, Ollama, Gitea) and all report healthy
2. Ollama responds to curl http://localhost:11434 from inside the Docker network using GPU (nvidia-smi visible inside the container)
3. Gitea is reachable on its mapped port; Paperless-ngx UI loads on port 8000 — no service requires anything running on the host outside Docker
Plans: 2 plans
Plans:
- [ ] 01-01-PLAN.md — Ollama (GPU-Passthrough) + Gitea als neue Dienste in docker-compose.yml
- [ ] 01-02-PLAN.md — Explizites Netz, Healthchecks, Sicherheitshaertung, docker-compose.env.template

Phase 2: AI Providers

Goal: Switching between local Ollama and cloud LLM providers is a single env-var change, and every cloud call logs its token cost
Depends on: Phase 1
Requirements: AI-01, AI-02, AI-03, AI-04
Success Criteria (what must be TRUE):
1. Setting AI_PROVIDER=anthropic (or openrouter) in docker-compose.env and restarting paperless-ai causes documents to be processed via that provider — no config file edits required
2. A document processed via Anthropic or OpenRouter produces a log entry recording model name, tokens in, tokens out, and estimated cost in USD
3. Default configuration (AI_PROVIDER=ollama) uses no external network calls and no API keys are required
Plans: TBD

Phase 3: Install & Verify Scripts

Goal: A developer or sysadmin can go from a bare Debian 13 machine to a running, verified stack using only the provided bash scripts
Depends on: Phase 1, Phase 2
Requirements: SCRIPT-01, SCRIPT-02, SCRIPT-03
Success Criteria (what must be TRUE):
1. Running ./setup.sh on a fresh Debian 13 machine installs Docker, nvidia-container-toolkit, and clones/starts the stack — or exits early with a clear error if a prerequisite is missing
2. Running ./verify.sh against a live stack reports pass/fail for each service (containers healthy, Ollama GPU accessible, Paperless API responding, Gitea reachable) and exits non-zero on any failure
3. Running ./setup.sh --init-config generates a valid docker-compose.env from the template by prompting for secrets, with safe defaults pre-filled for non-secret values
Plans: TBD


Progress Table

Phase Plans Complete Status Completed
1. Core Stack 0/2 Planned -
2. AI Providers 0/? Not started -
3. Install & Verify Scripts 0/? Not started -

Coverage Map

Requirement Phase Description
STACK-01 Phase 1 docker compose up runs full stack on Debian 13
STACK-02 Phase 1 Ollama containerized with NVIDIA GPU passthrough
STACK-03 Phase 1 Gitea container in Compose network
STACK-04 Phase 1 Existing services (Paperless, PostgreSQL, Redis, paperless-ai) retained
STACK-05 Phase 1 All services communicate via Docker internal network
AI-01 Phase 2 AI provider switchable via env var
AI-02 Phase 2 Anthropic API as drop-in alternative
AI-03 Phase 2 OpenRouter API as drop-in alternative
AI-04 Phase 2 Token usage logged per document for cloud providers
SCRIPT-01 Phase 3 setup.sh checks prerequisites and installs stack
SCRIPT-02 Phase 3 verify.sh tests live stack health
SCRIPT-03 Phase 3 setup.sh generates docker-compose.env from template