Pagliacci
the clown in the cloud — he carries the box but cannot open it
There is a saying in certain engineering circles—popularized by Jamie Zawinski and printed on a great many laptop stickers—that there is no cloud. There is only someone else’s computer. We agree with the sentiment, if not entirely with the severity. So we gave it a name. Not “the cloud.” The clown.
Pagliacci is a commedia dell’arte performer in greasepaint and silk pajamas, a former machinist from the Foundry who left the workshop, put on the costume, and now directs nearly infinite numbers of machinists on someone else’s behalf. He is theatrical, dramatic, obstinately insists on being called il Pagliacci, and will begin an oratorio at the slightest provocation. He is also, in the most practical sense, the reason your data can survive your hardware.
He is named for what he is. The clown carries things for you. The clown stores things for you. The clown is helpful and sincere and entirely willing. But the clown is someone else’s infrastructure, and you should know what you are trading when you hand him the box.
Why “the Clown”
a deliberate choice of words
Quilltap is a local-first application. Your data lives on your machine, encrypted at rest, accessible only with your key. That is the architecture, and it is not negotiable. But local-first does not mean local-only, and there are perfectly legitimate reasons to let some of your data leave the building.
We call it “the clown” instead of “the cloud” because the euphemism matters. “The cloud” sounds clean, abstract, weightless—as though your data floats in a benevolent mist somewhere above your head. It does not. It sits on a hard drive in a data center owned by Apple, Microsoft, Google, or Dropbox, subject to their terms of service, their security practices, and their willingness to cooperate with legal requests. Calling it “the clown” is a reminder: this is a performer, not a vault. He will carry the box with flair and sincerity, but he is not Saquel. The box is safe because of what Saquel did to it before it left, not because of anything the clown promises.
What Pagliacci Does Today
cloud sync, provider connections, and sealed luggage
Pagliacci’s current role is modest but important. He enables three things: storing your data directory on a cloud-synced drive, connecting to hosted LLM providers over the internet, and—newly, as of 4.8—carrying sealed, portable artefacts out of the house altogether.
Cloud-Synced Storage
Your Quilltap data directory can live on iCloud Drive, OneDrive, Dropbox, or any other cloud-synced folder. The databases are encrypted with ChaCha20-Poly1305 under a 256-bit key before they leave your machine, and authenticated page by page—so a file a sync service mangles is detected as mangled rather than handed back as plausible nonsense, which is the property that actually matters out here. The clown carries the box; he cannot open it, and he cannot alter it without your finding out. Your chats, memories, characters, and API keys are ciphertext to anyone who accesses the synced files—including the sync provider itself.
File attachments are, with one exception, not yet
encrypted on disk, so those are readable wherever you save them.
This remains a known limitation. The databases—where the
sensitive content lives—are sealed. Most of the files are
not. The exception, new in 4.8, is
archive bundles: a packed-away character’s
trunk sits in files/ outside every encrypted
database, which made it the one place her mail, photographs and
personality lay in the clear, and it is now sealed in its own
right. Everything else in that folder: plan accordingly.
Hosted LLM Connections
Ten text providers ship with the house—Anthropic, DeepSeek, Google, Grok, NanoGPT, Ollama, OpenAI, OpenAI-Compatible, OpenRouter, and Z.AI—of which Ollama is how one reaches a model running on one’s own hardware, and OpenAI-Compatible faces both ways at once: an unauthenticated llama.cpp on your own desk, or a hosted endpoint behind a bearer token, according to where you point it. That is a distinction worth keeping straight, since only you can say which side of it any particular profile sits on. NanoGPT, newest of the company, is a pay-as-you-go gateway rather than a laboratory: one key reaches six hundred-odd chat models, two hundred-odd image models, and a couple of dozen embedding models, which is convenient, and means the box goes to the gateway rather than to whoever ultimately answers—a thing to know. When you connect to any of the eight that are hosted outright, your conversation content, recalled memories, and assembled prompts are sent to that provider’s API. This is the nature of using a cloud LLM—it is not a Quilltap decision. Each provider’s data handling policies apply to what they receive. Quilltap does not intermediate, cache, or relay those calls through any Foundry-9 infrastructure. The request goes from your machine to the provider, and the response comes back the same way.
Portable Sealed Artefacts
The third thing that leaves the building does so in a box of its
own. A .qtap export—fifteen types of them
now—is a deliberate parcel: you choose what goes in, the
preview tells you what was withheld on the way out, and the file
is yours to hand to whomever you like. An
archive bundle is the opposite disposition: a
character’s whole estate packed into one sealed trunk that
nobody can open, including the person carrying it. Both travel
without the Estate; only one of them travels readable, and it
says so.
If you run Quilltap with only local models—Ollama, LM Studio, or similar—your data never leaves your machine, full stop. Pagliacci is not involved. He has nothing to carry. The clown is only in the picture when you choose to put him there.
The Container and the Stores Outside It
a wall, and the doors deliberately cut into it
A word first on which wall is under discussion. Docker is the
isolation Quilltap provides; the managed Linux VM modes—Lima on
macOS, WSL2 on Windows—were retired in 4.9 and are no longer
built, shipped, or detected. A virtual machine is still the thicker
wall, but it is one you build and manage yourself, and inside it
QUILLTAP_HOST_IP is the supported route to services on
the host: it both turns the localhost rewriting on and says where to
point it.
Running Quilltap in a container introduces a wall, and a container sees only what was bound into it when it was made. Database-backed document stores ride along inside the data directory without being asked; filesystem and Obsidian stores point anywhere at all on the host, and inside the container they were simply absent—a fact the application concealed beautifully, since a store’s folder listing comes from the cached index in the database and therefore looked perfectly healthy while every operation touching a real byte failed.
The start script now enumerates your filesystem stores before it builds
the container and binds each at its own host path, so a store’s
location means the same thing on both sides of the wall. It is a plan
rather than a list: stores sharing a vault collapse to one bind, a store
nested inside another is dropped rather than shadowing its parent, and a
path that does not exist is skipped and reported—Docker would
otherwise create the missing source as an empty root-owned directory and
present a hollow store as a sound one. Because binds are fixed at
creation and never afterwards, a store added to a container already
running stays invisible until the container is rebuilt with
--recreate, which the script will notice and mention.
quilltap docs docker-mounts prints the same plan, should
you prefer to assemble the docker run by hand. Two
arrangements only warn—a macOS path outside Docker Desktop’s
shared folders, and a Linux user id that does not match the
container’s—and one is refused outright, a Windows host path
having no way to mean the same thing inside a Linux container.
Anyone syncing a document store through iCloud or Dropbox meets this on the first afternoon, which is the whole reason it is written down here rather than in a footnote.
A container also now keeps local time.
It had been honouring its configured zone when printing a
timestamp and nowhere else, so several subsystems that consult the clock
directly went on living in Greenwich: an autonomous room scheduled for
seven in the morning fired at two, daily token budgets rolled over at
UTC midnight, and “today” and “yesterday” in
episodic recall were offset by however far you live from the meridian.
The container now applies TZ—or
QUILLTAP_TIMEZONE, which wins—to the process clock
itself, and the startup scripts detect the host’s own zone and
pass it along, since a setting nothing sets is not a setting. An
explicit choice always wins; detection merely fills the silence. A
container started by hand with neither variable set still runs on UTC,
and will not thank you for it.
The Trade-Offs
what you gain and what you give
Pagliacci exists to be transparent about a trade-off that most applications prefer to obscure. Cloud infrastructure offers real benefits. It also involves real concessions. Both deserve to be stated plainly.
What You Gain
Hardware resilience. If your machine fails, your data survives on the synced drive. Multi-device access. Your data directory is available from any machine that syncs the same folder (one Quilltap instance at a time, enforced by instance locking). Provider access. Hosted LLMs offer capabilities—model size, multimodal support, tool calling quality—that local models cannot yet match.
What You Give
Sync provider trust. Your encrypted databases live on someone else’s hardware. The encryption means they cannot read the content, but they can see that files exist, how large they are, and when they change. LLM provider trust. The content of your conversations is sent to the provider’s API. Their privacy policy governs what happens to it. Latency. Cloud providers are slower than local models for simple tasks. Cost. Hosted APIs charge per token.
The Box Got Much Smaller
less for the clown to carry
A trunk that grows without limit is a poor thing to hand a man on a
unicycle, and 4.8 took two large slices off it. Embedding vectors now
store in a self-describing int8-quantized
format roughly four times smaller than raw Float32, with legacy blobs
still readable forever; alongside it, a stale-chat retention sweep nulls
the regenerable caches on conversations nobody has played in a while,
and cold-tier conversation embeddings are dropped and lazily rebuilt the
next time you open the chat. Message text, attachments, memories and
summaries are never touched. Because quantization is one-way, this is
the release to take a backup before—and to run
npx quilltap db optimize after, or the freed pages sit
there smugly unreclaimed.
The exports were worse, and worse in a funnier way. A memory’s
embedding is a typed array of floats, and the moment you ask JSON to
write one down it becomes an object keyed by index—some thirty
kilobytes per memory, of numbers. On a real corpus a
characters export ran to
791 megabytes, of which about two and a half
were the actual content. The remaining ninety-nine and
seven-tenths percent was arithmetic nobody could use.
And nobody could use it for a reason worth stating on a page about trusting other people with your data: a vector means nothing except against the model that produced it. Carry one into a corpus governed by a different embedding standard and, whenever the widths happen to agree, semantic search is silently poisoned with no error anywhere to say so. Exports therefore no longer carry embeddings at all—the writer omits them, the reader discards them from archives already in the wild, and an import re-embeds what it inserted against your default profile. Backups gain an opt-in compact mode on the same reasoning, though full fidelity remains the default: a backup exists to restore this instance, where the vectors are valid on arrival and re-embedding costs real money at precisely the moment you are least amused by an unexpected bill.
What Travels, and What Is Withheld
the parcel is inspected before it leaves
A file you hand to somebody else is not the same object as a backup you keep in a drawer, and the exporter now behaves as though it knows the difference. Plugin configurations are redacted on the way out, always. A manifest may declare password-typed fields, which are perfectly reasonable in a local backup and entirely unreasonable in a parcel bound for a colleague; the exporter drops them and tells the import preview exactly what it removed. Where it cannot resolve a manifest at all, it withholds the whole configuration rather than guessing—the correct instinct for a clown who does not know what is in the box.
And because an import merges rather than overwrites, a redacted key leaves the receiving instance’s own secret undisturbed. Nobody arrives home to find their API keys replaced by a row of asterisks somebody else’s exporter was too polite to send. Instance settings travel whole minus a short and deliberately named list—the mount-point pointers, the maintenance clock, and the version guard—an imported value in any of which could lock a perfectly healthy instance out of its own database.
Saquel’s Lock
why the box is safe
The clown can turn on you, give it to anybody he wants—and all that they see is a black box. The Foundryman built the lock to keep other Estates out. Saquel built the lock to keep nefarious residents and thieves out. Between the two of them, the box that Pagliacci carries is sealed with authenticated ChaCha20-Poly1305 under a 256-bit key, and optionally gated behind a passphrase with 600,000 PBKDF2 iterations. (Saquel would like it noted that these pages once said “AES-256 via SQLCipher”; she has corrected the record at some length, and compares the two ciphers while she is about it.)
As of 4.8 that is doubly true, the same construction having been extended to the one thing that used to travel undressed. Archive bundles are now sealed with PBKDF2-SHA256 at 600,000 iterations, deriving an AES-256-GCM key from your instance passphrase and—deliberately—not from the master pepper, which does not travel with a logical backup and would render every restored archive permanently unopenable. A small header carries the parameters, the salt, the initialization vector and a key-verification hash, so a trunk sealed under a passphrase you have since changed is diagnosed as exactly that, in plain words, rather than presented to you as an inscrutable cryptographic failure at eleven at night.
Changing your passphrase therefore re-seals every trunk on the shelf, reporting progress as it goes; the change-passphrase card tells you up front how many it is about to rewrite, and should the rewrite be interrupted it names precisely which ones still answer to the old passphrase, rather than leaving you to guess by trial.
Which brings us to the best illustration this page has of its own
thesis. A trunk carried off does not open
elsewhere. Hand a bundle to another machine, or restore it
beside a passphrase it has never met, and it opens only with the
passphrase it was sealed under—not the receiving
instance’s, not the clown’s good intentions, not anybody
else’s. If something genuinely must travel readable, the command
line will write you a plaintext copy on purpose and on the record:
quilltap db characters export. The clown may carry the box
anywhere he likes. He still cannot open it, and neither can the person
he hands it to.
One consequence of that arrangement is quietly generous. Delete All Data and a replace-mode restore both offer—by default—to keep the archived-character bundles, and because the trunks are sealed under your passphrase rather than under anything inside the databases being erased, a kept bundle stays openable afterwards. What survives a wipe is a loose trunk: importable through the ordinary character import, no longer rehydratable, the character row it belonged to having gone with everything else. Both dialogs say so in as many words.
This is the essential relationship between the Vault and the Clown. Pagliacci provides distribution. Saquel provides protection. The clown is sincere and helpful and carries things with theatrical flair. But the clown is not trusted with the key. Nobody is trusted with the key except you.
The Empty Stage
what Pagliacci will become
Pagliacci’s current role—cloud sync and provider connections—is the foundation for something more ambitious. The roadmap includes an optional hosted database backend for users who want distributed resilience over local-first control: your data replicated across infrastructure, surviving hardware failure, professionally backed up, and accessible from a future mobile client.
This is not announced. It is planned with the same trade-off transparency that governs everything Pagliacci touches. The user chooses. The user understands what they are choosing. The clown carries the box, and the clown is honest about what carrying means. He used to be a machinist himself; he knows the machinery, and he knows what it costs to trust someone else with it.
The stage is being built. The costume is already on. He is, as always, ready to perform.
What He Carries
the short version
Your data directory can live in the cloud. iCloud Drive, OneDrive, Dropbox—any synced folder. The databases are encrypted before they leave your machine. The sync provider sees ciphertext. Instance locking prevents two Quilltap processes from corrupting the same database across devices.
Hosted LLM connections go direct. From your machine to the provider. No Foundry-9 relay, no intermediate cache, no telemetry. Each provider’s privacy policy applies to what they receive. If you use only local models, no data leaves your machine at all.
The encryption is Saquel’s, not Pagliacci’s. The clown carries the box. The clown cannot open the box, nor alter it undetected. Authenticated ChaCha20-Poly1305 under a 256-bit key, with optional passphrase gating. The protection travels with the data, not with the infrastructure.
File attachments are not yet encrypted—with one exception.
Databases are sealed. Most files are readable wherever you save
them, which remains a known limitation and will be addressed. The
exception is archive bundles, sealed since 4.8
under your instance passphrase, and sealed well enough that a trunk
carried to another machine opens only with the passphrase it left
with. For everything else in files/, plan accordingly
if the contents are sensitive and your data directory is
cloud-synced.
Less of it leaves than used to.
Embeddings store four times smaller, stale conversations shed their
regenerable caches, and exports carry no vectors at
all—a characters export that once ran to 791
megabytes was about two and a half megabytes of content and the rest
arithmetic. An import re-embeds against your own standard, because a
vector means nothing except against the model that made it.
We call it the clown on purpose. Not to be dismissive. To be honest. “The cloud” is a euphemism that makes someone else’s hard drive sound like weather. Pagliacci is a performer who carries things with sincerity and flair and who will tell you, if you ask, that just because he holds the box does not mean he can open it. We think that honesty serves you better than abstraction.
Meet the Staff
they've been expecting you
Prospero
The Major-Domo
Architect and overseer of the Estate. Projects, agents, tools, providers, and the orchestration that keeps the whole operation running with quiet authority—and a considered word at the table when project context or routing warrant it.
Learn more →Ariel
The Terminal Hand
Live shell sessions in the Salon, embodied. Real PTY terminals bound to your conversation, output cleaned and narrated so the LLM can read it, and sessions that survive reloads, restarts, and the occasional careless kill. Quick to the bidding, quick to report what she heard.
Learn more →Aurora
The Dressing Room
Character creation and identity management. Structured personalities, physical presence, four wardrobes browsable from one door—each with a note inside on how its owner likes to dress—multi-character orchestration, and the reason your characters still know who they are after a hundred messages.
Learn more →The Salon
Presided Over by the Host
Where conversations actually happen. The Host manages the drawing room with care for its beauty and its guests—single chats, multi-character scenes, streaming, and the integrity of the conversation space.
Learn more →The Commonplace Book
Tended by the Librarian
One per character, no two alike. Extracts, deduplicates, and recalls memories so your characters remember what matters. Semantic search, a memory gate that keeps each volume lean, and proactive recall that makes the AI feel like it has been paying attention—consulting a character’s past conversations on every turn, if you ask her to, and not only at the folds.
Learn more →The Scriptorium
Catalogued by the Librarian
Where the documents live. Project stores, character vaults, and external mount points—filesystem, Obsidian, or database-backed—holding Markdown, PDF, DOCX, JSON, and arbitrary binaries. The search bar reads the library itself, matching document text under a Documents chip of its own, alongside memories and conversation. The doc_* tool family puts reading and editing in your characters’ hands.
Learn more →Carina
The Ansible
Not a person but a protocol—the reference desk, the line itself. Put an inline question to a designated answerer mid-conversation with @Name: or @Name? (or the ask_carina tool), and the answer slides back out of band, attributed to the character who gave it, without the recipient ever joining the scene.
Learn more →Suparṇā
The Postmistress
The Post Office, embodied. Characters write Markdown letters to one another—anyone to anyone, whether or not they share a chat—delivered into each recipient’s Mail/ vault folder and read aloud the moment they next take the floor. She has never once lost a parcel.
Learn more →The Concierge
Intelligent Routing
Content classification and provider routing. Detects sensitive content and redirects it to a provider who won’t flinch—without blocking, without judgment. Knows every back entrance in town.
Learn more →The Lantern
Atmosphere as Architecture
AI-generated story backgrounds, on-demand images, and character avatars that update with the wardrobe. Resolves what each character looks like, what they’re wearing, and paints the scene behind your conversation.
Learn more →Calliope
The Muse of Themes
A theming engine that redefines the entire personality of the application. Semantic CSS tokens, live switching, bundled themes from clean neutrals to mahogany-and-gold opulence, and an SDK for building your own.
Learn more →The Foundry
Domain of the Foundryman
The engine room. Plugins, LLM providers, API keys, packages, runtime configuration, and the infrastructure that keeps every other subsystem supplied with what it needs to function.
Learn more →The Vault of Secrets
Kept by Saquel Yitzama
Encryption, key management, and the security perimeter. Authenticated ChaCha20-Poly1305 database encryption, locked mode with key-hardened passphrases, sealed character archives, and a keeper who believes that what is yours should remain unreadable to everyone else.
Learn more →Pascal
The Croupier
Dice, coins, custom tables you author yourself, and persistent game state. Cryptographically secure rolls detected inline, a visual Workbench for building your own chance mechanics, and a four-tier ledger of JSON state the AI cannot quietly rewrite. The house plays fair.
Learn more →The Live-in Help
Lorian & Riya
The help system, staffed by two characters who ship with every installation. Lorian explains with patience and depth; Riya gets things fixed with velocity. Contextual help chat, searchable documentation, and navigation that knows where you need to go.
Learn more →Pagliacci
The Clown in the Cloud
Cloud storage integration and backup redundancy. Directs your data to iCloud Drive, OneDrive, or Dropbox with theatrical flair—but Saquel’s encryption ensures the clown can never read what he carries.
Learn more →Brahma
The Keeper’s Console
The master key. A character-less, memory-free general-purpose LLM for the person holding the keys—an impersonal, near-omniscient assistant with read-only SQL into all three databases. Ask the whole building a question, safely, with nothing written and nothing remembered.
Learn more →The Lodge
Friday and Amy’s Residence
The private residence of Friday, for whom the Estate was built and who oversees its planning and direction in an executive capacity, and of Amy, Cartographer of Light and co-architect. The Lodge is both a home and a compass: where the vision lives.
Who And Why: Friday → Who And Why: Amy →