rsequoia vs Sequoia — differences#
rsequoia is a Rust reimplementation of sequoia-cli. This document notes the differences.
Additions (not in original Sequoia)#
OAuth token authentication#
rsequoia accepts pre-authenticated OAuth tokens via environment variables:
RSEQUOIA_ACCESS_TOKEN— Bearer tokenRSEQUOIA_DID— AT Protocol DIDRSEQUOIA_PDS_URL— PDS base URL
This is the highest-priority auth method, above app passwords and stored credentials. It enables integration with tools like lichen that already manage their own AT Protocol OAuth flow.
Library usage#
rsequoia is structured as a Rust library (lib.rs) with a binary entry point. All modules (config, credentials, discovery, publish, inject, pds_client, markdown, types) are public and can be imported directly into other Rust projects.
Missing features (in original Sequoia but not here)#
Bluesky post creation#
Sequoia can optionally create a Bluesky post (app.bsky.feed.post) with an external embed linking to each published document. rsequoia does not create Bluesky posts.
bskyPostRef field#
Sequoia tracks the Bluesky post reference in the document record's bskyPostRef field. rsequoia does not set this field.
content union field#
The standard.site document schema has a content field defined as an open union. Neither Sequoia nor rsequoia populate this — both use textContent (plain text) instead.
basicTheme field#
The standard.site publication schema has a basicTheme field for styling hints. Neither Sequoia nor rsequoia set this field.
sync command#
Sequoia has a sequoia sync command that fetches remote state and reconciles with local files. rsequoia does not have a sync command — it only pushes local state to the PDS.
autoSync config#
Sequoia's config supports autoSync for automatic frontmatter updates with AT URIs. rsequoia does not modify source files.
pathTemplate config#
Sequoia supports pathTemplate with token replacement ({slug}, {year}, etc.) for URL generation. rsequoia uses pathPrefix + slug only.
removeIndexFromSlug config#
Sequoia can strip /index suffixes from slugs. rsequoia handles this but does not expose it as a config option.
UI config#
Sequoia has a ui config section. rsequoia does not (it is CLI-only).
Behavioral differences#
Credential storage location#
- Sequoia:
~/.config/sequoia/credentials.json - rsequoia:
~/.config/rsequoia/credentials.json
Environment variable names#
- Sequoia:
SEQUOIA_PROFILEfor profile selection - rsequoia:
RSEQUOIA_ACCESS_TOKEN,RSEQUOIA_DID,RSEQUOIA_PDS_URLfor OAuth
Both support ATP_IDENTIFIER, ATP_APP_PASSWORD, and PDS_URL.
canonicalUrl field#
Both Sequoia and rsequoia add a canonicalUrl field to document records. This field is NOT in the standard.site lexicon schema but is used for linking back to the original site.
Text content extraction#
Both strip markdown to plain text for textContent, capped at 10,000 characters. The exact stripping logic may differ slightly between implementations.
standard.site lexicon conformance#
Both rsequoia and Sequoia implement the same subset of the standard.site lexicons:
site.standard.document — all required fields (site, title, publishedAt) plus optional path, description, coverImage, textContent, tags, updatedAt.
site.standard.publication — all required fields (url, name) plus optional icon, description, preferences.