Coming soon. The apps will be online soon.

Your data, at your place.

Caixote is a family of five self-hosted apps — files, chat, tasks, calendar, feeds and a printer control. Four of them (Docs, Chat, Agenda and RSS) are single Rust binaries that link to each other and share one account; the sixth, Caixote CC2, works on its own.

RustSQLiteDocker / PodmanEnd-to-end encryptionNo browser frameworks
The family

Five apps, four of them one identity.

Same idea everywhere: small, fast software that is yours. Docs, Chat, Agenda and RSS share the same look and one account and connect to each other; Caixote CC2 is the workshop one and needs none of them. Use just one or connect the four.

FilesComing soon

Caixote Docs

A web file browser that knows what is inside your files. Point it at a folder and search the text of documents and PDFs, including scanned ones. Images are found by name.

Try the live demo →

  • Content search. Full-text index (SQLite FTS5) over the text of office documents, PDFs and plain-text files. Results come with highlighted snippets.
  • OCR. Scanned PDFs are read with Tesseract (optional, installed separately) and become searchable too. Images themselves are not OCR’d.
  • Built-in editor. Edit Word documents (WordCraft), spreadsheets (GridCraft), presentations (DeckCraft) and PDFs (PDFCraft) right in the browser; the previous version is kept (last 10) before every save.
  • See it without downloading. Streaming video, audio player, PDF and rotatable 3D models (STL/3MF).
  • Share by link. Expiry from 1 hour to never, optional password; folders are served as ZIP (needs the zip tool on the server).
  • Made to use. Right-click menu, cut/copy/paste, drag and drop, multi-select, tags, filters, import and export as ZIP.
  • Multi-user. Admin, user and viewer roles; PBKDF2 passwords (600,000 iterations), sign-in throttling and an activity log.
  • Plan. Tasks and a calendar linked to the files themselves: each file shows what is scheduled for it. The Tasks and Calendar views appear once the sister apps are paired.
  • Installable (PWA). Add Caixote Docs to your phone or desktop as an app. Still in testing; it needs HTTPS and only the app shell is cached, so it works online.
Language Rust + plain JSPort 8099Licence AGPL-3.0+Interface EN / PT
caixote-docs · Documents
DOC
Budget 2026.docx84 KB
PDF
Rental contract.pdf1.2 MB
STL
suporte-cabo.stl3.4 MB
PDF
receipt-scan.pdf · OCR640 KB
MP4
holiday-algarve.mp4212 MB
ZIP
archive-2025.zip1.8 GB
ChatComing soon

Caixote Chat

A chat even the server cannot read. Encryption runs on your device; the server stores ciphertext (it still sees who talks to whom, and when).

Try the live demo →

  • End-to-end encryption. X25519 and Ed25519 for keys, AES-256-GCM for content, all through the browser’s WebCrypto. Messages are signed by their sender. Keys are wrapped with a key derived from your password.
  • Files, images and video. Encrypted in 1 MiB blocks, uploaded in parts and resumed from where they stopped if the connection drops while the page stays open. File name and type are encrypted too.
  • Voice and video notes. Record and send straight from the conversation.
  • Voice and video calls. One-to-one WebRTC with encrypted signalling (no group calls). To call across networks, point the server at your own STUN/TURN server.
  • Proper conversations. Groups, reply, forward, receipts (sent, delivered, seen), profile and chat photos, and a “Shared” panel with files and links. Inside Caixote Docs it opens as a side panel.
  • Verification. A 60-digit safety number for each pair of users in direct chats, to compare in person. There is no password recovery, and removing someone from a group does not rotate its key.
  • Customisable. Light/dark theme, accent colour, bubbles and animations.
Language Rust + plain JSPort 8200Real time SSEInterface EN / PT
caixote-chat · Home
🔒 end-to-end encrypted
Do you have the final plan?Rita · 21:04
Yes, here it is.21:05 ✓✓
STL
suporte-cabo.stl3.4 MB · encrypted
Perfect! Calling now. 📹Rita · 21:06
Tasks and calendarComing soon

