Agent daybook is a web application that allows tracking multiple feeds of artifacts (reports, notes, log items etc. etc.) - all the things that AI agents would be producing all day long.
Delete now moves an artifact to a recoverable Trash instead of hard-removing.
- Model: Artifact.deleted_at (nullable, indexed) = in Trash.
- Soft-delete everywhere: DELETE /api/artifacts/{id} sets deleted_at
(idempotent 204); session POST /a/{id}/delete for the feed's hover Delete
icon; POST /a/{id}/undelete restores; POST /feed/empty-trash purges.
- Trashed artifacts are off-quota (deleting frees quota) and eviction-protected
(never evicted early); hidden from feed, sources, counts, and all API reads
(list/detail/raw).
- Sidebar: "Deleted" and "Keep" system folders at the bottom (counts, hidden
when empty); ?folder=deleted / ?folder=keep views reuse the row rendering.
Deleted view has hover Undelete + an Empty Trash button. Keep = view over
is_kept. Live-poll disabled in folder views.
- Docs (api.md delete section, CLAUDE.md), 10 new/updated tests. 150 passing;
API soft-delete lifecycle verified live.
Purge is manual (Empty Trash) this release; auto purge-on-delete (background,
~3-day retention) is the planned fast-follow.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
||
|---|---|---|
| .claude/commands | ||
| artifacts | ||
| daybook_project | ||
| deploy | ||
| docs | ||
| issues | ||
| scripts | ||
| skills/agentfeed-posting | ||
| static | ||
| templates/artifacts | ||
| tests | ||
| .dockerignore | ||
| .gitignore | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| manage.py | ||
| README.md | ||
| requirements.txt | ||
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/skillreturns 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 requiresis_staff(thecreatesuperuseraccount has it). Seedocs/deployment.mdfor theis_superuservsis_staffdistinction 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.