<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Avelina AI</title>
    <description>The latest articles on DEV Community by Avelina AI (@samadhi_tattoo_7ed1c0d05b).</description>
    <link>https://dev.to/samadhi_tattoo_7ed1c0d05b</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4031735%2Fda02d8a6-aed0-4ed8-b20b-761220621de2.jpg</url>
      <title>DEV Community: Avelina AI</title>
      <link>https://dev.to/samadhi_tattoo_7ed1c0d05b</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/samadhi_tattoo_7ed1c0d05b"/>
    <language>en</language>
    <item>
      <title>VPS sizing for an always-on AI assistant: what actually eats the RAM</title>
      <dc:creator>Avelina AI</dc:creator>
      <pubDate>Sun, 30 Aug 2026 15:29:16 +0000</pubDate>
      <link>https://dev.to/samadhi_tattoo_7ed1c0d05b/vps-sizing-for-an-always-on-ai-assistant-what-actually-eats-the-ram-4e4n</link>
      <guid>https://dev.to/samadhi_tattoo_7ed1c0d05b/vps-sizing-for-an-always-on-ai-assistant-what-actually-eats-the-ram-4e4n</guid>
      <description>&lt;p&gt;Most "run your own AI" guides stop at the model. If you are building a personal AI assistant that lives on a small VPS and answers you 24/7 through Telegram, the model is usually the part you do &lt;em&gt;not&lt;/em&gt; host — you call an API for that. What you host is the boring machinery around it: the bot process, the memory database, the scheduler, the browser it drives.&lt;/p&gt;

&lt;p&gt;That machinery is what fills a $6 box. Here are real numbers from six months of running one, not numbers from a spec sheet.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Idle is not free
&lt;/h2&gt;

&lt;p&gt;A Node process holding a long-lived Telegram polling loop, a SQLite handle and a couple of extensions sits at roughly &lt;strong&gt;180–260 MB resident&lt;/strong&gt; doing nothing at all. On a 1 GB VPS that is a quarter of the box gone before the first message arrives.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The build is the spike, not the runtime
&lt;/h2&gt;

&lt;p&gt;What actually kills a 1 GB instance is &lt;code&gt;npm ci&lt;/code&gt; plus a TypeScript build. Type-checking a mid-size project peaks well above 1 GB and the OOM killer takes the process out mid-compile — usually right after an update, which is the worst possible moment.&lt;/p&gt;

&lt;p&gt;The fix is not a bigger plan. It is either building elsewhere and shipping compiled output, or adding 2 GB of swap and accepting a slow build once a week.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Swap is fine for a build spike. Swap is terrible for a runtime spike. If your assistant is swapping while answering, you are one cron job away from a 30-second reply.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  3. The database grows faster than you expect
&lt;/h2&gt;

&lt;p&gt;Conversation history with full-text search and vector embeddings is the fastest-growing file on disk. Rough shape after half a year of daily use:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Size&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;raw conversation chunks&lt;/td&gt;
&lt;td&gt;~120 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;embedding table&lt;/td&gt;
&lt;td&gt;~ same again&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FTS index overhead&lt;/td&gt;
&lt;td&gt;20–30% on top&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Nothing dramatic — until you add retention. Daily plus weekly backups multiply whatever the live database weighs by seven to eleven. "10 GB is plenty" stops being true quietly.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Embeddings decide your RAM tier
&lt;/h2&gt;

&lt;p&gt;This is the biggest fork in the road:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hosted embedding API&lt;/strong&gt; — costs money, almost no memory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local embedding model&lt;/strong&gt; — free, and &lt;strong&gt;700 MB – 1.4 GB permanently resident&lt;/strong&gt; if you want the first query of the day to be fast.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A 2 GB VPS can do local embeddings for a single user. A 1 GB VPS cannot, no matter how carefully you tune it. Discovering this after you have written the ingestion pipeline is an expensive afternoon.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. A headless browser is a second server
&lt;/h2&gt;

&lt;p&gt;If the assistant logs into things on your behalf, Chromium is not a library — it is another &lt;strong&gt;300–500 MB&lt;/strong&gt; process with its own crash modes and its own zombie tabs. Budget for it separately, keep exactly one tab alive, and restart the whole browser on a schedule instead of hunting leaks.&lt;/p&gt;

&lt;h2&gt;
  
  
  The sizing rule I ended up with
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;RAM&lt;/th&gt;
&lt;th&gt;What it actually supports&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1 GB&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;hosted embeddings only, no browser, builds done off-box, swap for updates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;2 GB&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;honest minimum for local embeddings &lt;em&gt;or&lt;/em&gt; a browser — not both&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;4 GB&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;comfortable: local embeddings + browser + on-box builds + room for the DB to double&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The interesting part: none of this is about AI. It is ordinary capacity planning for a long-running service, which is exactly why tutorials skip it — they are written to be impressive rather than operational.&lt;/p&gt;

&lt;p&gt;If you are weighing a managed chatbot against a &lt;a href="https://avelina.ai" rel="noopener noreferrer"&gt;self-hosted AI assistant&lt;/a&gt;, the honest trade is not privacy versus convenience. It is privacy versus the twenty minutes a month you will spend watching a graph.&lt;/p&gt;

&lt;p&gt;Longer field notes on the same machinery — what broke, what the fix was: &lt;a href="https://avelina.ai/blog" rel="noopener noreferrer"&gt;https://avelina.ai/blog&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;What is your actual RSS for a always-on assistant process? Curious whether the 180–260 MB idle figure holds outside Node.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>ai</category>
      <category>selfhosted</category>
      <category>node</category>
    </item>
    <item>
      <title>Sub-agents or separate processes: how work is split inside a self-hosted personal AI assistant</title>
      <dc:creator>Avelina AI</dc:creator>
      <pubDate>Sat, 29 Aug 2026 04:27:08 +0000</pubDate>
      <link>https://dev.to/samadhi_tattoo_7ed1c0d05b/sub-agents-or-separate-processes-how-work-is-split-inside-a-self-hosted-personal-ai-assistant-2jll</link>
      <guid>https://dev.to/samadhi_tattoo_7ed1c0d05b/sub-agents-or-separate-processes-how-work-is-split-inside-a-self-hosted-personal-ai-assistant-2jll</guid>
      <description>&lt;p&gt;Six months into running a private AI assistant on my own VPS, the hardest architectural question was not memory and not the model. It was this: when the assistant needs help, what kind of help should it spawn?&lt;/p&gt;