Caixote Agenda

Tasks and a calendar in one app, with a Plan you can share and sync, and a Private calendar the server cannot read.

Try the live demo →

  • Two places for your days. Plan is stored in plain text on your server: reminders, sharing and sync with Caixote Docs. Private is a calendar encrypted in your browser with your own passphrase: no sharing, reminders or sync, by design.
  • Lists and subtasks. Lists with section headings, one level of subtasks, notes, tags and priorities; due dates, repeats and a board view.
  • Sharing and collaboration (Plan). Invite people as viewer or editor, assign tasks, comment and follow the activity history. Permissions are enforced on the server.
  • Calendar views. Month, week, day, agenda and year, with all-day events, recurrence with exceptions, optional week numbers and Portuguese holidays.
  • Type like you talk. “Dinner tomorrow at 8:30pm” in the quick entry creates the event. Understands Portuguese and English.
  • Move things like on paper. Drag events between days and hours, resize, right-click for more. On a phone, long-press.
  • Compatible. Imports and exports .ics files; a secret per-user calendar address for your tasks with a due date.
  • Per-user modules. 15 modules — notes, subtasks, priority, tags, board, calendar… — that each person switches on or off in Settings.
Language Rust + plain JSPrivate crypto PBKDF2 + AES-GCMLanguage PT / ENReplaces Todo + Cal
caixote-agenda · October 2026
MonTueWedThuFriSatSun
12
13Meeting
14
15
16Dinner
17
18
19
20Dentist
21
22Cinema
23
24Market
25
26
27
28Deadline
29
30
31Party
1
ReadingComing soon

Caixote RSS

A feed reader that stays quiet: your subscriptions, your rules, nothing deciding what you should read next.

Try the live demo →

  • Subscribe to anything. RSS, Atom and JSON Feed. Paste a site address and it finds the feed; organise in folders; import and export OPML.
  • Search, tags and rules. Full-text search across every article you have. Rules mark as read, star, tag or drop items before you ever see them.
  • Full text on demand. Feeds that only send a teaser? Fetch the whole article with one click, or switch it on for the whole feed.
  • Safe to read. Article HTML is sanitised on the server and again in the browser; images are off by default and, when you turn them on, go through a proxy that hides your address and referrer from the source site.
  • Save and recommend. Keep links to read later, and recommend an article to another user of the same server.
  • Your own feed. Starred articles can be published as a feed at a secret address that you can rotate or turn off.
  • Send it on. From any article: add it as a task or an event in Caixote Agenda, or, through Caixote Chat, a message; Caixote Docs can add it as a task, an event or a note. Each one asks before it saves.
  • Your way. Ten modules you switch on or off, live updates, themes, density, PT/EN.
Language Rust + plain JSPort 8340Tests unit, API and UI
caixote-rss · Unread · 7
Counting parrotfish at dawn★Field Notes from the Reef · 3 h
Parsing a config file in 80 linesSmall Rust Things · 1 h
Issue 212: the terminal is not deadThe Weekly Terminal · 5 h
Why the faintest galaxies are the most honestThe Slow Telescope · 35 min
WorkshopComing soon

Caixote CC2

Your 3D printer, on your own network. Pause a print from the sofa, see which spool is about to run out and let an AI keep an eye on the camera — with no vendor cloud in between.

Try the live demo →

  • Everything at a glance. Progress, time left, temperatures and the live camera; pause, resume and stop; light, speed and fans. Manual movement is locked while a print runs.
  • Your spools, counted. See the four Canvas spools and auto-refill, say which spool sits in each slot, and every print deducts its grams. Low spools turn red before they run out. (Grams are an estimate from the slicer.)
  • Start prints from the phone. Browse the printer’s files with thumbnails, map colours to Canvas slots and press start.
  • A second pair of eyes (optional). A container on your server looks at the camera during a print and asks an image model whether something is going wrong. Off by default; it uses your own API key, or a local model so no picture leaves home.
  • Installs like an app. A phone PWA served from your own server; it talks directly to the printer’s own local interface.

