Read in:
English

Documentation

Publish your Obsidian vault as a website in under a minute.

Write in Obsidian, press Sync, your notes are live. The same hub also publishes to Telegram, gates paid content, and answers reader questions over MCP. A Markdown Operating System: one note, served to a human as a page and to an agent as a syscall.

New here? Follow Get your first note live: instance → sign in → install the plugin → sync. About a minute.

What you can do

  • Publish from Obsidian. Your vault stays on your machine; sync pushes notes live, one-way or two-way. Two-way sync →
  • Publish to Telegram. Write once in Obsidian, post to your channel on a schedule, links stay intact. Telegram →
  • Charge for content. Leave free: true off and a note is subscriber-only; take payment via crypto, Patreon, or Boosty. Monetization →
  • An AI that answers from your notes. Connect any MCP client and readers query your knowledge base directly. MCP →
  • Make it look how you want. Compose pages from frontmatter widgets, or drop in your own Jet templates. Templates →
  • Run it yourself. One Go process on SQLite; docker compose up on a laptop, a VM, or Fly. Self-hosting →

Who uses it

Writers with paid channels, teams with internal wikis, course authors, open-source maintainers. See the use cases →

How trip2g works

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.

Public hub of curated bases

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.

Telegram group access

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.

Two-Way Sync

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.

Instagram carousels

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

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.

Email delivery (SMTP)

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.

Webhooks

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.

Theme editor (live)

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.

Theming the default template

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.

Run a Telegram blog from Obsidian

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.

Sell access to your Obsidian notes

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.

Embedded notes

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.

A team knowledge base your AI agents can query (MCP)

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.

A self-hosted wiki on SQLite (one binary)

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.

Multi-domains

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.

Multilingual sites

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.

14 KB page size

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.

Markdown syntax

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.

One HTML page

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.