lkjagent is a docs-driven, memory-centric personal librarian agent. The repository treats docs/ as the only source of truth and regenerates code/, data/, and the root automation layer from markdown blueprints.
- a single-user, long-running process with background worker agents
- a browser dashboard with
Console,Feed,Tasks,Agents,RAM, andConfigpages - chunked large-input processing with parallel workers and proactive progress/completion updates
- RAM/STORAGE-based agent state with parent, intake, curator, and worker-pool roles
/status,/ram,/search,/export,/config,/models,/feed,/agents,/tasks,/task, and/help- a docs-first rebuild and verify workflow
- Copy
.env.exampleto.envif you want local Docker Compose defaults. - Run
make rebuildto materialize artifacts fromdocs/. - Run
make verifyandmake test. - Start the process with
make run. - Open the printed browser URL, or use the local terminal session for commands.
- Normal messages queue into background jobs. Very large inputs are split into parallel chunks, and progress lands in the dashboard feed without waiting for another user turn.
- The default runtime starts
16worker slots and16autonomous background agents. They share a global16-request model budget, and low-priority autonomy leaves room for foreground user work.
- External LM Studio: set
LOCAL_LLM_ENDPOINTtohttp://host.docker.internal:1234/v1or your LAN IP, then rundocker compose up --build. - Bundled vLLM service: keep
LOCAL_LLM_ENDPOINT=http://local-llm:8000/v1, then rundocker compose --profile bundled-llm up --build. - The app publishes
${WEB_SERVER_PORT:-8080}so a browser can connect to the hosted dashboard. LOCAL_LLM_TIMEOUT_SECSnow defaults to0, which disables socket timeouts.- The default autonomy loop runs every
8seconds across16background agents. - Workers and autonomy share the same
global_parallelismrequest budget, and autonomy uses low-priority slots so user tasks are not starved. - Edit
data/config/request-template.jsonwhen you want to control the full OpenAI-compatible JSON request body.
docs/: canonical source of truth, schemas, prompts, and rebuild instructionscode/: Rust workspace containinglkjagentandrepoctldata/: mounted runtime state root (ram/,storage/,config/,cache/,logs/,exports/)
/status: process state, active agents, recent autonomous activity, queue summary/ram [agent]: RAM body plus provenance/search QUERY: RAM first, STORAGE second/export [profile]: exportdefault,full-snapshot, ortranscript-pack/config: effective runtime paths, chunking, endpoint, timeout, worker count, and web settings/models: list models advertised by the configured OpenAI-compatible endpoint/feed: inspect the asynchronous user/agent/progress feed/agents: inspect agent state and RAM/activity previews/tasks: list recent queued, running, synthesizing, failed, and completed tasks/task ID: inspect one task in detail/help: command sheet
Blueprint files live under docs/blueprints/generated/files/. repoctl rebuild --root . rewrites every non-doc artifact declared there. repoctl verify --root . checks README coverage, rebuild drift, and the 300-line rule.
See docs/README.md for the full map.