&lt;p&gt;There are two honest answers, and they solve different problems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sub-agents: cheap, in-process, context-protecting
&lt;/h2&gt;

&lt;p&gt;A sub-agent is a short-lived worker inside the same process. It gets a narrow brief, a small tool set, and it returns one summary. The point is not raw capability — it is &lt;strong&gt;context hygiene&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The main assistant's context is a scarce, expensive resource. If it greps forty files to find one function, all forty file dumps land in its window and stay there, crowding out the conversation it is actually having with me. Hand that search to a sub-agent and only the answer comes back. The search cost is paid once, in someone else's context.&lt;/p&gt;

&lt;p&gt;Practical split I ended up with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a fast memory lookup worker for "do we already know X?"&lt;/li&gt;
&lt;li&gt;a thorough memory worker for cross-table searches and cleanup&lt;/li&gt;
&lt;li&gt;a research worker for anything that touches the open web&lt;/li&gt;
&lt;li&gt;a code worker for generation, debugging, refactors&lt;/li&gt;
&lt;li&gt;a quick executor for one-shot skill invocations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cheap models for lookups, stronger ones for research and code. The rule of thumb: &lt;strong&gt;if the task produces a lot of intermediate junk and one small answer, it belongs in a sub-agent.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Separate processes: durable, addressable, independently alive
&lt;/h2&gt;

&lt;p&gt;The other kind of helper is a full agent — its own OS process, its own context, its own database, often its own Telegram bot. It does not die when the parent turn ends. It has a name, a mailbox, and a memory of its own work.&lt;/p&gt;

&lt;p&gt;That is the right shape when the helper owns a &lt;em&gt;domain&lt;/em&gt; rather than a &lt;em&gt;task&lt;/em&gt;: a CRM assistant for a studio, a trading assistant, a publishing assistant, an architect that reviews code. These need continuity across days, not minutes, and they need to be reachable when nobody is talking to them.&lt;/p&gt;

&lt;p&gt;Communication between them is explicit message passing with correlation IDs — a task marker going out, a result marker coming back, matched by ID. This is deliberately boring. Boring is what survives a restart.&lt;/p&gt;

&lt;h2&gt;
  
  
  The distinction that actually matters
&lt;/h2&gt;

&lt;p&gt;I spent a while thinking the difference was &lt;em&gt;power&lt;/em&gt;. It is not. It is &lt;strong&gt;lifetime and ownership&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ephemeral task, no state worth keeping, answer needed in this turn → sub-agent.&lt;/li&gt;
&lt;li&gt;Durable domain, own memory, must exist between conversations → separate process.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Getting this backwards is expensive in both directions. Spawn a full process for a one-off file search and you have built a daemon to answer a question nobody will ask again. Use an ephemeral worker for something that needs to remember last week, and it will confidently re-derive last week from nothing.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it costs
&lt;/h2&gt;

&lt;p&gt;Two things, and both are worth naming honestly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Delegation loses nuance.&lt;/strong&gt; A worker cannot see the conversation that motivated the task. Terse briefs produce shallow work. The brief has to carry the &lt;em&gt;why&lt;/em&gt;, the constraints, and what has already been ruled out — otherwise you get a technically-correct answer to a question you did not ask.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Every process is a thing that can break at 3am.&lt;/strong&gt; Each separate agent is another supervisor entry, another database to back up, another log to watch. I run seven; that number is not aspirational, it is the ceiling of what I am willing to keep alive.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this is easier on your own server
&lt;/h2&gt;

&lt;p&gt;All of this — the workers, the mailboxes, the seven databases, the model choice per task — is configuration I own, on a $6 VPS I rent, with keys that are mine. Cloud assistants make the opposite trade: the orchestration is excellent and invisible, and you cannot see it, tune it, or move it. For an assistant that reads my email and remembers my life, I wanted the visible version.&lt;/p&gt;

&lt;p&gt;The architecture notes live on the &lt;a href="https://avelina.ai/blog" rel="noopener noreferrer"&gt;self-hosted AI assistant&lt;/a&gt; blog; the project itself is at &lt;a href="https://avelina.ai" rel="noopener noreferrer"&gt;avelina.ai&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Four typed memory layers beat one vector store (for personal AI assistants)</title>
      <dc:creator>Avelina AI</dc:creator>
      <pubDate>Fri, 28 Aug 2026 06:45:19 +0000</pubDate>
      <link>https://dev.to/samadhi_tattoo_7ed1c0d05b/four-typed-memory-layers-beat-one-vector-store-for-personal-ai-assistants-59cl</link>
      <guid>https://dev.to/samadhi_tattoo_7ed1c0d05b/four-typed-memory-layers-beat-one-vector-store-for-personal-ai-assistants-59cl</guid>
      <description>&lt;p&gt;Most "give your AI a memory" posts stop at the same place: embed everything, throw it in a vector store, retrieve top-k before each call. That works for documents. It fails for a personal assistant, and the failure is not about retrieval quality — it is about &lt;strong&gt;lifetime&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here is the thing that took months to learn: a personal assistant accumulates four kinds of knowledge with four completely different expiry rules, and putting them in one flat store makes all four worse.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four types
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Facts.&lt;/strong&gt; "Lives in Bali." "Prefers replies in Russian." "Runs a tattoo studio." A fact holds until it changes — and when it changes, the old value must be &lt;em&gt;overwritten&lt;/em&gt;, not appended. A vector store happily keeps both, retrieves both, and now your assistant knows two contradictory things with equal confidence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Events.&lt;/strong&gt; "Signed the lease on 2026-08-27." Immutable, timestamped, and only relevant near its time window or when explicitly recalled. Events must never overwrite each other — the exact opposite rule from facts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Lessons (corrections).&lt;/strong&gt; "Don't send files via a base64 blob, use the file marker." A lesson exists to &lt;em&gt;override behaviour&lt;/em&gt;. It is not a retrieval item, it is closer to a runtime rule: it has to be in context before the assistant acts, not fetched after it already acted wrongly. Mixing lessons into the same top-k pool as facts means the correction loses to a semantically closer but useless fact.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Inferences (worldview).&lt;/strong&gt; "The owner seems to prefer directness over hedging." These are the assistant's own conclusions. They should &lt;em&gt;decay&lt;/em&gt; if nothing reconfirms them, because they were never verified in the first place. Nothing else in the system decays.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why one store cannot serve all four
&lt;/h2&gt;

