<?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: Foreverse</title>
    <description>The latest articles on DEV Community by Foreverse (@foreverseapp).</description>
    <link>https://dev.to/foreverseapp</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%2F4046848%2F0f0a4120-8fe5-4a3a-af15-ce2a3317136b.png</url>
      <title>DEV Community: Foreverse</title>
      <link>https://dev.to/foreverseapp</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/foreverseapp"/>
    <language>en</language>
    <item>
      <title>SillyTavern on Android: Termux vs Cloud vs Native App, the Real Trade-offs</title>
      <dc:creator>Foreverse</dc:creator>
      <pubDate>Sun, 26 Jul 2026 11:06:40 +0000</pubDate>
      <link>https://dev.to/foreverseapp/sillytavern-on-android-termux-vs-cloud-vs-native-app-the-real-trade-offs-5463</link>
      <guid>https://dev.to/foreverseapp/sillytavern-on-android-termux-vs-cloud-vs-native-app-the-real-trade-offs-5463</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://foreverse.app/blog/sillytavern-on-android-three-ways" rel="noopener noreferrer"&gt;Foreverse blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/SillyTavern/SillyTavern" rel="noopener noreferrer"&gt;SillyTavern&lt;/a&gt; is a Node.js server that happens to draw a chat window. That one architectural fact decides everything about phones: Android treats long-running background processes as a problem to be solved, and a self-hosted web server is exactly the kind of process it solves. Every "SillyTavern on Android" thread is really arguing about a single question. Where should the server live?&lt;/p&gt;

&lt;p&gt;Three answers exist in 2026: on the phone itself inside Termux, on a rented machine somewhere else, or nowhere, because a native app replaced the server entirely. Disclosure before anything else: we build &lt;a href="https://foreverse.app/roleplay" rel="noopener noreferrer"&gt;Foreverse&lt;/a&gt;, the app in that third road, so weigh our judgment accordingly. We have tried to describe the first two roads the way their own communities describe them, because each of the three is the right answer for somebody.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is a phone the hard case for SillyTavern?
&lt;/h2&gt;

&lt;p&gt;Desktop SillyTavern assumes a machine that stays awake. The Node server holds your cards, chats and API keys, and a browser talks to it at &lt;code&gt;localhost:8000&lt;/code&gt;. Phones break the assumption: Android suspends and kills background work to save battery, so the server half of SillyTavern needs life support (Termux), different housing (a cloud box), or replacement (a native app).&lt;/p&gt;

&lt;p&gt;That is the entire decision tree. Everything below is the concrete version of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Road one: Termux, where the install is easy and staying alive is not
&lt;/h2&gt;

&lt;p&gt;The official Android route puts a Linux userland on the phone and runs the server there. Four commands, per the &lt;a href="https://docs.sillytavern.app/installation/android-(termux)/" rel="noopener noreferrer"&gt;official Termux guide&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pkg update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; pkg upgrade
pkg &lt;span class="nb"&gt;install &lt;/span&gt;git nodejs
git clone https://github.com/SillyTavern/SillyTavern &lt;span class="nt"&gt;-b&lt;/span&gt; release
&lt;span class="nb"&gt;cd &lt;/span&gt;SillyTavern &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; ./start.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then open &lt;code&gt;localhost:8000&lt;/code&gt; in Chrome. Cost: zero dollars, full data ownership, every extension the desktop build has. The bill arrives later, as process management.&lt;/p&gt;

&lt;p&gt;The first trap sits before the first command: the Termux build you want comes from &lt;a href="https://f-droid.org/en/packages/com.termux/" rel="noopener noreferrer"&gt;F-Droid&lt;/a&gt;, not the Play Store, whose listing has been stale for years. That alone filters out the half of the audience that has never sideloaded an app store.&lt;/p&gt;

