Welcome to EntchenChat - a real-time chat application with persistent history, search, and themes.
/me <text> — send an italic action line (e.g. /me waves → waves)/shrug — appends ¯\_(ツ)_/¯ to your message/tableflip — appends (╯°□°)╯︵ ┻━┻/unflip — appends ┬─┬ ノ( ゜-゜ノ)from:alice — only messages from authors whose name starts with "alice" (case-insensitive, up to 3 from: tokens, ANDed)after:2026-10-19 / before:2026-10-19 — keep only messages after/before a date (UTC)after:2026-10-19 14:30 or after:2026-10-19T14:30after:3d, before:12h, after:30m (days / hours / minutes ago)after:2026-09-01 after:2026-10-01 starts at the later bound, and a second before: moves the end to the earlier one — an extra filter can only narrow the resultdeploy from:eric after:3d. Unknown tokens stay plain text — a typo never breaks the search./api/health - Health check (live SQLite round-trip)
/api/messages - Get recent messages (supports ?before=, ?around=, ?latest=, ?chat_id=)
/api/messages/:id/edit-history - Revision chain of an edited message (optional ?chat_id=; an id outside that chat answers 404, exactly like a missing one)
/api/users - Distinct authors for @-autocomplete (optional ?chat_id=; an unknown chat is an empty list, never the global one)
/api/system-prompts - Get available system prompts
/api/pins - Get pinned messages (optional ?chat_id=, capped at 100; X-Pins-Truncated says when older pins were left out)
/api/search?q=term - Search messages; supports from: and after:/before: filters
/api/export?format=json - Export chat history (also md, txt); limit=0 exports everything up to the 10 000-row cap, since/until take ISO-8601 and reject junk with a 400, user matches an exact author name up to 30 characters
/api/import - Import chat history (max 500 messages per request; the newest entries win when a file is larger, unstorable entries are reported in skipped, and reply quotes are re-linked to the restored messages)
/api/upload - Upload an image (PNG, JPEG, GIF, WebP — max 5 MB)
For developers interested in contributing or running their own instance:
Happy chatting! 🦆