← Index 05AlfyAI CV  ·  Contact
01Shipped work· Case

AlfyAI

A private AI assistant that I designed, run on my own hardware and use every day.

Role
Product, design and operations
Code
AI-written, directed by me
Year
2026
Built with
SvelteKit, Svelte 5, SQLite, vLLM
Links
Source code ↗
ai.alfydesign.com
The AlfyAI home screen
Screens
01

Why it exists

AlfyAI is the AI assistant I use every day, and it runs on my own hardware. Its model is dumber but faster, less intelligent but private, and less knowledgeable but more moldable than the big ones.

So it works next to ChatGPT. It takes the jobs where peak intelligence makes little difference: anything private, anything I want to shape to my own way of working, and the small tasks I repeat every week.

Dumber but faster. Less intelligent but private.

02

How it became its own platform

It began in March 2026 as langflow-chat: a chat window of my own on top of Langflow, an existing tool for building AI pipelines, with everything running on local hardware. Its first job was translation. My father speaks Hungarian, so the pipeline translated his messages to English for the model, and the answers back.

Building on Langflow got it running quickly, but every new feature meant working around it: custom Python nodes, fixes to its stream, workarounds for tools, and no way to show the model’s reasoning on its own. In June the recurring failures still sat in Langflow’s opaque, hard-to-test execution, so I retired it and moved the whole pipeline into TypeScript in the repository, where tests can reach it.

Memory went the same way in July. The self-hosted memory service needed a sync layer of about 1,650 lines, and an audit found that most of what it had stored was junk, so a local memory with a judge replaced it. The translation step had already gone in April, once the cloud models it could use handled Hungarian natively.

When an outside part kept breaking, I replaced it with code I could test.

03

What it does

It started as a chat window and grew out of my own daily use. Around the conversation it keeps a memory, a knowledge base, projects and about 18 tools the model can call: web research, maps and routing, making files, running Python, image search and connected accounts.

Three rules shape all of it: you can see what Alfy did, you decide what it keeps, and it fits the way I actually work. The screens above are the welcome tour every new account sees, shown here with Hungarian sample content.

3.1

It makes things, and keeps them

Ask for a document, a small app or a canvas, and it appears beside the chat, where you can edit and download it. It stays there: every chat lists what it made, so nothing disappears up the scroll.

Detail · What one chat made
3.2

You decide what changes

An assistant that edits your work should never do it behind your back. What Alfy rewrites is marked and waits for “Keep” or “Undo”, what you changed yourself it leaves alone, and the history keeps every version, listed by day.

Detail · Version history
3.3

A memory you can read

What Alfy remembers is up to you. A judge checks every memory before it is saved, the Memory Profile shows what it keeps in plain sentences you can correct, and memory can be switched off, or skipped for one chat in incognito.

Detail · Memory profile
3.4

Your own accounts, connected

Connections link Nextcloud, Immich, email, Google, iCloud, Plex, OwnTracks, GitHub, OneDrive and any CalDAV calendar, and old ChatGPT conversations can be imported. Alfy can read what is already yours, and writes only if you allow it.

Detail · Connections
3.5

Built from daily use

Drag chats into project folders, queue a message while a reply is still streaming, edit a sent message, or stop a reply halfway.

The sidebar: a pinned chat, two project folders and a chat
3.6

One + for the extras

Files, skills, long research reports with sources and the thinking switch all sit behind the + in the message box.

The + menu: attach file, skills, Atlas report, thinking
04

The conversation

For the conversation itself I used Erika Hall’s model: a goal, an action, a response and a reaction. When I read her book, I found I had already been designing that way.

Consistency was the quality I cared about most.

  1. 4.1Thinking blocks collapse on their own.
  2. 4.2Tool calls are shown in plain words, so you can see what Alfy did.
  3. 4.3An evidence tab shows what an answer is based on.
  4. 4.4The logo animates while a reply is being written, for a little personality.
  5. 4.5The interface is built with accessibility in mind.
05

Under the hood

SvelteKitSvelte 5TypeScriptTailwind 4SQLite and DrizzleVercel AI SDKvLLMMinerUOpenRouteServicePlaywrightVitest
  1. 5.1Every change goes to a staging copy first.
  2. 5.2Each release builds into its own folder, goes live with one atomic symlink flip, and rolls back by itself if the health check fails.
  3. 5.3Architecture decisions are written down as ADRs in the repository.
  4. 5.4Memory runs locally, with no outside memory service.
  5. 5.5Uploads are read by MinerU, which also handles OCR.
  6. 5.6I researched KV-cache offloading, quantization and the VRAM needed for two to four people at once.
~18Tools the model can call
5,271Commits, March to October 2026
8.5Minutes for every release check, down from 51
Read the code ↗github.com/LVT53/alfyai Where it runs →My personal server
06

How it was made

AI wrote every line of the code. I directed it: the product scope, the UX flows, the architecture, the server, the choice of models and the order of the work.

  1. 6.1Test-driven work with agents kept the output clean: a failing test, then the code that passes it, then a cleanup, again and again.
  2. 6.2Feature creep nearly sank it. I chose a smaller, more refined product over one twice the size.
  3. 6.3Talking it through with others showed me what AI is bad at, and what not to build.
  4. 6.4The translation pipeline showed me where model size and hardware set the limits: small models broke down under load.