WIP: Anima integration — workspace daemon that pulls session transcripts from Seshat via Anima queue API #272
Draft
toasterson
wants to merge 2 commits from
claude/wi-019db1bd-anima-integration-workspace-daemon-that into main
pull from: claude/wi-019db1bd-anima-integration-workspace-daemon-that
merge into: toasterson:main
toasterson:main
toasterson:claude/wi-019fa8f0-adr-081-s0-pay-the-r2-empirical-bet-prob
toasterson:claude/wi-019f90cc-p26-5-wire-the-neural-bridge-into-the-in
toasterson:claude/wi-019f90cc-p27-2-tripleverbalizer-kg-triples-divers
toasterson:ptah/hip-qwen2-device-gating
toasterson:claude/wi-019fa44f-sessions-on-one-akh-still-serialise-on-t
toasterson:claude/wi-019fff96-periodic-snapshots-have-failed-390-day-s
toasterson:claude/wi-019fe620-dispatch-trap-triage-as-an-agent-tool-po
toasterson:claude/wi-019dd0c5-phase-42b-longmemeval-locomo-harness-wit
toasterson:claude/wi-019f90cb-p26-4-neural-vsa-encoder-project-layer-n
toasterson:claude/wi-019fdd22-the-learn-on-new-triples-trigger-fires-4
toasterson:docs/babysit-lane-skill
toasterson:claude/wi-019f90cb-p26-3-polarquant-kv-cache-compression-in
toasterson:claude/wi-019fa8eb-wi-4-diagnostics-provider-dispatched-bla
toasterson:claude/wi-019fa8f0-librarian-consolidation-is-ungated-unbat
toasterson:claude/wi-019fe636-sleep-relocate-leave-the-akh-advisory-lo
toasterson:claude/wi-019fe260-any-acp-call-against-a-non-resident-work
toasterson:fix/upstream-mcp-initialized
toasterson:fix/librarian-cloud-endpoint
toasterson:feat/curation-tasks
toasterson:feat/wake-on-open-hydration
toasterson:feat/exec-none-backend
toasterson:fix/chart-workspace-seed-initcontainer
toasterson:feat/chart-akh-declarative-config
toasterson:claude/wi-019fe1b4-the-akhomed-image-ships-no-protoc-so-eve
toasterson:feat/local-drop-launchdaemon
toasterson:archive/wi-019fa44f-rebased-onto-main
toasterson:claude/wi-019fdd21-ci-never-builds-the-akh-medu-crate-it-on
toasterson:claude/wi-019fa83d-compile-feedback-lints-the-whole-workspa
toasterson:claude/wi-019fbe82-the-akh-emits-tool-activity-as-prose-in
toasterson:claude/wi-019fbf62-phase-44n-context-rot-curve-bench-per-mo
toasterson:claude/wi-019fcce4-per-turn-dispatch-mode-akh-dispatch-mode
toasterson:agent/e138bd65c5aa
toasterson:claude/wi-019fcd3d-akhomed-on-arm64-should-run-pvc-less-in
toasterson:claude/wi-019fce1e-kg-delete-shipped-with-zero-tests-a-dang
toasterson:claude/wi-019f579f-add-kg-delete-triple-delete-capability-t
toasterson:claude/wi-019e480e-mcp-crud-endpoints-for-agent-goals-expos
toasterson:claude/wi-019fba6a-turn-completion-waits-for-the-sink-refco
toasterson:claude/wi-019fcbb6-wire-remotebackend-into-akhomed-the-48c
toasterson:claude/wi-019dcaac-phase-38i-otlp-tracing-skeleton-first-oo
toasterson:claude/wi-019dcaad-phase-38j-otlp-metrics-seshat-instrument
toasterson:claude/wi-019dcaad-phase-38k-otel-logs-to-alloy-w3c-trace-p
toasterson:archive/2026-08-03-38i-pre-reset
toasterson:claude/wi-019fb9d6-panic-in-the-turn-completion-path-tokio
toasterson:claude/wi-019fba6a-the-agentic-loop-wedges-when-the-model-r
toasterson:claude/wi-019fb9d7-a-turn-can-receive-bytes-for-57-minutes
toasterson:claude/wi-019fb44f-the-watchdog-is-blind-while-the-model-ge
toasterson:claude/wi-019fb44f-a-turn-goes-silent-after-its-work-is-don
toasterson:archive/wi-019fa44f-sessions-on-one-akh-still-serialise-on-t
toasterson:claude/wi-019faa3e-a-reset-upstream-stream-drops-the-turn-i
toasterson:claude/wi-019f85d6-wave-r2-ownership-autostart-owner-host-c
toasterson:claude/wi-019f85d6-wave-w1-ritual-genesis-pantheon-packs-di
toasterson:claude/wi-019f85d7-wave-w2-the-wizard-akh-onboard-verbs-akh
toasterson:claude/wi-019f85d7-wave-w4-render-tier-psyche-render-pipeli
toasterson:claude/wi-019f85d6-wave-r1-config-spine-config-crate-typed
toasterson:archive/2026-07-28-wave-r2-ownership-autostart-owner-host-c
toasterson:archive/2026-07-28-wave-w4-render-tier-psyche-render-pipeli
toasterson:archive/2026-07-28-wave-w2-the-wizard-akh-onboard-verbs-akh
toasterson:archive/2026-07-28-wave-w1-ritual-genesis-pantheon-packs-di
toasterson:archive/2026-08-03-38j-pre-reset
toasterson:archive/2026-08-03-38k-pre-reset
toasterson:claude/wi-019dc599-phase-39-distributed-inference-fabric-ll
toasterson:claude/wi-019dc57a-replace-continuous-learning-wikipedia-wi
toasterson:claude/adr-094-operating-guidance
toasterson:claude/wi-019dd0c6-phase-42c-drawer-ingest-path-embed-worke
toasterson:claude/wi-019f9f56-sessions-report-the-wrong-work-item-teac
toasterson:claude/agent-sandbox-workspace-root
toasterson:claude/wi-019f9a1e-17-work-items-frozen-since-2026-07-23-ag
toasterson:claude/wi-019f85d6-wave-r4-akh-doctor-read-only-7-sections
toasterson:claude/wi-019f85d7-wave-w3-birth-extras-procedural-avatar-f
toasterson:claude/wi-019f85d6-wave-r3-akhadvertisement-akh-daemon-akhs
toasterson:claude/wi-019f85b9-adversarial-review-distributed-inference
toasterson:claude/wi-019f85ba-adversarial-review-mcp-tools-kg-operatio
toasterson:claude/wi-019f8589-wi-3-session-registry-akh-session-list-i
toasterson:claude/wi-019f8589-wi-2-implement-peer-dispatch-in-delegati
toasterson:claude/wi-019f85b9-adversarial-review-heka-long-term-memory
toasterson:claude/wi-019f85b9-adversarial-review-observability-stack-3
toasterson:claude/wi-019e2501-define-fluent-infrastructure-home-state
toasterson:claude/cool-carson-b63ef4
toasterson:feat/macmini
toasterson:claude/wi-019db054-phase-36-delegation-external-scheduling
toasterson:claude/wi-019db054-phase-32-llm-knowledge-extraction
toasterson:claude/wi-019db054-phase-30-procedural-skills
toasterson:claude/wi-019db054-phase-28-n-akh-semantic-router
toasterson:claude/wi-019db054-phase-24-sensory-grounding
toasterson:claude/wi-019db054-phase-23-affective-system
toasterson:claude/wi-019db054-phase-27-live-kg-llm-training
toasterson:claude/wi-019db054-phase-26-llm-vsa-deep-integration
toasterson:claude/wi-019db054-release-alpha-kubernetes-deployment
toasterson:claude/wi-019e3397-bug-infer-rules-creates-indiscriminate-p
toasterson:claude/wi-019dbc03-bootstrap-embedding-nlu-llm-models-via-o
toasterson:claude/wi-019db054-phase-20-active-inference
toasterson:claude/wi-019dd0c7-phase-42h-cross-tool-bridge-daemon-opena
toasterson:claude/wi-019dd0c6-phase-42g-akhipedia-auto-extraction-from
toasterson:claude/wi-019e5982-akhomed-migrate-from-redb-to-postgres-fo
toasterson:claude/wi-019e481e-mcp-provenance-filter-find-triples-by-de
toasterson:claude/wi-019e481d-bounded-snapshot-mcp-workspace-snapshot
toasterson:claude/wi-019dd122-phase-41i-unified-trace-envelope-joining
toasterson:claude/wi-019dd122-phase-41h-ooda-thinkingloop-integration
toasterson:claude/wi-019dd121-2026-04-28-synthesis-prompt-plan-tool-ca
toasterson:claude/wi-019dd0c6-phase-42f-akh-awakening-per-tool-init-cl
toasterson:claude/wi-019dd0c6-phase-42e-heka-mcp-server-8-tools-rememb
toasterson:claude/wi-019dd0c6-phase-42d-hybrid-retrieval-pgvec-vsa-kg
toasterson:claude/wi-019dd0c5-phase-41-the-thinking-engine-unified-thi
toasterson:claude/wi-019dc9c9-phase-39a-llmbackend-trait-candlelocal-i
toasterson:claude/wi-019dc9c9-phase-38a-workspace-entity-lifecycle-loa
toasterson:claude/wi-019dc614-custom-cnpg-image-bake-with-age-pgvector
toasterson:claude/wi-019dc599-phase-38-relocatable-session-based-akh-w
toasterson:claude/wi-019db054-phase-35-t5-training-infrastructure
toasterson:claude/wi-019db054-phase-34-communicative-intelligence
toasterson:claude/wi-019db054-phase-29-capability-exposure
toasterson:claude/wi-019e26ba-bug-byte-index-panic-on-utf-8-boundary-i
toasterson:claude/wi-019e1598-high-fix-agent-memory-rs-456-byte-index
toasterson:claude/wi-019e3b34-fix-akhomed-llm-integration-for-teacher
toasterson:claude/wi-019e4909-ennead-agents-lack-proper-identity-no-ri
toasterson:claude/wi-019e4909-vsa-symbols-never-grounded-ground-symbol
toasterson:claude/wi-019e3eb9-ground-vsa-symbols-in-tecton-workspace-a
No reviewers
Labels
Clear labels
No items
No labels
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
toasterson/akh-medu!272
Loading…
Reference in a new issue
No description provided.
Delete branch "claude/wi-019db1bd-anima-integration-workspace-daemon-that"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Anima work item
019db1bd-0f30-72b1-a481-b58319de0447.Cross-project work item: Akh-Medu side of docs/design/2026-04-21-document-system.md (in the Anima repo). Corresponds to Phase PA5.
Anima writes LLM session transcripts directly to Seshat (not to akh-medu) and exposes a queue API for akh-medu workspaces to pull them on their own cadence:
Auth: Bearer PAT scoped
akhmedu.read,akhmedu.write, single-workspace. Anima provisions + rotates this PAT; helm values inject it.Implement in akh-medu:
daemon_start/daemon_statusMCP tools). Per-workspace schedule: poll every 10 min (configurable per workspace via a new ADR / plan).seshat_searchor the archive fetch when available)/libraryingest pipeline against the workspace (parser → chunker → NLU → VSA → triples)mark_graphedback to Anima with the doc-root symbol id + countsAcceptance (as verifiable from the Anima side):
documentsrow hasakhmedu_graphed_atset andakhmedu_symbol_idpopulated.provenance_of(symbol_id)in the relevant workspace returns the document's extraction chain.References: docs/design/2026-04-21-document-system.md §7 (session-transcript pull-loop), §14 (PA5). Blocks the closing of Anima A4's loop.
2026-06-04 21:20 UTCSummary
Create a background daemon in Akh-Medu that periodically pulls ungraphed session transcripts from Anima's API, retrieves their content from Seshat, orchestrates them through the existing ingestion pipeline, and updates Anima with the extracted fact metrics.
Approach
Extend Akh-Medu's workspace TOML parser to read the new
[anima-integration]config block. Implement an Anima HTTP client using the configured environment variable token to poll theGET .../ungraphed_documentsendpoint on the specified interval. Integrate this polling loop into Akh-Medu's existing daemon subsystem, adding state to handle cold starts (chunking into batches of 50 with a 1-second pause). For each retrieved document, download the text via the local Seshat client, process it through the/libraryingest pipeline (parser → chunker → NLU → VSA → triples) utilizing bounded concurrency (max 4 in-flight), and implement exponential backoff for transient failures. Upon successful pipeline execution, fire a callback using thePOST .../mark_graphedAnima endpoint with the resultingakhmedu_symbol_id,facts_added, andfacts_updated.Files likely to change
src/config/workspace.rs(guess)src/clients/anima.rs(guess)src/daemon/anima_pull.rs(guess)src/daemon/mod.rs(guess)Open questions
/libraryingest pipeline already return distinctfacts_addedversusfacts_updatedcounts, or will the pipeline need to be modified to surface these metrics?Complexity
M: Modifying the config schema, building a new external API client with auth, coordinating bounded async ingestion with rate limits, and hooking into the daemon lifecycle involves moderate complexity spanning 1-3 days.
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.