Skip to content
kite-plusPublic

About

A modern open-source publishing platform built with Go. Markdown content, a visual editor, static site generation, and Git publishing in one binary.

Topics

Resources

Stars

28 stars

Watchers

0 watching

Forks

Repository files navigation

Kite

Kite

Write in Markdown. Manage it in your browser. Publish on your terms.

A blog engine in a single Go binary, with its writing studio built in:
the comfort of a CMS, and files that stay plain Markdown you own.

Latest release CI status Go version Container image Downloads License

Website · Documentation · Download · English · 简体中文

The Kite studio's dashboard: drafts, scheduled posts, changes waiting to publish and posts live, with the latest posts and a year of writing

Why Kite

A studio in your browser

A visual editor that reads and writes Markdown, with the source one click away. Drag in pictures, set categories and tags, keep drafts, schedule posts.

Files that stay yours

Every post is a Markdown file on disk. Saving rewrites only what changed and keeps your key order and comments, so editing a title is a one-line git diff.

Publish your way

Export static pages for any host, connect GitHub and let Pages deploy every push, or run the site on your own server, in Docker or not.

One binary, nothing else

The studio, a default theme in light and dark, and the SQLite driver are compiled in. There is no Node, database server or runtime to install.

Themes and plugins by name

Comments, analytics, search and math come as official plugins, beside documentation and personal themes. The app center installs them and keeps them up to date; a plugin adds code to pages, or runs WebAssembly in a sandbox while the site builds.

Builds you can repeat

kite.lock pins the Kite release a site builds with and kitew runs it, so the deploy uses the Kite you previewed with. Kite tells you when a newer one is out.

Quick start

Download the archive for your system from the latest release, unpack it, and put kite on your PATH. Then start a site in an empty folder:

mkdir blog && cd blog
kite run

The browser opens on a page that asks what the site is called and who writes it; answer it and you are in the studio. Next time, run kite run from the same folder. kite init asks the same questions in a terminal instead.

On macOS

A downloaded program is held back the first time it runs; xattr -d com.apple.quarantine kite lets it through. Every archive can be checked against the checksums.txt in its release.

With Docker, on a server
docker run -d --name kite --restart unless-stopped \
  -p 127.0.0.1:1717:1717 -v kite-data:/data ghcr.io/kite-plus/kite:latest

Open the studio and follow the setup steps to name the site and create its account; the site itself is at localhost:1717. Content and the account live in the kite-data volume. Put it behind HTTPS before it is reachable from other machines; the deployment guide shows how.

From source

Requires Git, Make, Go 1.26.4+, Node.js 22.19.0 and pnpm 10.11.1; the build uses the Go toolchain the project pins.

git clone https://github.com/kite-plus/kite.git
cd kite
make web
make install

Add Go's binary directory (usually ~/go/bin) to your PATH. To build the container image yourself, run docker build -t kite . in the clone.

Coming from another generator? A Hugo site's content opens where it is, and kite import hexo ../old-blog blog brings a Hexo site into a new one, old addresses included. See Moving from Hugo and Moving from Hexo.

A look around

The editor, with a post's cover, summary and properties above its text

The editor. Cover, summary and properties sit above the text. One button publishes; saving alone is in its menu and on ⌘S.

A published post in the default theme, half in light mode and half in dark

The site. The default theme in light and dark, with a table of contents, reading time and nothing to configure.

Categories as cards, each with a year of posts and its newest titles

Categories. Each one a card with a year of writing and its newest posts. Rename, merge or remove one, and every post that carries it is rewritten.

Tags as a wall of chips, one opened to show its posts

Tags. A wall of chips with their counts; open one to see its posts and change it.

The deploy page, following a push from saved to deployed, beside a checklist for going live

Deploy. Push to Git or export a zip, follow a change from saved to deployed, and check the address, content and Kite release before going live.

The app center, listing themes with their screenshots

App center. Themes and plugins from a signed index, installed by name and kept up to date, with kite.lock recording where each came from.

How it works

One Markdown file goes through kite to three outputs: kite build writes static HTML to public/, kite run serves the site and the studio on localhost:1717, and kite publish commits and pushes with Git

Your Markdown files are the source of truth. The studio edits them in place, and the index Kite keeps under .kite/ is only a cache: delete it, rebuild, and the same data comes back. The same files become static pages with kite build, a live site with kite run, or a Git commit with kite publish.

  • Export static pages. Deploy in the studio exports the site as a zip to upload anywhere; kite build writes the same files to public/.
  • Deploy through Git. Connect GitHub from the studio with a token for one empty repository, and Kite pushes the site to it, writes the workflow and turns Pages on. Every publish after that commits and pushes, and the site deploys itself.
  • Run it on a server. Serve the site and the studio from your own machine; the deployment guide covers domains, HTTPS and Docker.

Themes and plugins

Name What it does
Theme Vane Documentation sites: a home page, docs in an ordered tree, news and search
Theme Almanac A personal hub: a magazine masthead over a feed of cards, with shelves for projects, books and more
Plugin Comments A comment thread under every post, with Giscus, Waline or Twikoo
Plugin Search Search in the reader's browser, with nothing to run
Plugin Math TeX math and Mermaid diagrams in plain Markdown
Plugin Analytics Visits counted with Umami, Plausible, Google Analytics or Baidu Tongji

Install any of them from the studio's app center, or by name in a terminal: kite theme add vane, kite plugin add search. More are listed in awesome, and a theme of your own is Go templates written against a frozen contract, kite/v1.

Roadmap

  • Done: static builds, live serving, the browser studio and Git publishing (M0–M4); WebAssembly plugins (M8); the frozen theme contract kite/v1 (M5); the app center with a signed index; pinned releases through kite.lock and kitew (part of M6); connecting GitHub; and, since 0.1.12, a notice when a newer Kite is out.
  • Next: builds that skip what has not changed (the rest of M6), and a dynamic mode backed by SQLite (M7).

The reference guide lists every milestone, and the roadmap tracks progress item by item. Kite is young: things may still change between 0.1 releases, and the release notes say how to move across each one.

Contributing

  • Report a bug or share an idea: open an issue with your version, system and steps to reproduce.
  • Send a change: read the contributing notes and run make check before you open a pull request. If a change conflicts with the design documents, update the documents first.

License

Kite is released under the Apache License 2.0.

About

A modern open-source publishing platform built with Go. Markdown content, a visual editor, static site generation, and Git publishing in one binary.

Topics

Resources

Stars

28 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages