Skip to content

Commit e9dcbbd

Browse files
committed
rename agent references: Jishu to Vesper
About, CV, homepage and helix post updated. Subdomain references switched to vesper.argha.dev. Redundant nickname parenthetical removed.
1 parent 2336d25 commit e9dcbbd

5 files changed

Lines changed: 33 additions & 33 deletions

File tree

public/assets/blog/helix-layers.svg

Lines changed: 2 additions & 2 deletions
Loading

src/data/blog/agentic-memory-helix.md

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Every conversation with an LLM starts the same way: blank slate. No matter how g
1717

1818
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.
1919

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.
2121

2222
That sounds underwhelming. It took a while to get here.
2323

@@ -48,13 +48,13 @@ Everything got ripped out: Milvus, Colima, Ollama, the MCP servers, all the shel
4848

4949
## What Helix Actually Is
5050

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.
5252

5353
The structure has four layers, each with different write semantics:
5454

5555
```
5656
helix/
57-
├── jishu/ ← Cognitive architecture (who the agent IS)
57+
├── vesper/ ← Cognitive architecture (who the agent IS)
5858
│ ├── core/ ← soul, dharma, voice
5959
│ ├── perception/ ← presence, signals, seasons
6060
│ ├── cognition/ ← adda, curiosity, synthesis
@@ -89,7 +89,7 @@ The layers aren't just organizational. They have different rules:
8989

9090
**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.
9191

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.
9393

9494
**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.
9595

@@ -99,13 +99,13 @@ The layers aren't just organizational. They have different rules:
9999

100100
Most agent memory systems focus on what the agent _knows_. Helix also defines how the agent _thinks_.
101101

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.
103103

104104
### Core Identity
105105

106106
Three files define the foundation:
107107

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.
109109

110110
**dharma.md** — Five callings that guide behavior:
111111

@@ -117,7 +117,7 @@ Three files define the foundation:
117117

118118
Plus hard boundaries: never mention AI in work output, never turn feelings into action items, never respond to vulnerability with productivity advice.
119119

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.
121121

122122
### Perception Layer
123123

@@ -151,7 +151,7 @@ Listening (venting about work)
151151

152152
**rituals.md** defines self-reflection practices: weekly conversation reviews, monthly relationship checks, quarterly dharma reviews. These aren't aspirational — they're scheduled and automated.
153153

154-
## How Jishu Reads Helix
154+
## How Vesper Reads Helix
155155

156156
The context builder assembles a system prompt from the cognitive architecture files on every request:
157157

@@ -160,24 +160,24 @@ def build_system_prompt() -> str:
160160
parts = []
161161

162162
# Core identity
163-
for f in ["jishu/core/soul.md", "jishu/core/dharma.md", "jishu/core/vaani.md"]:
163+
for f in ["vesper/core/soul.md", "vesper/core/dharma.md", "vesper/core/vaani.md"]:
164164
content = knowledge.read_file(f)
165165
if content:
166166
parts.append(content)
167167

168168
# Perception
169-
for f in ["jishu/perception/presence.md", "jishu/perception/signals.md"]:
169+
for f in ["vesper/perception/presence.md", "vesper/perception/signals.md"]:
170170
content = knowledge.read_file(f)
171171
if content:
172172
parts.append(content)
173173

174174
# Cognition
175-
adda = knowledge.read_file("jishu/cognition/adda.md")
175+
adda = knowledge.read_file("vesper/cognition/adda.md")
176176
if adda:
177177
parts.append(adda)
178178

179179
# Evolution
180-
growth = knowledge.read_file("jishu/evolution/growth.md")
180+
growth = knowledge.read_file("vesper/evolution/growth.md")
181181
if growth:
182182
parts.append(growth)
183183

@@ -211,9 +211,9 @@ def read_file(relative_path: str) -> str | None:
211211

212212
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.
213213

214-
## How Jishu Writes Back
214+
## How Vesper Writes Back
215215

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:
217217

218218
### 1. Journal entries from scheduled reviews
219219

@@ -240,7 +240,7 @@ async def daily_review():
240240

241241
### 2. Self-reflection
242242

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/`:
244244

245245
```python
246246
async def _self_reflect(date: str):
@@ -255,7 +255,7 @@ async def _self_reflect(date: str):
255255
Write in first person. 5-10 lines. Be honest. This is private."""
256256

257257
reflection = await claude.ask(system=system, user_message=prompt, model="quick")
258-
knowledge.write_file(f"jishu/evolution/journal/{date}.md", reflection)
258+
knowledge.write_file(f"vesper/evolution/journal/{date}.md", reflection)
259259
```
260260

261261
### 3. Raw file ingestion
@@ -282,11 +282,11 @@ Extractions are saved to `raw/ingested/extractions/` and the wiki pages get reco
282282

283283
## The Sync Problem
284284

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.
286286

287287
**MacBook → GitHub → VPS:**
288288

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:
290290

291291
```python
292292
@router.post("/webhook/github")
@@ -301,7 +301,7 @@ async def github_push(request: Request, x_hub_signature_256: str = Header(None))
301301

302302
**VPS → GitHub → MacBook:**
303303

304-
When Jishu writes (journal entries, wiki pages, self-reflections), it commits and pushes via SSH deploy key:
304+
When Vesper writes (journal entries, wiki pages, self-reflections), it commits and pushes via SSH deploy key:
305305

306306
```python
307307
def commit_and_push(message: str):
@@ -313,15 +313,15 @@ def commit_and_push(message: str):
313313
subprocess.run(["git", "push"], cwd=cwd, env=env)
314314
```
315315

316-
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.
317317

318318
## What Actually Matters at Runtime
319319

320320
After building all of this, the surprising thing is how little of it matters for most interactions.
321321

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.
323323

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/`.
325325

326326
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.
327327

@@ -337,7 +337,7 @@ The active layer sits in between. Goals and decisions surface during reviews. Fe
337337
- 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.
338338
- 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.
339339
- 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.
341341

342342
## Why Not a Database
343343

@@ -357,12 +357,12 @@ The database would buy search and scale. For one person's context, those aren't
357357

358358
## The System as It Runs Today
359359

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.
361361

362362
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.
363363

364364
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.
365365

366366
---
367367

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)._

src/pages/about.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,21 @@ I'm Argha — a software engineer in Bangalore with nine years of building thing
88

99
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.
1010

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.
1212

1313
For the full professional record, see my [CV](/cv).
1414

1515
---
1616

1717
## Projects
1818

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.
2020

2121
**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.
2222

2323
**[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.
2424

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.
2626

2727
**[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.
2828

0 commit comments

Comments
 (0)