AMD Unicorn Track AI Dev Productivity MIT Licensed

Long-term memory
for software engineers.
Local-first on AMD ROCm.

A typed, decaying, graph-aware memory layer that listens to your coding sessions and persists what matters — preferences, recurring build errors, sprint goals, module ownership — across conversations and threads.

0
Cloud API calls by default
42
Files in submission
36
Passing tests
5
Memory categories

Your coding assistant forgets everything.

Every new chat starts from scratch. Preferences get re-stated, recurring build errors get re-debugged, sprint context evaporates between threads. The model is smart — it just has no memory.

devmem-agent — langgraph dev
you> I prefer vitest, 2-space YAML, ESM modules. Remember this.
agent> Stored memory abc-123 (category=preference, confidence=0.90)
you> What do you remember about my testing setup?
agent> You prefer vitest for testing — mentioned at project setup.
— cross-thread recall: the second question was in a brand-new conversation —

Three things the upstream template doesn't have.

Built as a fork of the LangChain memory-agent template (MIT, attributed), DevMemAgent adds typed memories, decay + confidence scoring, and a memory graph — running local-first on AMD ROCm.

category

Typed memory categories

Every memory is tagged preference, fact, event, goal, or relationship. Retrieval can filter by what the user is actually asking about — not just keyword match.

category=MemoryCategory.PREFERENCE
trending_down

Decay + confidence

Each memory carries a confidence score and optional TTL. A recency-weighted effective score re-ranks retrieved memories so stale or low-confidence facts naturally fade.

score = conf * (0.6 + 0.3*recency + 0.1*freq)
hub

Memory graph

Memories link via typed edges — depends_on, supersedes, contradicts, related_to, refines — so the agent can answer "what changed since X?" with graph-aware recall.

link_memories(a, b, "depends_on")

Local-first on AMD ROCm / Instinct.

No cloud calls, no data leaves the developer's machine. The Docker image is built from rocm/pytorch:6.3.2 with GPU passthrough wired through /dev/kfd and /dev/dri.

  • check_circleROCm 6.3.2 base image. Docker image built FROM rocm/pytorch:6.3.2-ubuntu-22.04-py311 with HIP and PyTorch pre-installed.
  • check_circleGPU passthrough. /dev/kfd and /dev/dri wired through in docker-compose.yml. AMD Instinct MI210 / MI250 / MI300X supported.
  • check_circleLocal-first LLM. Default models: ollama/llama3.1:8b for chat, ollama/bge-small-en for embeddings (384 dims). Both run entirely on-device.
  • check_circleCPU fallback. docker-compose.cpu.yml lets judges demo on any host — no AMD GPU required.
  • check_circleNo vendor lock-in. Cloud providers (OpenAI, Anthropic) wired as optional fallbacks for A/B quality comparison only.
# Dockerfile FROM rocm/pytorch:6.3.2-ubuntu-22.04-py311 # docker-compose.yml services: ollama: image: ollama/ollama:rocm devices: - /dev/kfd:/dev/kfd - /dev/dri:/dev/dri group_add: [render, video] app: build: . ports: ["8000:8000"] environment: - DEVMEM_CHAT_MODEL=ollama/llama3.1:8b - DEVMEM_EMBED_MODEL=ollama/bge-small-en - OLLAMA_BASE_URL=http://ollama:11434

Three commands. Two threads. One memory graph.

The full demo is reproducible with a single script. It walks through a multi-turn developer conversation, then starts a brand-new thread to prove cross-thread recall.

terminal — bash
$ git clone https://github.com/mlengineer44/devmen-agent.git
$ cd devmen-agent && cp .env.example .env
$ docker compose up -d # or add -f docker-compose.cpu.yml on non-AMD hosts
$ python examples/demo_conversation.py
═ THREAD 1 — learning about the project ═
you> I prefer vitest, 2-space YAML, ESM modules. Remember this.
agent> Stored memory (preference, conf=0.90)
you> Build broke again with "cannot find module ./graph". Remember this.
agent> Stored memory (event, conf=0.85, ttl=14 days)
you> Goal: ship v0.2 by end of quarter with memory-graph feature.
agent> Stored memory (goal, conf=0.95)
you> Alice owns auth module, Bob owns embeddings. Remember for code review.
agent> Stored memory (relationship, conf=0.90)
═ THREAD 2 — NEW conversation (cross-thread recall) ═
you> What do you remember about my testing setup?
agent> You prefer vitest for testing — mentioned at project setup.
you> Who owns the auth module?
agent> Alice owns the auth module; Bob owns the embeddings module.

Submission package.