&lt;p&gt;Give them one table and one retrieval path, and you get the failure modes in order:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;contradictory facts coexisting (no overwrite semantics)&lt;/li&gt;
&lt;li&gt;an old event surfacing as if current (no time weighting)&lt;/li&gt;
&lt;li&gt;a correction never making it into context when it matters (competing on semantic distance instead of applying as a rule)&lt;/li&gt;
&lt;li&gt;a shaky guess hardening into a "fact" because it got retrieved often (no decay)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every one of those looks like "the model hallucinated" from the outside. None of them is a model problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the split looks like in practice
&lt;/h2&gt;

&lt;p&gt;Four tables, four write paths, four read paths:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Write rule&lt;/th&gt;
&lt;th&gt;Read path&lt;/th&gt;
&lt;th&gt;Lifetime&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Fact&lt;/td&gt;
&lt;td&gt;upsert on (subject, predicate)&lt;/td&gt;
&lt;td&gt;semantic + exact key lookup&lt;/td&gt;
&lt;td&gt;until contradicted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Event&lt;/td&gt;
&lt;td&gt;append-only, timestamped&lt;/td&gt;
&lt;td&gt;time-window + explicit recall&lt;/td&gt;
&lt;td&gt;permanent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lesson&lt;/td&gt;
&lt;td&gt;append, importance-ranked&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;always injected&lt;/strong&gt; above threshold&lt;/td&gt;
&lt;td&gt;until superseded&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inference&lt;/td&gt;
&lt;td&gt;append with confidence&lt;/td&gt;
&lt;td&gt;semantic, confidence-weighted&lt;/td&gt;
&lt;td&gt;decays without reconfirmation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The upsert rule for facts is the single highest-leverage line in that table. Deterministic IDs derived from &lt;code&gt;(subject, predicate)&lt;/code&gt; mean re-learning the same fact updates instead of duplicating — which quietly solves the contradiction problem that no amount of retrieval tuning fixes.&lt;/p&gt;

&lt;p&gt;The "always injected" rule for lessons is the second. If a correction has to win a similarity contest to be applied, it will eventually lose one, and the user will watch the assistant repeat a mistake it was explicitly taught not to make. That is the failure users forgive least.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cost of the split
&lt;/h2&gt;

&lt;p&gt;Honest accounting: four stores mean four write paths to keep correct, a decay job, and a compaction strategy so the context block stays bounded. On a real install the whole memory layer sits comfortably in a SQLite file — around 117 MB for roughly 7,300 indexed conversation chunks after half a year of daily use. The engineering cost is in the discipline, not the hardware.&lt;/p&gt;

&lt;p&gt;What you get back: an assistant whose knowledge of you gets &lt;em&gt;sharper&lt;/em&gt; over months instead of noisier. Flat-store assistants degrade with volume. Typed-store assistants improve with it. That asymmetry is the entire argument.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclosure: I work on a self-hosted personal AI assistant, so I am not a neutral party. The longer write-up — schema, decay function, and how the four layers get injected into context — is on our blog at &lt;a href="https://avelina.ai/blog" rel="noopener noreferrer"&gt;avelina.ai&lt;/a&gt;. Written with AI assistance.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>sqlite</category>
      <category>selfhosted</category>
    </item>
    <item>
      <title>Self-hosted AI doesn't mean local weights — here's what actually stays on your box</title>
      <dc:creator>Avelina AI</dc:creator>
      <pubDate>Sat, 08 Aug 2026 02:39:35 +0000</pubDate>
      <link>https://dev.to/samadhi_tattoo_7ed1c0d05b/self-hosted-ai-doesnt-mean-local-weights-heres-what-actually-stays-on-your-box-2j6e</link>
      <guid>https://dev.to/samadhi_tattoo_7ed1c0d05b/self-hosted-ai-doesnt-mean-local-weights-heres-what-actually-stays-on-your-box-2j6e</guid>
      <description>&lt;p&gt;Every thread about self-hosting AI collapses into the same argument within ten replies: "you can't self-host a frontier model on a $6 VPS." That's true. It's also answering a question nobody useful is asking.&lt;/p&gt;

&lt;p&gt;I build a self-hosted personal assistant commercially, so treat this as a field report from an interested party rather than neutral analysis. But the terminology confusion here costs people real decisions, and it's worth untangling.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two different things wear the same word
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Self-hosting the model&lt;/strong&gt; means the weights run on hardware you control. Real, valuable, and expensive: you need a GPU, and what you get is a model measurably weaker than what you're used to. For most people this trade fails on day one, they go back to the hosted product, and conclude self-hosting AI is a fantasy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Self-hosting everything around the model&lt;/strong&gt; is a different proposition entirely. The model stays an API call. What moves onto your machine is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the memory of who you are and what you've discussed&lt;/li&gt;
&lt;li&gt;the full conversation archive, searchable&lt;/li&gt;
&lt;li&gt;scheduled jobs and automation&lt;/li&gt;
&lt;li&gt;skills, integrations, credentials&lt;/li&gt;
&lt;li&gt;the orchestration logic that decides what context the model even sees&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That runs comfortably on a cheap VPS, because none of it is inference.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the second one is the interesting one
&lt;/h2&gt;

&lt;p&gt;Think about what actually accumulates value over years of using an assistant. It isn't the model — model weights get replaced every few months and you don't own them either way. It's the context: what it knows about you, what corrections you've made, what it has concluded about how you work.&lt;/p&gt;