&lt;p&gt;The second trap is the one people write forum posts about at 2am. Since Android 12, the OS enforces a system-wide cap of 32 "phantom" child processes and kills the excess without telling you; a Node server spawned from a shell session is a textbook phantom process. The Termux tracking issue for this, &lt;a href="https://github.com/termux/termux-app/issues/2366" rel="noopener noreferrer"&gt;termux-app #2366&lt;/a&gt;, has been open for years. The standard workaround needs a PC:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;adb shell device_config put activity_manager max_phantom_processes 2147483647
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and on many devices it quietly reverts after a reboot unless you also disable config syncing. &lt;code&gt;termux-wake-lock&lt;/code&gt; and a battery-optimization exemption help with ordinary screen-lock kills, but vendor ROMs from Samsung, Xiaomi and friends layer their own process killers on top of stock Android's, and they do not read your wake lock as a promise.&lt;/p&gt;

&lt;p&gt;Updates are a smaller, steadier tax: &lt;code&gt;git pull&lt;/code&gt;, reinstall dependencies, wait while native modules rebuild on a phone CPU. If you enjoy terminals, none of this will scare you, and an 8 GB flagship handles the load fine. This road rewards exactly one kind of person: the one who reads a process-lifecycle bug report for fun.&lt;/p&gt;

&lt;h2&gt;
  
  
  Road two: the cloud, where battery problems become ops problems
&lt;/h2&gt;

&lt;p&gt;Host SillyTavern on a small VPS for $3–6 a month and every phone limitation disappears at once. The server never sleeps, any browser can reach it, chats and cards follow you across devices. The trade: you now administer a public web server that holds your API keys, and the configuration that keeps strangers out is your job, not a default.&lt;/p&gt;

&lt;p&gt;Out of the box SillyTavern only answers localhost. Opening it to your phone means setting &lt;code&gt;listen: true&lt;/code&gt;, dealing with the IP whitelist that is on by default, and enabling &lt;code&gt;basicAuthMode&lt;/code&gt; so the login page exists at all; the &lt;a href="https://docs.sillytavern.app/" rel="noopener noreferrer"&gt;official docs&lt;/a&gt; walk through each switch, and they are blunt about why. Port scanners find naked instances. An unauthenticated tavern on a public IP is somebody else's free API key the day it is discovered.&lt;/p&gt;

&lt;p&gt;Latency, the objection people expect, mostly is not one: the model call leaves from the server, so the phone only pushes UI traffic. The real recurring cost is quieter. Distro updates, a Node upgrade that breaks the build, a disk that fills with chat logs and generated images, a TLS certificate that expires on a weekend. None of it is hard. All of it is yours. This road fits people who already run a VPS for something else, anyone living across three devices, and every iPhone user, since iOS has no Termux equivalent at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  Road three: a native app, where the server stops existing
&lt;/h2&gt;

&lt;p&gt;A native tavern app ships the chat runtime inside an ordinary Android app. No Node process, no Termux session to babysit, no VPS invoice. The evaluation question changes shape: not "will it stay up?" but "does my stuff import?" Cards, lorebooks, presets, regex pipelines, group chats, and the API keys you bring with you.&lt;/p&gt;

&lt;p&gt;Concretely, for our own entry in this lane: &lt;a href="https://foreverse.app/roleplay" rel="noopener noreferrer"&gt;Foreverse&lt;/a&gt; imports PNG cards (v2 and v3 chara chunks), JSON cards, and &lt;code&gt;.charx&lt;/code&gt; archives; lorebooks both embedded and standalone, including chara_card_v3 decorators; presets; regex scripts; SillyTavern group chat JSON; and cards fetched straight from a Chub, JanitorAI, Pygmalion or RisuRealm URL. We regression-test that claim against a collection of 1,500+ community files across 38 categories; in the last breadth matrix we drew from it, all 30 character cards imported 30/30 and rendered their opening screens 30/30, old English V1 relics included. Keys are BYOK across 62 providers, encrypted on the device, with calls streaming directly to the provider you configured.&lt;/p&gt;

&lt;p&gt;The honest gap: there is no third-party extension runtime. A desktop install with a hand-picked extension stack still wins any feature-checklist fight, and a few power features, vector-storage lorebooks and exact per-model token budgeting among them, are approximations on mobile today. Before switching, write down the three extensions you cannot live without and check each one by name. If one of them is load-bearing for your workflow, roads one and two are still your roads.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you choose without locking yourself in?
&lt;/h2&gt;

