Your Obsidian vault becomes a website the moment you sync. That is the core of what trip2g does. Everything else — Telegram publishing, monetization, AI assistant, federation — is the same system running in a wider context.
This page explains the full end-to-end picture: what happens to a note from the moment you write it to the moment a reader or AI agent reads it.
The hub is a public index of knowledge bases reachable through a single MCP endpoint. An AI agent connects to your instance once and can search your own notes and every federated base — no extra configuration per base, no separate credentials.
Think of it as a curated directory where each entry is a knowledge base: a philosophy archive, a technical journal, an agent-skill catalog, a Telegram channel index. The agent picks the right base (or fans out across all of them) depending on the query.
Properties in your note's frontmatter control how it appears on your site.
Write posts in Obsidian, publish to your Telegram channel on a schedule or instantly.
Link a Telegram group to a subgraph and access flows both ways: group members read the subgraph's notes on your site, and readers with subgraph access get invited into the group. Both directions are live — leave the group and the notes close; let the subscription lapse and the bot removes you from the group.
Restrict notes to paying subscribers by leaving free: true off.
By default the plugin syncs one way: you write in Obsidian, changes go to the server. The server never modifies your files.
Two-way sync sends changes in both directions. If a file is updated on the server, the plugin downloads it to your vault automatically.
layout: trip2g/instaframe turns a markdown file into a carousel of ready-to-download PNGs for Instagram and other social networks — no Canva, no designer, no export.
See carousels in action: Example gallery.
Templates control how your notes look — sidebar, header, footer, and layout.
A template is an HTML file stored in _layouts/. It receives the note's content and frontmatter, then produces a complete page. Your markdown stays clean; the template decides how it's presented.
See one in action: Instagram frames is a ready-made template that turns a markdown file into downloadable carousel images — a full example of a custom layout doing real work.
Five ways people use trip2g to publish from Obsidian.
To sign in, trip2g emails you a one-time code. No working email = no code = you can't get in. So a self-hosted instance needs a way to send mail. trip2g speaks plain SMTP, so any transactional-email service works — pick one below, drop its SMTP credentials into your config, done.
Two ways to skip email entirely, before you commit to a provider:
- Sign in with Google or GitHub (OAuth). No email, no SMTP, no provider account. If OAuth login covers everyone who needs access, you don't need any of this page.
- Don't run your own mail server. It's the worst option — details below.
See selfhosted for the full self-hosting guide; this page is only the email piece.
Three ways to get a running trip2g instance.
Webhooks let trip2g notify external services when notes change, or trigger actions on a schedule.
Two types are available: change webhooks fire when a note is created, updated, or deleted; cron webhooks fire on a schedule you define.
This page renders the live theme editor (via layout: theme_editor). Adjust the Pico variables, watch the preview, and — signed in as an admin — click Save to write the theme into this site's HTML injection. See Theming for how it works under the hood.
You theme the default template by pasting a <style> block that overrides Pico CSS variables into the admin HTML Injection field. No rebuild, no fork — the override lands in <head> after the stylesheet, so your values win.
The default template is a custom build of Pico CSS v2.1.1. Its whole look — colors, spacing, fonts, radius — comes from --pico-* custom properties. Change the variables and the whole site re-themes at once.
🎨 Try it live: the Theme editor page renders an interactive editor right on this site — drag the Pico variables with a live preview, and (signed in as admin) Save writes the theme for you.
The editor is just a custom layout (_layouts/theme_editor.html) with the save wired in: it calls the createHtmlInjection / updateHtmlInjection GraphQL mutations, gated by an admin check (currentUser.IsAdmin() in the layout, re-verified on the server), so an admin's Save lands straight in the site's HTML injection. That is the general pattern — a custom template can grow into any tool that talks to the API, a Markdown editor included, the same way the kanban board does.
Install the editor on your own site from trip2g/theme_editor_template: curl -fsSL https://github.com/trip2g/theme_editor_template/releases/latest/download/theme_editor.html -o _layouts/theme_editor.html, then add a note with layout: theme_editor.
Write your posts as normal notes in Obsidian, add two properties, and each note publishes to your Telegram channel on schedule. trip2g handles the formatting conversion, the queue, and later edits. This is the direction almost no tool covers: Obsidian out to a Telegram channel.
Obsidian Publish lets you share your vault, but not sell it. Publish your vault with trip2g instead, mark some notes public and leave the rest gated, and sell access from your own domain. Readers who pay through Patreon, Boosty, a paid Telegram group, or crypto get the full text; everyone else sees a preview. You keep the vault, the site, the subscriber list, and every payment method's full amount minus that platform's own fee.
Write ![[note-name]] and the target note's rendered content appears inline on the page, wrapped in <div class="embedded-note">. Add embed_class: my-class to the embedded note's frontmatter and the wrapper also gets embedded-note__my-class — a hook you can style with a few lines of CSS in the admin. That turns any note into a reusable, styled block: a callout, a promo card, a shared footer.
Give your team one knowledge base that people read as a website and agents query over MCP, from the same notes. Authors write in Obsidian, the base is served on your own server, and access is scoped per subscriber so an agent only sees what its caller is allowed to see. No copy of the docs is shipped to a vendor.
If you want a self-hosted wiki without standing up Postgres and Redis first, trip2g runs as one Go binary on a single SQLite file. You author in Obsidian, sync, and the notes are served as a wiki with full-text search, access control, and a built-in MCP endpoint. This page surveys the common self-hosted wikis honestly, then walks the one-binary setup.
You can attach domains and subdomains to your site and control which notes appear where. The mechanism is a route property in the note's frontmatter.
Say you have a portfolio, a blog, and a landing page for a client. Without custom domains everything lives on one address and looks like folders of a single site. With routes, each project gets its own domain — and you manage all of them from one place.
Publish notes in multiple languages from a single vault. trip2g uses a folder-based approach: each language lives in its own subfolder, and visitors can switch between them with an automatically generated language toggle.
The full styled HTML of a trip2g page gzips to ~11.7 KB — inside the TCP initial congestion window of ~14 KB. The browser receives the complete, styled page in a single round-trip.
Notes in trip2g are Markdown files. Write them in Obsidian, sync, and they appear on your site with formatting intact. This page covers the syntax trip2g renders and a few rendering behaviors specific to the platform.
Sometimes a page needs to be pure HTML — a product landing, a custom homepage, or a demo. In trip2g, this is done through layouts: all HTML lives in a template file, and the note just points to it.
Note: raw HTML in a note body does not work. goldmark (the markdown engine) strips block-level HTML and replaces it with <!-- raw HTML omitted -->. Put HTML only in the layout file.