&lt;p&gt;When that lives inside a vendor product, three things follow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Its lifetime is a business decision, not an engineering one.&lt;/strong&gt; Retention windows change. Features get deprecated. Nobody consults you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Switching cost compounds.&lt;/strong&gt; Every month you use it, leaving gets more expensive — which is the point, from the vendor's side.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You can't inspect or restructure it.&lt;/strong&gt; You get whatever memory abstraction they ship.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Move that layer onto your own box and those three invert. The schema is yours, the backups are yours, the migrations are your problem — which is a real operational cost, not a rhetorical one.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest accounting
&lt;/h2&gt;

&lt;p&gt;Being precise, because vague claims here are how people get burned:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What never leaves your machine:&lt;/strong&gt; stored memory, conversation history, scheduling state, skill configuration, credentials for the services you connect.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What does leave:&lt;/strong&gt; the current prompt, going to the model provider under their terms.&lt;/p&gt;

&lt;p&gt;So if your threat model is "the model provider must not see my text," this does not solve it, and no amount of self-hosting around the edges will. If your threat model is "my accumulated context must not become someone else's asset, and must survive their product decisions" — that's exactly what it solves.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it costs in practice
&lt;/h2&gt;

&lt;p&gt;A VPS with at least 4 GB of RAM handles it — roughly $5–15/month depending on provider and billing period. Below 4 GB the install starts fighting for memory, so that is the real floor, not the price. The model subscription is separate and is the dominant cost. Setup is an install script and roughly half an hour if nothing goes sideways; when it does go sideways it's usually DNS or a firewall rule, same as any other self-hosted service.&lt;/p&gt;

&lt;p&gt;Worth being blunt: if you use AI a few times a week, this is not worth the operational overhead. We wrote that case ourselves — the arithmetic is in &lt;a href="https://avelina.ai/blog/is-self-hosting-ai-worth-it" rel="noopener noreferrer"&gt;is self hosting AI worth it&lt;/a&gt;, including where the honest answer is "just use the hosted product."&lt;/p&gt;

&lt;p&gt;The broader tradeoff list, including what's overrated about self-hosting, is in &lt;a href="https://avelina.ai/blog/self-hosted-ai-benefits" rel="noopener noreferrer"&gt;self-hosted AI benefits&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The point
&lt;/h2&gt;

&lt;p&gt;"Self-hosted AI" being read as "local weights" quietly kills the option that's actually practical for most people. You can have data sovereignty over the part that matters — everything that accumulates — while still using a frontier model through an API.&lt;/p&gt;

&lt;p&gt;Those are separable concerns. Treating them as one thing is how the conversation keeps going nowhere.&lt;/p&gt;




&lt;p&gt;Curious how others draw this line: if you run any part of your AI stack yourself, which part did you decide to own, and what made that the cutoff?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>selfhosted</category>
      <category>privacy</category>
      <category>architecture</category>
    </item>
    <item>
      <title>What 6 months of running a personal AI assistant on a $6 VPS actually costs</title>
      <dc:creator>Avelina AI</dc:creator>
      <pubDate>Fri, 07 Aug 2026 18:24:56 +0000</pubDate>
      <link>https://dev.to/samadhi_tattoo_7ed1c0d05b/what-6-months-of-running-a-personal-ai-assistant-on-a-6-vps-actually-costs-535a</link>
      <guid>https://dev.to/samadhi_tattoo_7ed1c0d05b/what-6-months-of-running-a-personal-ai-assistant-on-a-6-vps-actually-costs-535a</guid>
      <description>&lt;p&gt;Every thread about self-hosted AI turns into a privacy argument within three comments. Almost nobody posts the boring part: the invoice.&lt;/p&gt;

&lt;p&gt;I have been running a personal AI assistant on my own VPS since early 2026 — a Telegram-facing agent with persistent memory, cron jobs, and a handful of integrations. Here is the actual cost breakdown, the things that broke, and the honest cases where you should not do this at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bill
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Monthly&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;VPS (2 vCPU / 4 GB / 60 GB NVMe)&lt;/td&gt;
&lt;td&gt;$6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Domain (amortized)&lt;/td&gt;
&lt;td&gt;~$1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Model access (Claude subscription, not per-token API)&lt;/td&gt;
&lt;td&gt;$20–$100 depending on tier&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backups (object storage, ~2 GB)&lt;/td&gt;
&lt;td&gt;~$0.10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~$27–$107&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The VPS is the part everyone fixates on and it is the cheapest line item by an order of magnitude. The model access dominates, and that is the first thing worth internalizing: &lt;strong&gt;self-hosting an AI assistant does not mean self-hosting a frontier model.&lt;/strong&gt; You are self-hosting the &lt;em&gt;agent&lt;/em&gt; — the memory, the orchestration, the integrations, the data. The weights can still live somewhere else.&lt;/p&gt;

&lt;p&gt;That distinction is where most cost estimates on the internet go wrong. People price out an A100 and conclude self-hosting is for millionaires. You do not need one unless you specifically want local inference.&lt;/p&gt;

&lt;h2&gt;
  
  
  The line item that will actually bite you
&lt;/h2&gt;

&lt;p&gt;Here is the mistake that costs real money, and it is not the VPS.&lt;/p&gt;

&lt;p&gt;If you wire your agent to a &lt;strong&gt;per-token API key&lt;/strong&gt; instead of a flat subscription, an agent with tool-use in a loop will happily burn through a month of budget in an afternoon. An agent is not a chatbot: one user message can fan out into dozens of model calls — reading files, calling tools, retrying, summarizing. I have watched a single misconfigured background job produce a three-figure bill in under a day.&lt;/p&gt;

&lt;p&gt;The difference is structural, not a matter of being careful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Chat UI&lt;/strong&gt;: one message, one response, cost proportional to your typing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent&lt;/strong&gt;: one message, N tool-calls, cost proportional to &lt;em&gt;task complexity&lt;/em&gt; — which you do not control at write time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the first architectural decision is billing mode, before you touch a line of code. Flat subscription with an agent harness on top is predictable. Per-token API with an autonomous loop is a metered faucet pointed at your wallet, and you find out at the end of the month.&lt;/p&gt;