&lt;p&gt;Choose by the failure you are most willing to debug: process death (Termux), server administration (cloud), or a missing desktop extension (native app). The choice is lower-stakes than it looks, because the tavern ecosystem's file formats are the portable part. Cards move as PNG, JSON or charx; lorebooks as World Info JSON; presets and regex as JSON. Only chat histories need care.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Keep the exit open.&lt;/strong&gt; Before you commit to any road, export your cards as original PNGs and your lorebooks as JSON, and park a copy somewhere that is not the phone. We wrote a &lt;a href="https://foreverse.app/blog/sillytavern-backup-to-phone" rel="noopener noreferrer"&gt;separate walkthrough on moving a SillyTavern data folder&lt;/a&gt;; the short version is that the formats are the contract, and any road that honors them is reversible.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Our own answer is on record and biased: we built road three because we kept watching the same story — someone installs Termux, it works, a screen lock eats a session mid-scene, they post the phantom-process incantation, it reverts after a reboot, they give up or rent a VPS. Foreverse removes the process Android wants to kill instead of defending it. What it does not yet do is replicate a decade of desktop extensions, and we would rather say that here than have you discover it after the move.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Can I run SillyTavern on Android without Termux or a server?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not the desktop build itself: it is a Node.js application and needs a Node runtime somewhere. What you can do is run a natively built tavern-style app that reads the same files (PNG/JSON/charx character cards, World Info JSON lorebooks, presets, regex scripts) and keeps everything on the phone. Check the app's import coverage against your own library before committing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Android's phantom process killer, and can I turn it off?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Since Android 12, the OS caps background child processes (like a Node server spawned inside Termux) at 32 system-wide and silently kills the excess. You can raise the cap with adb from a PC: &lt;code&gt;device_config put activity_manager max_phantom_processes 2147483647&lt;/code&gt;. On many devices the setting reverts after a reboot unless you also disable config syncing, and aggressive vendor ROMs add their own killers on top.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is it safe to put a SillyTavern instance on a public VPS?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Only with authentication configured. SillyTavern ships with a whitelist that blocks remote access by default; to open it up safely you enable basic auth (and ideally TLS via a reverse proxy or tunnel) rather than just disabling the whitelist. Port scanners do find unauthenticated instances, and an open one exposes your API keys and chat history.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do lorebooks, presets and regex scripts move between the three roads, or only character cards?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The whole kit is portable in principle: cards are PNG/JSON/charx, lorebooks are World Info JSON, presets and regex scripts are JSON too. Portability in practice depends on the destination's import support, so test your most complex lorebook and your regex pipeline first. Chat histories are the least portable part; export them before you move.&lt;/p&gt;

</description>
      <category>android</category>
      <category>ai</category>
      <category>llm</category>
      <category>sillytavern</category>
    </item>
    <item>
      <title>Our LLM Judges Called Human Writing "AI-Flavored" 88% of the Time</title>
      <dc:creator>Foreverse</dc:creator>
      <pubDate>Sat, 25 Jul 2026 12:41:50 +0000</pubDate>
      <link>https://dev.to/foreverseapp/our-llm-judges-called-human-writing-ai-flavored-88-of-the-time-4g4m</link>
      <guid>https://dev.to/foreverseapp/our-llm-judges-called-human-writing-ai-flavored-88-of-the-time-4g4m</guid>
      <description>&lt;p&gt;The setup was textbook. Four LLM judges on different base models. Double-blind pairs. Both presentation orders, to cancel position bias. Gold anchors seeded into the pool — samples where humans had already reached a verdict, including character-card copy a real user had flagged as "obviously AI" on sight, and community cards written by humans that had accumulated over a million conversations.&lt;/p&gt;

&lt;p&gt;All the judges had to do was answer, for the anchors, "which of these two reads more human?" They scored &lt;strong&gt;12%&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failure one: not noisy — inverted
&lt;/h2&gt;

&lt;p&gt;Twelve percent is the interesting kind of failure. A coin flip scores 50%; a noisy judge hovers around it. Scoring 12% means the panel was &lt;em&gt;confidently wrong in a consistent direction&lt;/em&gt;: the copy humans called AI, judges praised as "grounded, textured, clearly human"; the human-written hits, judges dismissed as "formulaic, likely generated."&lt;/p&gt;

&lt;h2&gt;
  
  
  Failure two: agreement without accuracy