Unofficial project, not affiliated with Elegoo. Commands go to a machine that heats and moves: use at your own risk.

Works alone no other Caixote app neededLicence AGPL-3.0-or-laterPort 8088 / 8447 (https)
caixote-cc2 · Printing 38%
Benchy-4-coloursPrinting · 1 h 29 min left
Spool 2 · PLA Orange515 g · loaded
Spool 3 · PETG White88 g · running low
Better together

Connected by the browser, not the servers.

The apps don’t talk to each other behind the scenes. You pair them, in the browser, and they exchange validated messages. Caixote Chat’s server still only stores encrypted content.

Caixote Docs Caixote Chat Caixote Agenda Caixote RSS Your browser postMessage validated origins caixote-proto (wasm)

Caixote Docs ↔ Caixote Chat

A chat panel inside Caixote Docs: “Send in chat…” from any file and “Save to Caixote Docs” on receiving.

Chat ↔ Agenda

Share a task or an event in a conversation, as a card that links back to the app.

Tasks and calendar in one place

In Caixote Agenda, tasks with a due date show up in the calendar of the same app (the calendar module).

Feeds → everything

From an article in Caixote RSS, send a message to Caixote Chat, or a task, an event or a note to Caixote Docs. The receiver shows what arrived and asks before saving. Articles you star become Markdown files in a Notícias folder in Caixote Docs, searchable with everything else (one way: unstar and the untouched file goes away; a file you edited stays).

One account

Apps are paired with a one-time code, each account chooses which apps it links, and sign-in is shared through a signed ticket, with optional automatic unlock. Your password never travels between apps.

Under the hood

Small, fast, auditable.

Each of the four linked apps is a Rust binary with few dependencies, a SQLite database and a plain JavaScript interface — no frameworks, and no third-party requests from the four linked apps themselves (fonts are local). The exceptions are what you ask for: Caixote RSS fetching feeds and images, and optional email. Caixote CC2 can show filament-brand icons fetched from the brands’ own websites (those sites then see your address); the setting is on by default in the app and off in the demo.

AppServerDataSecurityDevelopment status
Caixote DocsRust · custom HTTPFiles + SQLite (FTS5)Sessions, PBKDF2, CSRF, sign-in throttlingin use PWA in testing
Caixote ChatRust · SSE · WebRTCSQLite + encrypted blobsE2EE: X25519, Ed25519, AES-256-GCMworking PWA in testing · native apps next
Caixote AgendaRust · rusqlite · SSESQLiteServer-enforced permissions, ticket SSO; Private calendar encrypted in the browser (PBKDF2 + AES-GCM)working PWA installable, no offline yet
Caixote RSSRust · system curlSQLite (FTS5)Double HTML sanitising, signed image proxy, SSRF guard, ticket SSOworking
Caixote CC2nginx · plain JS (+ Python for the AI check)One JSON file on the serverNo cloud; the AI key stays on the server (mode 600) and is never sent backworking AI check not yet tried on a real print

Honest about the limits

Caixote Chat’s encryption does not yet have per-message forward secrecy (planned: Double Ratchet / MLS), and the server sees metadata such as who talks to whom and when. Everything in Caixote Agenda’s Plan, synced with Caixote Docs or not, is stored in plain text on the server (that is what lets it remind, share and sync), so it is not end-to-end encrypted; only the Private calendar is, and it can’t be shared. Caixote Chat’s limits are written down in its design notes.

Properly tested

Features ship with unit, API and UI tests in a real Firefox. Docker files exist for every app, but only Caixote Docs’s has been tested so far, and nothing is published yet.

Run Caixote Agenda on its own (once released)

# Caixote Agenda → http://localhost:8350
podman run -d -p 8350:8350 -v caixote-agenda-data:/data caixote-agenda