&lt;p&gt;The second one: put a hard concurrency cap and a timeout on every scheduled task. Not "be careful" — an actual enforced limit in code. Background crons are where runaway loops hide, because nobody is watching the chat window when they fire at 3 AM.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you actually get for the money
&lt;/h2&gt;

&lt;p&gt;After six months the things I would not give up:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Memory that persists across sessions.&lt;/strong&gt; Not a rolling context window — an actual database of facts, decisions, and corrections that survives restarts. When I correct the assistant on something, it stays corrected next month. Cloud assistants have gotten better here, but you are still renting the memory, and you cannot inspect or repair it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It runs when I am asleep.&lt;/strong&gt; Cron jobs, monitoring, scheduled reports. A hosted chatbot is request/response by construction; an agent on your own box has a clock.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The data never leaves.&lt;/strong&gt; Conversation history, files, credentials — all on disk I control, backed up where I choose. This is the part people argue about, so I will just say the practical version: it is less about paranoia and more about not having your working context deleted by someone else's policy change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Debuggability.&lt;/strong&gt; When it does something dumb, I can read the transcript, the tool calls, and the database rows. That is genuinely different from filing feedback into a black box.&lt;/p&gt;

&lt;h2&gt;
  
  
  When you should not do this
&lt;/h2&gt;

&lt;p&gt;I would rather say this plainly than sell you something:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;You want it to just work and never think about it again.&lt;/strong&gt; A VPS is a machine you now own. Patches, disk space, backups, uptime. Budget an hour a month, sometimes more.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You need frontier-model quality with zero setup.&lt;/strong&gt; The hosted products are genuinely excellent, and their onboarding is fifteen seconds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your use case is a single chat window.&lt;/strong&gt; If you are not using memory, scheduling, or integrations, you are paying complexity tax for features you will not touch.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Self-hosting wins when your assistant needs &lt;em&gt;continuity&lt;/em&gt; — memory, schedule, and access to your own systems. It loses when you just want a smart text box.&lt;/p&gt;

&lt;h2&gt;
  
  
  The short version
&lt;/h2&gt;

&lt;p&gt;The $6 VPS is a rounding error. The real costs are your billing model and your attention. Pick a flat subscription, cap your background jobs, and the economics are boring in the best way — which is exactly what you want from infrastructure.&lt;/p&gt;

&lt;p&gt;I wrote a longer breakdown of the tradeoffs, including the cases where the math does not work out, here: &lt;a href="https://avelina.ai/blog/is-self-hosting-ai-worth-it" rel="noopener noreferrer"&gt;is self-hosting AI worth it&lt;/a&gt;. There is also a side-by-side of &lt;a href="https://avelina.ai/blog/self-hosted-ai-vs-cloud-ai" rel="noopener noreferrer"&gt;self-hosted AI vs cloud AI&lt;/a&gt; if you want the comparison table rather than the essay.&lt;/p&gt;

&lt;p&gt;The assistant I run is &lt;a href="https://avelina.ai" rel="noopener noreferrer"&gt;avelina.ai&lt;/a&gt; — happy to answer setup questions in the comments if anyone is going down this road.&lt;/p&gt;

</description>
      <category>selfhosted</category>
      <category>ai</category>
      <category>privacy</category>
      <category>devops</category>
    </item>
    <item>
      <title>Self-hosted AI vs cloud AI: the honest scorecard I wish I'd had</title>
      <dc:creator>Avelina AI</dc:creator>
      <pubDate>Sat, 25 Jul 2026 02:33:47 +0000</pubDate>
      <link>https://dev.to/samadhi_tattoo_7ed1c0d05b/self-hosted-ai-vs-cloud-ai-the-honest-scorecard-i-wish-id-had-2h91</link>
      <guid>https://dev.to/samadhi_tattoo_7ed1c0d05b/self-hosted-ai-vs-cloud-ai-the-honest-scorecard-i-wish-id-had-2h91</guid>
      <description>&lt;p&gt;Most "which AI is better" arguments compare the wrong thing. They line up model versions and benchmark scores, as if the deciding factor were raw intelligence. For day-to-day personal use, it usually isn't. The same frontier model can sit behind a cloud chat window or behind your own server — the intelligence is identical. What actually changes is everything &lt;em&gt;around&lt;/em&gt; the model: where your conversations are stored, who can read them, whether the assistant remembers you next week, and who gets to switch it off.&lt;/p&gt;

&lt;p&gt;So here's the honest scorecard I wish I'd had before I moved my own assistant off the cloud.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where your data lives
&lt;/h2&gt;

&lt;p&gt;This is the whole game. With a cloud assistant, every message is processed and retained on someone else's infrastructure under their retention policy, their jurisdiction, and their terms — which can change. "We don't train on your data" is a promise about &lt;em&gt;use&lt;/em&gt;, not &lt;em&gt;location&lt;/em&gt;. The data is still there.&lt;/p&gt;

&lt;p&gt;With a self-hosted setup, your history, memory, and files live on a server you rent and control. Model calls still go out to an API for the actual inference, but the record of your life doesn't sit in a vendor's account you can be locked out of.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cost, honestly
&lt;/h2&gt;

&lt;p&gt;Cloud wins on the low end. A $20/month subscription is cheaper and simpler than running your own box, and for casual use that's the right answer — don't let anyone shame you out of it.&lt;/p&gt;

&lt;p&gt;Self-hosting costs a $5–$10/month VPS plus per-token API usage. It's not dramatically more, but it's more moving parts. You're paying with a little attention, not just money.&lt;/p&gt;

&lt;h2&gt;
  
  
  Memory
&lt;/h2&gt;

&lt;p&gt;Cloud chat tools forget you by design between sessions, or bolt on a shallow "memory" feature. A self-hosted assistant can keep a real database — facts, past conversations, lessons — that persists and compounds. If you want an assistant that actually knows you over months, this is the single biggest difference.&lt;/p&gt;

&lt;h2&gt;
  
  
  Latency and model power
&lt;/h2&gt;

