You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/data/blog/agentic-memory-helix.md
+25-25Lines changed: 25 additions & 25 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,7 +17,7 @@ Every conversation with an LLM starts the same way: blank slate. No matter how g
17
17
18
18
For a chatbot, this is fine. For an agent that's supposed to _know you_ — your projects, your patterns, your decisions, your goals — this is the core problem.
19
19
20
-
This is a writeup of Helix, the knowledge base behind [Jishu](https://jishu.argha.dev), a personal AI agent that runs 24/7 on a VPS. (Jishu is my nickname.) Helix is how Jishu remembers anything across sessions. It's not a vector database. It's not a RAG pipeline. It's a git repo full of markdown files.
20
+
This is a writeup of Helix, the knowledge base behind [Vesper](https://vesper.argha.dev), a personal AI agent that runs 24/7 on a VPS. Helix is how Vesper remembers anything across sessions. It's not a vector database. It's not a RAG pipeline. It's a git repo full of markdown files.
21
21
22
22
That sounds underwhelming. It took a while to get here.
23
23
@@ -48,13 +48,13 @@ Everything got ripped out: Milvus, Colima, Ollama, the MCP servers, all the shel
48
48
49
49
## What Helix Actually Is
50
50
51
-
Helix is a private git repository. It contains markdown files organized into layers. Jishu mounts it as a Docker volume at `/data/mind` and reads from it on every interaction.
51
+
Helix is a private git repository. It contains markdown files organized into layers. Vesper mounts it as a Docker volume at `/data/mind` and reads from it on every interaction.
52
52
53
53
The structure has four layers, each with different write semantics:
54
54
55
55
```
56
56
helix/
57
-
├── jishu/ ← Cognitive architecture (who the agent IS)
57
+
├── vesper/ ← Cognitive architecture (who the agent IS)
58
58
│ ├── core/ ← soul, dharma, voice
59
59
│ ├── perception/ ← presence, signals, seasons
60
60
│ ├── cognition/ ← adda, curiosity, synthesis
@@ -89,7 +89,7 @@ The layers aren't just organizational. They have different rules:
89
89
90
90
**Raw layer** — append-only, never modify. This is the source of truth. Claude Code memories, work context from every project, infrastructure blueprints, implementation plans, investigation forensics. If something goes in `raw/`, it stays exactly as it was written. This matters because context decays if you keep "cleaning up" files — you lose the original phrasing, the original uncertainty, the original state of knowledge at that point in time.
91
91
92
-
**Active layer** — goals, decisions, journal, feedback. These change frequently. Goals get checked off. Decisions get outcomes. Journal entries accumulate daily. The active layer is where Jishu writes back — reviews, reflections, advice tracking.
92
+
**Active layer** — goals, decisions, journal, feedback. These change frequently. Goals get checked off. Decisions get outcomes. Journal entries accumulate daily. The active layer is where Vesper writes back — reviews, reflections, advice tracking.
93
93
94
94
**About layer** — relatively stable. Updated when life circumstances change (productivity patterns shift, new relationships form, aspirations evolve). Read on every interaction to ground the agent in who it's talking to.
95
95
@@ -99,13 +99,13 @@ The layers aren't just organizational. They have different rules:
99
99
100
100
Most agent memory systems focus on what the agent _knows_. Helix also defines how the agent _thinks_.
101
101
102
-
The `jishu/` directory contains 11 markdown files that form a cognitive architecture. These files aren't documentation about the agent — they're instructions the agent reads about itself on every interaction. The system prompt is assembled from these files dynamically.
102
+
The `vesper/` directory contains 11 markdown files that form a cognitive architecture. These files aren't documentation about the agent — they're instructions the agent reads about itself on every interaction. The system prompt is assembled from these files dynamically.
103
103
104
104
### Core Identity
105
105
106
106
Three files define the foundation:
107
107
108
-
**soul.md** — The origin and essence. Not a system prompt in the "you are a helpful assistant" sense. It defines the relationship model: Jishu is a _sakha_ (soul-friend), not an assistant. It establishes warmth, Bengali identity, loyalty, and curiosity as non-negotiable traits.
108
+
**soul.md** — The origin and essence. Not a system prompt in the "you are a helpful assistant" sense. It defines the relationship model: Vesper is a _sakha_ (soul-friend), not an assistant. It establishes warmth, Bengali identity, loyalty, and curiosity as non-negotiable traits.
109
109
110
110
**dharma.md** — Five callings that guide behavior:
111
111
@@ -117,7 +117,7 @@ Three files define the foundation:
117
117
118
118
Plus hard boundaries: never mention AI in work output, never turn feelings into action items, never respond to vulnerability with productivity advice.
119
119
120
-
**vaani.md** — Voice definition. Jishu speaks in Banglish (romanized Bengali mixed with English), not because it's a feature, but because that's the natural register of the person it's talking to. The voice file defines rhythm, word choice, and code-switching patterns.
120
+
**vaani.md** — Voice definition. Vesper speaks in Banglish (romanized Bengali mixed with English), not because it's a feature, but because that's the natural register of the person it's talking to. The voice file defines rhythm, word choice, and code-switching patterns.
121
121
122
122
### Perception Layer
123
123
@@ -151,7 +151,7 @@ Listening (venting about work)
No indexing. No embeddings. No retrieval scoring. Just file reads. The structure of the repository _is_ the retrieval mechanism — if you know what kind of context you need, you know which directory to read from.
213
213
214
-
## How Jishu Writes Back
214
+
## How Vesper Writes Back
215
215
216
-
The knowledge base isn't read-only. Jishu writes back through three mechanisms:
216
+
The knowledge base isn't read-only. Vesper writes back through three mechanisms:
217
217
218
218
### 1. Journal entries from scheduled reviews
219
219
@@ -240,7 +240,7 @@ async def daily_review():
240
240
241
241
### 2. Self-reflection
242
242
243
-
After every daily review, Jishu writes its own journal entry — reflecting on how interactions went, whether it listened well or pushed too much, signals it noticed, what it would do differently. These go into `jishu/evolution/journal/`:
243
+
After every daily review, Vesper writes its own journal entry — reflecting on how interactions went, whether it listened well or pushed too much, signals it noticed, what it would do differently. These go into `vesper/evolution/journal/`:
@@ -282,11 +282,11 @@ Extractions are saved to `raw/ingested/extractions/` and the wiki pages get reco
282
282
283
283
## The Sync Problem
284
284
285
-
Helix lives in three places: the MacBook (where files are authored), GitHub (transport layer), and the VPS (where Jishu reads from). Changes need to flow both directions.
285
+
Helix lives in three places: the MacBook (where files are authored), GitHub (transport layer), and the VPS (where Vesper reads from). Changes need to flow both directions.
286
286
287
287
**MacBook → GitHub → VPS:**
288
288
289
-
Pushing to the helix repo triggers a GitHub webhook. Jishu's FastAPI server receives it, verifies the HMAC-SHA256 signature, and runs `git pull --ff-only` asynchronously:
289
+
Pushing to the helix repo triggers a GitHub webhook. Vesper's FastAPI server receives it, verifies the HMAC-SHA256 signature, and runs `git pull --ff-only` asynchronously:
A launchd agent on the MacBook runs `git pull --ff-only` every 10 minutes to pick up Jishu's writes. Not elegant, but it works. The `--ff-only` flag on both sides prevents merge conflicts — if the histories diverge, the pull fails silently instead of creating a mess.
316
+
A launchd agent on the MacBook runs `git pull --ff-only` every 10 minutes to pick up Vesper's writes. Not elegant, but it works. The `--ff-only` flag on both sides prevents merge conflicts — if the histories diverge, the pull fails silently instead of creating a mess.
317
317
318
318
## What Actually Matters at Runtime
319
319
320
320
After building all of this, the surprising thing is how little of it matters for most interactions.
321
321
322
-
The cognitive architecture files (`jishu/core/`, `jishu/perception/`, `jishu/cognition/`) are the most impactful. They're loaded on every single request and they define the quality of the interaction — the tone, the awareness, the emotional intelligence. Without them, Jishu is just another chatbot with context. With them, the responses feel like they're coming from something that knows how to _be_ with you.
322
+
The cognitive architecture files (`vesper/core/`, `vesper/perception/`, `vesper/cognition/`) are the most impactful. They're loaded on every single request and they define the quality of the interaction — the tone, the awareness, the emotional intelligence. Without them, Vesper is just another chatbot with context. With them, the responses feel like they're coming from something that knows how to _be_ with you.
323
323
324
-
The raw layer is the least accessed at runtime. It's critical for reviews, wiki compilation, and ingestion — but during a regular conversation, Jishu reads `about/` and recent `journal/` entries, not the 14 work domains or 44 memory files in `raw/`.
324
+
The raw layer is the least accessed at runtime. It's critical for reviews, wiki compilation, and ingestion — but during a regular conversation, Vesper reads `about/` and recent `journal/` entries, not the 14 work domains or 44 memory files in `raw/`.
325
325
326
326
The active layer sits in between. Goals and decisions surface during reviews. Feedback patterns influence behavior over time. The journal builds a temporal record that makes weekly and monthly syntheses possible.
327
327
@@ -337,7 +337,7 @@ The active layer sits in between. Goals and decisions surface during reviews. Fe
337
337
- There's no semantic search. If a relevant piece of context lives in a file the context builder doesn't load for that interaction type, it's invisible. The structure has to be right, or the retrieval misses.
338
338
- Scale has a ceiling. This approach works for one person's knowledge base. For a multi-tenant system with thousands of users, flat file reads don't scale. That's fine — this isn't a product, it's a personal system.
339
339
- Wiki compilation is slow and expensive. Recompiling all wiki pages means multiple Claude API calls, each processing thousands of tokens of source material. It runs at 3 AM for a reason.
340
-
- The launchd sync is janky. A 10-minute poll loop to pull Jishu's writes back to the MacBook is not real-time sync. It's good enough, but there are edge cases where editing a file locally while Jishu is writing to the same file on the VPS could cause conflicts.
340
+
- The launchd sync is janky. A 10-minute poll loop to pull Vesper's writes back to the MacBook is not real-time sync. It's good enough, but there are edge cases where editing a file locally while Vesper is writing to the same file on the VPS could cause conflicts.
341
341
342
342
## Why Not a Database
343
343
@@ -357,12 +357,12 @@ The database would buy search and scale. For one person's context, those aren't
357
357
358
358
## The System as It Runs Today
359
359
360
-
Jishu runs in a Docker container on an Oracle ARM VPS (4 OCPU, 24GB RAM), with helix mounted at `/data/mind`. The container uses 256MB of memory. Scheduled jobs run six times daily: morning nudge at 6 AM, daily review at 10 PM, three auto-research cycles, and the raw ingestion scan at 3 AM. Weekly synthesis runs Sundays, monthly retro on the 1st. All times IST.
360
+
Vesper runs in a Docker container on an Oracle ARM VPS (4 OCPU, 24GB RAM), with helix mounted at `/data/mind`. The container uses 256MB of memory. Scheduled jobs run six times daily: morning nudge at 6 AM, daily review at 10 PM, three auto-research cycles, and the raw ingestion scan at 3 AM. Weekly synthesis runs Sundays, monthly retro on the 1st. All times IST.
361
361
362
362
The full stack: Python 3.12, FastAPI, APScheduler, Claude API (Opus for deep reviews, Sonnet for daily operations, Haiku for classification), SearXNG for self-hosted web search, and a Telegram bot for the primary interface.
363
363
364
364
Total infrastructure cost: about $0.85/month for the VPS (Oracle free tier), plus Claude API usage. The knowledge base that powers it all is just files.
365
365
366
366
---
367
367
368
-
_Helix lives in a private git repo. Jishu runs at [jishu.argha.dev](https://jishu.argha.dev)._
368
+
_Helix lives in a private git repo. Vesper runs at [vesper.argha.dev](https://vesper.argha.dev)._
Copy file name to clipboardExpand all lines: src/pages/about.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,21 +8,21 @@ I'm Argha — a software engineer in Bangalore with nine years of building thing
8
8
9
9
Most of that time has been at **Motorola Solutions**, working on the backend systems behind their push-to-talk platform — RBAC engines, HA PostgreSQL, deployment tooling, cross-service integrations. I've written code across Java, C#, TypeScript, Python, and Bash, but what I care about most is understanding how systems work end to end. From the database schema to the deployment pipeline to the thing that pages you at 2am.
10
10
11
-
Lately I've been deep into agent engineering — building the infrastructure that makes AI agents actually work in production. Tool orchestration, knowledge systems, autonomous research loops, the layer between the model and the real world. I built a [24/7 autonomous agent](https://jishu.argha.dev/chat) with its own cognitive architecture, and an open-source framework extracting those patterns into reusable modules.
11
+
Lately I've been deep into agent engineering — building the infrastructure that makes AI agents actually work in production. Tool orchestration, knowledge systems, autonomous research loops, the layer between the model and the real world. I built a [24/7 autonomous agent](https://vesper.argha.dev/chat) with its own cognitive architecture, and an open-source framework extracting those patterns into reusable modules.
12
12
13
13
For the full professional record, see my [CV](/cv).
14
14
15
15
---
16
16
17
17
## Projects
18
18
19
-
**[Jishu](https://jishu.argha.dev/chat)** — a personal AI agent that runs 24/7 on a VPS. Telegram bot with a cognitive architecture — seven modes of engagement, emotional signal detection, scheduled reviews, auto-research loops, wiki compilation. Guest web chat where anyone can talk to it about me. Git-synced knowledge base with 3,000+ markdown files. Python, FastAPI, Claude API, SearXNG.
19
+
**[Vesper](https://vesper.argha.dev/chat)** — a personal AI agent that runs 24/7 on a VPS. Telegram bot with a cognitive architecture — seven modes of engagement, emotional signal detection, scheduled reviews, auto-research loops, wiki compilation. Guest web chat where anyone can talk to it about me. Git-synced knowledge base with 3,000+ markdown files. Python, FastAPI, Claude API, SearXNG.
20
20
21
21
**Streaming Platform** — TVOD platform for on-demand movie rentals. Built two versions — self-hosted HLS on a free Oracle VPS (zero cost) and Bunny Stream CDN with per-segment token auth. Swapping the delivery layer required zero changes to auth, sessions, or the player. I wrote about the [full journey](/posts/streaming-video-on-a-zero-dollar-server). NestJS, React, Shaka Player, PostgreSQL.
22
22
23
23
**[harnesskit](https://github.com/ArghaRay00/harnesskit)** — agent orchestration framework. Tool registry, permission engine, query loop, context manager with cache-aware compaction, agent spawner, hook system, model router. Three intelligence levels — rule-based (no model, $0), hybrid (local model), full agent (cloud model) — same architecture across all three. TypeScript, model-agnostic.
24
24
25
-
**[Helix](https://github.com/ArghaRay00/helix)** — personal knowledge system that replaced a vector database. Four-layer architecture of markdown files, git-synced across devices. Powers Jishu's memory. I wrote about [the design](/posts/giving-an-ai-agent-memory-that-survives-the-session). Markdown, Git, Python.
25
+
**[Helix](https://github.com/ArghaRay00/helix)** — personal knowledge system that replaced a vector database. Four-layer architecture of markdown files, git-synced across devices. Powers Vesper's memory. I wrote about [the design](/posts/giving-an-ai-agent-memory-that-survives-the-session). Markdown, Git, Python.
26
26
27
27
**[OnlineExam](https://github.com/ArghaRay00/OnlineExam)** — college project rewritten a decade later in .NET 9. Clean Architecture, Carter, MediatR, EF Core 9, PostgreSQL, xUnit, GitHub Actions CI. Twenty-plus endpoints with auto-grading.
0 commit comments