quickstart
cargo install --git https://tangled.org/notplants.net/lichen.page lichen-cli
lichen serve run
# opens at http://127.0.0.1:9000/
atproto record lexicon
{
"$type": "net.commoninternet.lichen.site",
"domain": "myblog.example.com",
"repo": "pds://alice.bsky.social/myblog.example.com",
"createdAt": "2026-03-14T09:12:00Z"
}
agent workflow via lichen-cli
This is an explanation of a workflow for using a local ai agent for working on css and static site generator internals with a remote lichen server instance via the api.
-
Create an account on a server such as dash.lichen.page by logging in with ATProto.
-
Generate an API token from your dashboard settings page.
-
Give the token to your local AI agent, along with the lichen-cli skill. The agent can then clone your site, edit templates and CSS, and push changes to the remote.
lichen remote auth login --token <your-token>
lichen remote clone mysite.lichen.page
-
Use the agent to update the styling of your pages, work with layout templates, or configure your static site generator. Use the web UI at dash.lichen.page to write and edit the actual content of your pages.
-
Use the "share" button in the web ui to easily share a link with collaborators so they can edit content together with you on the site in realtime.
site management with lichen-cli
# login to a server
lichen remote auth login --server https://dash.lichen.page
# list your sites
lichen remote sites list
# clone a site locally
lichen remote clone mysite.lichen.page
# push local changes
lichen remote push mysite.lichen.page
# pull remote changes
lichen remote pull mysite.lichen.page
file structure
Sites are stored at ~/.lichen/<domain>/. Each site is a git repo with this structure:
~/.lichen/mysite.lichen.page/
content/ # markdown files and assets
index.md
assets/
stylesheet.css
templates/
layout.html # page layout template
Edit files in content/, commit with git, then lm push to publish.
Full documentation is in the README.