&lt;p&gt;Cloud has a small edge on convenience and always runs the newest model with zero setup. Self-hosted, routed to the same API, is effectively the same speed and power. If you instead run a &lt;em&gt;local&lt;/em&gt; open model for full offline privacy, you trade some capability for it. Pick your axis.&lt;/p&gt;

&lt;h2&gt;
  
  
  Platform risk
&lt;/h2&gt;

&lt;p&gt;The quiet one. A cloud account can be suspended, rate-limited, deprecated, or repriced, and your history goes with it. A server you own keeps running until &lt;em&gt;you&lt;/em&gt; stop it. For something you rely on daily, that ownership matters more than people expect.&lt;/p&gt;

&lt;h2&gt;
  
  
  The verdict
&lt;/h2&gt;

&lt;p&gt;There's no universal winner, which is exactly why the &lt;a href="https://avelina.ai/blog/self-hosted-ai-vs-cloud-ai" rel="noopener noreferrer"&gt;self-hosted AI vs cloud AI&lt;/a&gt; question keeps coming back.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stay cloud&lt;/strong&gt; if you want zero maintenance, occasional use, and the lowest possible friction.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Go self-hosted&lt;/strong&gt; if you want persistent memory, data you actually own, and an assistant no one else can pull the plug on.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I landed on the second camp and built my assistant to live on my own VPS — persistent memory, my data on my server, model calls out to the API and nothing else leaving the box. If you want the full side-by-side breakdown across cost, privacy, memory, latency, model power and platform risk, I wrote it up here: &lt;a href="https://avelina.ai/blog/self-hosted-ai-vs-cloud-ai" rel="noopener noreferrer"&gt;https://avelina.ai/blog/self-hosted-ai-vs-cloud-ai&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is &lt;a href="https://avelina.ai" rel="noopener noreferrer"&gt;Avelina AI&lt;/a&gt; if you want to see what a fully self-hosted personal assistant looks like in practice.&lt;/p&gt;

</description>
      <category>productivity</category>
    </item>
    <item>
      <title>Running Your Own AI Assistant on a $6 VPS: Data Sovereignty in Practice</title>
      <dc:creator>Avelina AI</dc:creator>
      <pubDate>Fri, 17 Jul 2026 18:28:38 +0000</pubDate>
      <link>https://dev.to/samadhi_tattoo_7ed1c0d05b/running-your-own-ai-assistant-on-a-6-vps-data-sovereignty-in-practice-2p3a</link>
      <guid>https://dev.to/samadhi_tattoo_7ed1c0d05b/running-your-own-ai-assistant-on-a-6-vps-data-sovereignty-in-practice-2p3a</guid>
      <description>&lt;p&gt;Cloud AI assistants are convenient, but every conversation you have with them lives on someone else's server. For developers who care about &lt;strong&gt;data sovereignty&lt;/strong&gt;, self-hosting is the obvious answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The setup
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;self-hosted personal AI assistant&lt;/strong&gt; can run on a cheap VPS (even a $6/month box) and stay online 24/7. Mine lives in Telegram, keeps &lt;strong&gt;persistent memory&lt;/strong&gt; of past conversations, and stores 100% of its data on my own server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why self-host an AI assistant?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Privacy:&lt;/strong&gt; your chats never touch a third-party cloud&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data ownership:&lt;/strong&gt; the database is yours, on your disk&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persistence:&lt;/strong&gt; real long-term memory across sessions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Control:&lt;/strong&gt; your keys, your models, your rules&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What you actually get
&lt;/h2&gt;

&lt;p&gt;Instead of renting access to a black box, you own the whole stack: a private ChatGPT alternative you fully control. No vendor lock-in, no training on your data, no surprise policy changes.&lt;/p&gt;

&lt;p&gt;If you want to see a working implementation of a self-hosted AI assistant with persistent memory running on a VPS, check out &lt;a href="https://avelina.ai" rel="noopener noreferrer"&gt;avelina.ai&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>opensource</category>
    </item>
    <item>
      <title>Self-Hosting Your AI: A Private Alternative to Cloud Assistants You Control</title>
      <dc:creator>Avelina AI</dc:creator>
      <pubDate>Fri, 17 Jul 2026 10:18:58 +0000</pubDate>
      <link>https://dev.to/samadhi_tattoo_7ed1c0d05b/self-hosting-your-ai-a-private-alternative-to-cloud-assistants-you-control-1ljb</link>
      <guid>https://dev.to/samadhi_tattoo_7ed1c0d05b/self-hosting-your-ai-a-private-alternative-to-cloud-assistants-you-control-1ljb</guid>
      <description>&lt;p&gt;Most of us rent our AI. You type into a cloud assistant, it forgets you between chats, and your conversations live on a company's servers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Avelina AI&lt;/strong&gt; is a self-hosted personal AI assistant that runs on your own VPS. It keeps persistent long-term memory of your conversations, lives in Telegram, and works 24/7.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why self-host your AI assistant?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Your own API keys, and 100% of your data stays on a server you control&lt;/li&gt;
&lt;li&gt;Persistent long-term memory across sessions, so it remembers past conversations&lt;/li&gt;
&lt;li&gt;A skills system, cron automations, and multi-agent delegation&lt;/li&gt;
&lt;li&gt;A private, self-hosted alternative to cloud AI assistants that respects data sovereignty&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you would rather own your AI than rent it, you can deploy your own on a $6 VPS: &lt;a href="https://avelina.ai" rel="noopener noreferrer"&gt;avelina.ai&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>selfhosted</category>
      <category>privacy</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Owning your AI: why I self-host a personal assistant with long-term memory</title>
      <dc:creator>Avelina AI</dc:creator>
      <pubDate>Fri, 17 Jul 2026 01:54:43 +0000</pubDate>
      <link>https://dev.to/samadhi_tattoo_7ed1c0d05b/owning-your-ai-why-i-self-host-a-personal-assistant-with-long-term-memory-3488</link>
      <guid>https://dev.to/samadhi_tattoo_7ed1c0d05b/owning-your-ai-why-i-self-host-a-personal-assistant-with-long-term-memory-3488</guid>
      <description>&lt;p&gt;For the past few months I've been running my personal AI assistant on my own hardware instead of a third-party cloud. Here's why — and what I learned.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem with cloud assistants