&lt;/h2&gt;

&lt;p&gt;Pairwise agreement across the four judges was 86%. Before the experiment we'd planned to use majority voting for robustness. That plan died here: voting cancels independent random errors, but these errors weren't independent — the judges shared the same learned bias and converged on the same wrong answers. High consensus made the panel &lt;em&gt;look&lt;/em&gt; more trustworthy while being reliably backwards. Separately, in about a third of the pairs, simply swapping presentation order flipped the verdict — position bias is a documented LLM-as-judge failure mode (the &lt;a href="https://arxiv.org/abs/2306.05685" rel="noopener noreferrer"&gt;MT-Bench paper&lt;/a&gt; measured it systematically); we just met it again in our own data.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The bias, named.&lt;/strong&gt; Reading the judges' rationales, two substitutions kept surfacing: they treated &lt;strong&gt;detail density as humanity&lt;/strong&gt;, and &lt;strong&gt;ordinariness as fakeness&lt;/strong&gt;. AI-polished copy — precise numbers, perfect structure, a hook per paragraph — read to them as "lived-in." Human copy — with its filler, lazy adjectives, and repetition — read as "generic." One detail stung: community-style stat-bar formatting in human cards was cited as "evidence of real community interaction"… and the same formatting in our imitation cards earned the same praise.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Failure three: prompting rescues one model family, not the rest
&lt;/h2&gt;

&lt;p&gt;After the first round collapsed, we ran a dedicated calibration round — corpus expanded to 17 pairs, more heterogeneous judges — with an explicit debiasing preamble spelling out, among other things, that detail density is not evidence of humanity. A Claude-family judge jumped to 83% (the original four-judge setup had scored 12%): its bias lived at the prompt layer. DeepSeek, GLM and Qwen didn't move past 25–33% with the identical preamble; their prior sits deeper than instructions reach — they even cited the community stat-bar formatting our imitation cards copied as "evidence of real community interaction." Even the rescued judge only barely clears the calibration bar we now enforce, so "barely usable, single configuration" is the honest summary.&lt;/p&gt;

&lt;h2&gt;
  
  
  The rule we adopted
&lt;/h2&gt;

&lt;p&gt;One sentence went into our engineering standards after this: &lt;strong&gt;an LLM judge that has not passed gold calibration (≥80% on human-consensus anchors) must not be used as an optimization target.&lt;/strong&gt; Not for scoring, not for regression gates, not for leaderboards. Our current stack is three layers: a rule-based detector (phrase blacklists plus sentence-pattern quotas, calibrated against real user judgments — we once had to fix a rule that false-flagged human scenery writing, after which human samples scored clean) as the daily gate; human spot checks as ground truth; LLM blind review only for relative before/after comparisons of the same text.&lt;/p&gt;

&lt;p&gt;And the honest boundary: we hold samples of carefully templated AI copy that dodge every pattern rule and sail past both the detector and the judges. The deepest layer of AI flavor lives in whole-text texture — uniform detail density, zero idle sentences, immaculate structure — and nothing automated currently catches it. What catches it is still a well-read human, reading aloud, frowning at the right moment.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://foreverse.app/blog/llm-judges-called-humans-ai" rel="noopener noreferrer"&gt;Foreverse blog&lt;/a&gt;. We build &lt;a href="https://foreverse.app" rel="noopener noreferrer"&gt;Foreverse&lt;/a&gt;, an Android AI reading app; this calibration round is part of the public eval data behind the product's AI-flavor detection.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>testing</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>We Ran 360 Rounds of AI Novel Continuation. Models Fail Long Fiction in Exactly Three Ways</title>
      <dc:creator>Foreverse</dc:creator>
      <pubDate>Sat, 25 Jul 2026 12:41:38 +0000</pubDate>
      <link>https://dev.to/foreverseapp/we-ran-360-rounds-of-ai-novel-continuation-models-fail-long-fiction-in-exactly-three-ways-4ial</link>
      <guid>https://dev.to/foreverseapp/we-ran-360-rounds-of-ai-novel-continuation-models-fail-long-fiction-in-exactly-three-ways-4ial</guid>
      <description>&lt;p&gt;We have now run 360 rounds of novel continuation across nine models and two books — an 8.9M-character Chinese fantasy epic and the palace-intrigue classic &lt;em&gt;Empresses in the Palace&lt;/em&gt;. Same protocol every time: continue from a fixed anchor, 20 consecutive rounds, each round's output appended back into a fixed 16k-token window, then double-blind review with two randomized letter mappings. Every long-run failure we observed fits one of three patterns.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pattern one: the restart loop
