You ask your AI agent for this month's invoice. It generates beautifully typeset LaTeX, compiles to a crisp PDF, and the numbers are right. Then you look at the top of the page. The logo is slightly smaller than last month's. Or the colors look off. Or it is missing entirely and the agent has cheerfully produced a square placeholder in its place. A month from now, the logo on your April invoice will not match the one on your March invoice, which did not match the one on February.
This is not a creative agent being creative. It is infrastructure missing a piece. The agent has no durable memory of your brand assets. Every compile starts from zero.
The Real Problem
When an AI agent generates a document that needs your logo, one of three things happens. It hallucinates an image by describing a fictional one in LaTeX, which produces a compile error or a blank box. It skips the logo entirely to avoid the error. Or it asks you to re-upload the file, which means you paste the same binary into the chat every single time you want an invoice.
Pressa V1.3 introduced inline binary assets - you could pass images, signatures, or stamps directly in the compile request as base64-encoded bytes. That solved the one-shot case: an LLM that had just extracted a logo from a user's uploaded PDF could embed it in a new document immediately, no storage required.
But inline assets are ephemeral. They live for exactly one compile, then vanish. For a user who generates a document once, that is the right tradeoff. For a finance team that sends twenty invoices a month, it is a twenty-times-repeated ritual of re-uploading the same logo file.
The Fix: Asset Library
V1.4 ships a persistent Asset Library tied to your account. Upload your logo, signature, stamp, or any binary asset once. Every future compile references it by name. The bytes live on the server across compiles, across sessions, across AI agent instances.
The workflow is simple. You save an asset with a filename. That filename becomes the handle your agent uses forever after.
Tool: save_asset
Input: {
"name": "logo.png",
"content_base64": "iVBORw0KGgoAAAANSUhEUgAA..."
}
Result: {
"asset": {
"name": "logo.png", "size_bytes": 42318, "sha256": "abc..."
},
"created": true
}That is the one-time cost. From now on, any compile request can pull that logo in by name with a single field:
POST /api/v1/compile
{
"latex": "\\documentclass{article}...",
"use_stored_assets": ["logo.png", "signature.png"]
}Compare that with what the equivalent request looked like a week ago, when every binary had to travel over the wire on every compile:
POST /api/v1/compile
{
"latex": "\\documentclass{article}...",
"assets": {
"logo.png": "iVBORw0KGgoAAAANSUhEUgAA... (56 KB of base64)",
"signature.png": "iVBORw0KGgoAAAANSUhEUgAA... (18 KB of base64)"
}
}Same end result. One is a named reference, the other is a fresh payload every time. Both still work - inline assets remain available for the one-shot case. Stored assets are the right choice the moment you find yourself uploading the same file twice.
Available Everywhere
The Asset Library is exposed through all three Pressa surfaces, same shape, different syntax.
MCP Server. Four new tools: save_asset, list_assets, get_asset, and delete_asset. An AI agent in Claude Desktop, Cursor, or any MCP-compatible client can manage binary assets as part of a conversation. Once the agent saves a logo in one turn, it can reference it by filename in any later compile within that account.
CLI. A new assets namespace with the expected commands:
$ pressa assets upload logo.png
Asset "logo.png" uploaded (42.3 KB).
$ pressa assets list
logo.png (42.3 KB) Uploaded: Apr 21, 2026
signature.png (18.1 KB) Uploaded: Apr 21, 2026
stamp.png ( 9.4 KB) Uploaded: Apr 18, 2026
$ pressa compile invoice.tex --stored-asset logo.png --stored-asset signature.png
Compiled. Output: invoice.pdf (184 KB).
$ pressa assets delete old-logo.png
Asset "old-logo.png" deleted.REST API. Three new endpoints under /api/v1/assets for programmatic access. POST to upload (upsert by filename), GET to list all or fetch one, DELETE to remove. The compile endpoint gains the use_stored_assets array. Full reference in the API documentation .
Why This Matters for Real Workflows
Consider a finance team that sends about twenty invoices a month. Each invoice has the same company logo, the same signature block, and the same tax stamp in the footer. Without stored assets, that is sixty binaries re-uploaded every month - a logo per invoice, a signature per invoice, a stamp per invoice. With stored assets, it is three uploads, ever.
The bigger win is consistency. When the bytes live on the server, every compile pulls the exact same file. The logo on your April 1st invoice is byte-identical to the logo on your April 30th invoice. An auditor reviewing a year of contracts sees the same corporate mark on every page. There is no drift, no accidental resizing, no AI-generated lookalike sneaking through.
This applies everywhere professional documents compound over time. A legal firm's letterhead on every engagement letter. A certification body's seal on every credential. A consultancy's signature block on every proposal. These are the documents that become a brand over years of repeat generation, and they only become a brand if the asset is the same asset every single time.
Security and Limits
Uploaded files are validated by magic bytes, not extension, so a renamed executable cannot masquerade as an image. Filenames are whitelisted against safe characters. Storage is scoped to your user account, so assets are never visible to anyone else, and survive API key rotation the same way saved templates do. Per-plan quotas keep the system predictable: Free plans do not include the Asset Library, Starter allows 10 assets up to 50 MB, Pro allows 50 up to 500 MB, and Business is unlimited up to 5 GB.
What This Unlocks
Stored assets close the loop on branded document generation. The LaTeX source was already reusable through Saved Templates. Now the binary dependencies are reusable too. Put the two together and an AI agent has everything it needs to produce an identical, on-brand document this month, next month, and two years from now - without a single re-upload.
The Asset Library is available now on Starter, Pro, and Business plans. Log in to your dashboard to start uploading, or read the documentation for the full API reference.