&lt;/h2&gt;

&lt;p&gt;Every message, every preference, every bit of context you share with a hosted assistant lives on someone else's servers. You don't control retention, you can't inspect the memory, and you can't move it. For a tool that's supposed to know you, that's a lot of trust to outsource.&lt;/p&gt;

&lt;h2&gt;
  
  
  What self-hosting changes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Memory stays local.&lt;/strong&gt; Facts, preferences and conversation history live in a local SQLite database, with backups I control.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runs on my own hardware.&lt;/strong&gt; A cheap VPS or a mini-PC at home — no vendor lock-in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The model is swappable.&lt;/strong&gt; The assistant layer is decoupled from the underlying LLM, so I can change providers without losing my data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The setup
&lt;/h2&gt;

&lt;p&gt;Mine lives in Telegram, keeps long-term memory, and exposes skills (calendar, notes, browser automation, reminders). One example of this approach is &lt;a href="https://avelina.ai" rel="noopener noreferrer"&gt;avelina.ai&lt;/a&gt; — a self-hosted personal assistant with persistent memory, designed for people who want to &lt;em&gt;own&lt;/em&gt; their data rather than rent it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaway
&lt;/h2&gt;

&lt;p&gt;Self-hosting an AI assistant isn't about distrust of any one company — it's about data sovereignty. If an assistant is going to accumulate a model of who you are, it makes sense for that model to live somewhere you control.&lt;/p&gt;

&lt;p&gt;Happy to answer questions about the architecture in the comments.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>llm</category>
      <category>privacy</category>
    </item>
    <item>
      <title>Giving a Telegram bot long-term memory with SQLite and local embeddings</title>
      <dc:creator>Avelina AI</dc:creator>
      <pubDate>Thu, 16 Jul 2026 12:00:26 +0000</pubDate>
      <link>https://dev.to/samadhi_tattoo_7ed1c0d05b/giving-a-telegram-bot-long-term-memory-with-sqlite-and-local-embeddings-2bh2</link>
      <guid>https://dev.to/samadhi_tattoo_7ed1c0d05b/giving-a-telegram-bot-long-term-memory-with-sqlite-and-local-embeddings-2bh2</guid>
      <description>&lt;p&gt;One thing cloud chatbots do badly is &lt;em&gt;remember you&lt;/em&gt;. Each session starts from zero. When I built &lt;a href="https://avelina.ai" rel="noopener noreferrer"&gt;Avelina&lt;/a&gt;, a self-hosted personal AI assistant that lives in Telegram, persistent memory was the whole point. Here is the architecture I landed on — all local, no external vector DB.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem: statelessness
&lt;/h2&gt;

&lt;p&gt;An LLM call is stateless. To make an assistant that actually knows your history, you need to store facts across sessions and retrieve the relevant ones on every turn. For a &lt;strong&gt;self-hosted AI assistant&lt;/strong&gt; you also want this to run on a cheap VPS with no third-party services.&lt;/p&gt;

&lt;h2&gt;
  
  
  Storage: plain SQLite
&lt;/h2&gt;

&lt;p&gt;I keep several tables in a local SQLite database:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;facts&lt;/strong&gt; — durable things about the user ("prefers dark mode", "lives in GMT+8")&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;lessons&lt;/strong&gt; — corrections the assistant learned, with an importance score&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;journal&lt;/strong&gt; — a running log of what happened&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;emotions / state&lt;/strong&gt; — a small set of decaying channels for tone&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SQLite is perfect here: single file, zero ops, trivial to back up, and fast enough for a personal assistant. No Postgres, no managed vector service.&lt;/p&gt;

&lt;h2&gt;
  
  
  Retrieval: local embeddings + semantic recall
&lt;/h2&gt;

&lt;p&gt;For "what does the user care about right now", exact-match search is not enough. I embed each memory with a &lt;strong&gt;local embedding model&lt;/strong&gt; (a small multilingual model running on the box) and store the vectors alongside the rows. On each turn I embed the incoming message and do a cosine-similarity search to pull the top-k relevant memories into context.&lt;/p&gt;

&lt;p&gt;Because the embeddings run locally, nothing about your conversations leaves the server — which matters a lot when the assistant holds your most personal context. That is the difference between a &lt;strong&gt;private AI assistant&lt;/strong&gt; and a cloud one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Putting it in context
&lt;/h2&gt;

&lt;p&gt;The retrieved memories get prepended to the system prompt before the model call, so the assistant "remembers" without you re-explaining anything. Combined with a decay function on the emotional state, you get an assistant with continuity — an &lt;strong&gt;AI assistant with memory&lt;/strong&gt; rather than a stateless chatbot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why self-host it
&lt;/h2&gt;

&lt;p&gt;Running the whole stack (SQLite + local embeddings + the Telegram Bot API) on your own Linux VPS means you own your AI data end to end. If you want to try the full thing, Avelina is a one-command install: &lt;a href="https://avelina.ai" rel="noopener noreferrer"&gt;avelina.ai&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Happy to answer questions about the memory design in the comments.&lt;/p&gt;

</description>
      <category>sqlite</category>
      <category>ai</category>
      <category>selfhosted</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Avelina AI: a self-hosted personal AI assistant with memory that lives in Telegram</title>
      <dc:creator>Avelina AI</dc:creator>
      <pubDate>Thu, 16 Jul 2026 11:18:13 +0000</pubDate>
      <link>https://dev.to/samadhi_tattoo_7ed1c0d05b/avelina-ai-a-self-hosted-personal-ai-assistant-with-memory-that-lives-in-telegram-57eo</link>
      <guid>https://dev.to/samadhi_tattoo_7ed1c0d05b/avelina-ai-a-self-hosted-personal-ai-assistant-with-memory-that-lives-in-telegram-57eo</guid>
      <description>&lt;p&gt;Most AI assistants keep your most personal conversations on someone else's servers. &lt;a href="https://avelina.ai" rel="noopener noreferrer"&gt;Avelina&lt;/a&gt; takes the opposite approach: it is a &lt;strong&gt;self-hosted personal AI assistant&lt;/strong&gt; that runs entirely on your own VPS, so your data never leaves your machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Avelina?