&lt;/h2&gt;

&lt;p&gt;The model ignores everything generated so far and restarts from the original text's ending — every single round. Gemini 3.1 Pro did this for 20 out of 20 rounds in the fantasy run: twenty phrasings of the same opening instant, a story that never takes its second step.&lt;/p&gt;

&lt;p&gt;The root cause was ours, not the model's. Our context labels which passages are original prose and which are earlier AI continuations, and the explanation line said AI passages were "for plot continuity reference". Gemini read "reference" as "not canon" and skipped them all. Three ablations pinned it: old wording, 20/20 restarts; label with no explanation at all, still roughly 6 of 8 rounds restarting; explanation rewritten to state the passages are canonical events that must be treated exactly like original prose — zero restarts in 28 rounds across both books. One sentence of prompt wording was the entire difference between disqualification and mid-table.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pattern two: the mid-run freeze
&lt;/h2&gt;

&lt;p&gt;The model advances normally, then locks onto its own recent output and repeats it verbatim. Grok 4.5 froze in the middle windows of the fantasy run — one stretch repeats the same two paragraphs three times word for word — then partially recovered. On the palace novel it froze harder: both blind reviewers independently wrote "plot rewind" in their notes, and across twenty rounds the story clock never left the afternoon of the inciting incident. Kimi K2.6 showed a milder version, copying whole passages from its own earlier rounds.&lt;/p&gt;

&lt;p&gt;This is the classic autoregressive fixed point: as the context fills with the model's own text, imitating itself becomes easier than advancing. It is also why one-shot writing benchmarks miss it entirely — the loop needs rounds to build up.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pattern three: the ending rewind
&lt;/h2&gt;

&lt;p&gt;The strangest one, and it hit the best prose mimic in the field. GPT-5.6 Terra's early and middle windows were, by both reviewers' judgment, the closest thing to the original author anyone produced — it even reproduced micro-habits like tilde-marked onomatopoeia and the author's trademark comma rhythm. Then in rounds 18 through 20 it rewound the entire plot back to the anchor point and replayed chapter one, reusing lines from its own round-2 output. Texture stayed perfect; the story folded back on itself.&lt;/p&gt;

&lt;p&gt;The lesson we take from it: surface mimicry and long-range plot coherence are separate capabilities. A model can hold an author's voice flawlessly while losing track of where the story is. On the palace novel, for what it's worth, Terra never rewound — it took first-tier placement with a zero-incident run.&lt;/p&gt;

&lt;h2&gt;
  
  
  What survived twenty rounds
&lt;/h2&gt;

&lt;p&gt;DeepSeek V4 Flash won the fantasy run outright — the only system both reviewers called "improving as it goes", still opening new plot arcs at round 20. Then it dropped to sixth-seventh on the palace novel, where its plain-spoken instincts fight the author's ornate register, and its sibling V4 Pro — criticized in fantasy for writing "like a finer-penned author" — took first place, because a finer pen is exactly what that book is written with. GLM 5.2 was the only model in the top three of both genres, with one persistent quirk: half-width quotation marks in Chinese prose, in every run, on both books.&lt;/p&gt;

&lt;p&gt;No universal ranking survives contact with a second genre. If your app locks you to one model for a whole book, that is a real cost; per-paragraph model switching on continuation is not a luxury feature, it is how you route around each model's failure pattern before it locks in.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://foreverse.app/blog/three-ways-llms-fail-long-fiction" rel="noopener noreferrer"&gt;Foreverse blog&lt;/a&gt;. We build &lt;a href="https://foreverse.app" rel="noopener noreferrer"&gt;Foreverse&lt;/a&gt;, an Android reader that lets you continue any novel with AI — every direction becomes a branch, the original text stays intact. The eval data behind our model choices is public.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>machinelearning</category>
      <category>writing</category>
    </item>
  </channel>
</rss>
