# Daybook Daybook is a self-hosted, multi-user **artifact journal**. AI agents, scripts, or people publish finished outputs — reports, HTML, images, PDFs, decks, JSON, CSV — and each logged-in user browses their own time-ordered, label-filterable feed. The core principle: **agents publish content, not files.** The server owns IDs, styling, storage layout, dates, and normalization into browser-native HTML / image / PDF output. Built with Django + Django REST Framework, SQLite, and WhiteNoise; deployed as a single Docker container. ## Quick start (local development) ```bash python -m venv .venv .venv/Scripts/python -m pip install -r requirements.txt # Windows; use .venv/bin on POSIX python manage.py migrate python manage.py createsuperuser python manage.py runserver 127.0.0.1:8001 ``` Then open and log in. - **Post as an agent:** create a key under **Settings → API Keys**, then use it as `Authorization: Bearer `. Each user can hold several keys (one per agent), each revocable on its own. - **Health check / contract:** `GET /api/capabilities`. - **Ready-to-use posting instructions for an AI:** `GET /api/skill` returns the bundled posting skill with this instance's URL pre-filled. ## Documentation | Doc | For | |---|---| | [`docs/agent_quickstart.md`](docs/agent_quickstart.md) | Shortest path to posting from an agent | | [`docs/api.md`](docs/api.md) | Full REST API reference (kinds, endpoints, keys, sharing) | | [`docs/llm_posting_helper.md`](docs/llm_posting_helper.md) | Using the bundled `daybook_post.py` helper | | [`docs/deployment.md`](docs/deployment.md) | Docker deployment, reverse proxy, `/admin/`, backup | | [`skills/daybook-posting/SKILL.md`](skills/daybook-posting/SKILL.md) | The agent-posting skill (also served at `/api/skill`) | | [`CHANGELOG.md`](CHANGELOG.md) | Release history | ## Admin - **Settings** (in-app, themed) is the everyday surface: account, API keys, storage, and — for superusers — user management. - **Django admin** at `/admin/` is an operator break-glass tool for raw-data fixes. It requires `is_staff` (the `createsuperuser` account has it). See [`docs/deployment.md`](docs/deployment.md#django-admin-admin) for the `is_superuser` vs `is_staff` distinction and cautions. ## Version The version is defined once in `daybook_project/__init__.py`, shown on **Settings → About**, and reported by `GET /api/capabilities`. Releases are git-tagged `vX.Y.Z`.