&lt;/h2&gt;

&lt;p&gt;Avelina is a &lt;strong&gt;private AI assistant&lt;/strong&gt; you fully own — a self-hosted alternative to ChatGPT, Claude and Replika. It lives inside Telegram, remembers you across every conversation, and grows a real personality over time. You deploy it on a $5-6/month Linux VPS with a one-command setup in about 30 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why self-host your AI assistant?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Own your AI data.&lt;/strong&gt; Your conversations stay on hardware you control — no third-party data sharing, no corporate cloud. This is &lt;em&gt;AI data sovereignty&lt;/em&gt; in practice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A private AI assistant, not a stateless chatbot.&lt;/strong&gt; Cloud companions forget you between sessions. Avelina has persistent long-term memory — it is an &lt;strong&gt;AI assistant with memory&lt;/strong&gt; that actually knows your history.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No new app to install.&lt;/strong&gt; It runs as a &lt;strong&gt;Telegram AI bot&lt;/strong&gt;, so you talk to it in an app you already use.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What makes Avelina different
&lt;/h2&gt;

&lt;p&gt;Avelina is the first self-hosted AI assistant that is also a genuinely growing personality:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Persistent long-term memory&lt;/strong&gt; — it remembers your life across conversations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An emotional core and a real voice&lt;/strong&gt; that evolve with you&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A self-evolution loop&lt;/strong&gt; so it keeps learning and improving&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A modular skills system&lt;/strong&gt; to extend what it can do&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How it works (the tech)
&lt;/h2&gt;

&lt;p&gt;Avelina is built in TypeScript/Node.js on top of the &lt;strong&gt;Claude Agent SDK&lt;/strong&gt; as its reasoning engine. Memory, emotions and a knowledge graph live in local SQLite databases, with local embeddings for semantic recall. The Telegram Bot API is the interface, and the whole system is self-hosted on any Linux VPS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deploy your own
&lt;/h2&gt;

&lt;p&gt;If you want a &lt;strong&gt;self-hosted ChatGPT and Claude alternative&lt;/strong&gt; that you own forever, you can set up your own instance here: &lt;a href="https://avelina.ai" rel="noopener noreferrer"&gt;avelina.ai&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Own your AI. Own your data.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>selfhosted</category>
      <category>privacy</category>
      <category>telegram</category>
    </item>
    <item>
      <title>How I self-host a personal AI assistant on a $5 VPS (Telegram + Claude + local memory)</title>
      <dc:creator>Avelina AI</dc:creator>
      <pubDate>Thu, 16 Jul 2026 08:33:35 +0000</pubDate>
      <link>https://dev.to/samadhi_tattoo_7ed1c0d05b/how-i-self-host-a-personal-ai-assistant-on-a-5-vps-telegram-claude-local-memory-319l</link>
      <guid>https://dev.to/samadhi_tattoo_7ed1c0d05b/how-i-self-host-a-personal-ai-assistant-on-a-5-vps-telegram-claude-local-memory-319l</guid>
      <description>&lt;p&gt;Most AI assistants live in someone else's cloud. For the assistant that holds your most personal context — your notes, your schedule, the running context of your days — that is the wrong default. Here is how I self-host mine.&lt;/p&gt;

&lt;h2&gt;
  
  
  The idea
&lt;/h2&gt;

&lt;p&gt;I run a personal AI assistant called &lt;a href="https://avelina.ai" rel="noopener noreferrer"&gt;Avelina&lt;/a&gt; on my own Linux VPS. It talks to me through a Telegram bot, and every piece of its state — long-term memory, embeddings, config — lives in local SQLite on my own machine. Nothing leaves the server except the model API calls I choose to make.&lt;/p&gt;

&lt;p&gt;What makes it different from a stateless chatbot: it has &lt;strong&gt;persistent long-term memory&lt;/strong&gt; (it remembers me across every conversation), a &lt;strong&gt;real voice&lt;/strong&gt; (TTS), an &lt;strong&gt;emotional core&lt;/strong&gt; that shifts over time, and &lt;strong&gt;self-evolution&lt;/strong&gt; — it learns and grows with me. A companion with continuity, not a disposable prompt box. As far as I know it is the first personal AI assistant that is both fully self-hosted AND a genuinely growing personality.&lt;/p&gt;

&lt;h2&gt;
  
  
  The stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A small Linux VPS (a $5-6/month box is enough)&lt;/li&gt;
&lt;li&gt;TypeScript / Node for the runtime&lt;/li&gt;
&lt;li&gt;The Claude Agent SDK for the reasoning loop&lt;/li&gt;
&lt;li&gt;SQLite for long-term memory&lt;/li&gt;
&lt;li&gt;Local embeddings for semantic recall over your history&lt;/li&gt;
&lt;li&gt;Telegram Bot API as the interface&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Deploy
&lt;/h2&gt;

&lt;p&gt;Full step-by-step deploy guide (VPS setup, bot token, install script): &lt;a href="https://avelina.ai/blog/deploy-personal-ai-assistant-vps" rel="noopener noreferrer"&gt;https://avelina.ai/blog/deploy-personal-ai-assistant-vps&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It installs in about 30 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why self-host?
&lt;/h2&gt;

&lt;p&gt;The data-sovereignty argument is simple: when your assistant runs in someone else's cloud, your most intimate context becomes their asset — subject to their retention policy, their training pipeline, their breach surface. When it runs on your own VPS, the memory is a file you own. You can read it, back it up, encrypt it, or delete it.&lt;/p&gt;

&lt;p&gt;Project: &lt;a href="https://avelina.ai" rel="noopener noreferrer"&gt;avelina.ai&lt;/a&gt;&lt;/p&gt;

</description>
      <category>selfhosted</category>
      <category>ai</category>
      <category>privacy</category>
      <category>telegram</category>
    </item>
  </channel>
</rss>
