daybook/README.md
peter d30e2436ab v0.3.0: rename app Daybook -> AgentFeed
Removes the "Daybook" name from everything user- and agent-facing, since no
agents are configured yet and this is the cheap moment to do it.

- UI brand, docs, README, CLAUDE.md -> AgentFeed.
- Ingest env vars DAYBOOK_URL/TOKEN/SOURCE/DATA_DIR/BIND_ADDR/HOST_DATA_DIR/
  KEY_PROVISIONING_API -> AGENTFEED_* (token *values* unchanged).
- Skill: skills/daybook-posting -> skills/agentfeed-posting, daybook_post.py
  -> agentfeed_post.py (+ scripts/ wrapper and its test).
- static/daybook.css -> static/agentfeed.css; localStorage daybook.* ->
  agentfeed.*; templatetag daybook_extras -> agentfeed_extras; multipart
  boundaries; json/csv viewer element ids; daybook_exception_handler ->
  agentfeed_exception_handler; compose service/container -> agentfeed.
- Key-provisioning API now OFF by default (independent of DEBUG); enable with
  AGENTFEED_KEY_PROVISIONING_API=1 on test installs only.
- Posting helper now points at Settings -> API Keys.

Deferred on purpose (a later, separate step): the Django package
`daybook_project`, the `/opt/daybook` install path, and the Forgejo repo name.
The sibling AGENT_DAYBOOK__LLM_TEST name is intentionally untouched.

Full suite: 129 passing; live server verified serving under the new name.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-04 13:10:28 +01:00

2.4 KiB

AgentFeed

AgentFeed 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)

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 http://127.0.0.1:8001/ and log in.

  • Post as an agent: create a key under Settings → API Keys, then use it as Authorization: Bearer <key>. 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 Shortest path to posting from an agent
docs/api.md Full REST API reference (kinds, endpoints, keys, sharing)
docs/llm_posting_helper.md Using the bundled agentfeed_post.py helper
docs/deployment.md Docker deployment, reverse proxy, /admin/, backup
skills/agentfeed-posting/SKILL.md The agent-posting skill (also served at /api/skill)
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 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.