Quickstart
From nothing to a shared notebook: point slivingdoc at a bucket, prove it from the command line, then add it to an MCP host.
This page goes from an empty machine to a notebook that an agent and you share. It takes four commands. Every command here is safe to repeat.
Before you start
- Node.js 22 or newer. The
npxlauncher downloads the native binary for your platform, verifies its checksum, and runs it. No Git and no toolchain are needed. See Installation for the direct download instead. - An S3-compatible bucket that already exists. slivingdoc never creates or configures one.
- Credentials for that bucket, in your shell. They come from the
normal AWS chain, so an exported
AWS_PROFILEor an active SSO session works too.
Tip: No bucket yet? Tigris gives you one with a single global endpoint, and a local SeaweedFS container gives you one with no account at all. Both are in Set up a bucket, with the endpoint and region settings each of them needs. Come back here afterwards.
The examples use a bucket called my-notes in us-east-1. Substitute
your own.
export AWS_ACCESS_KEY_ID=<your-access-key-id>
export AWS_SECRET_ACCESS_KEY=<your-secret-access-key>
export AWS_REGION=us-east-1
export SLIVINGDOC_BUCKET=my-notes
1. Check the launcher
npx -y slivingdoc version
It prints slivingdoc and a version number, and touches nothing else —
no bucket, no configuration. If this fails, the problem is Node.js or
the platform, not your storage.
2. Pull the notebook
npx -y slivingdoc pull notes
This is the first contact with the bucket. Before anything else, slivingdoc runs a compatibility probe that proves the store does conditional writes the way the publication protocol needs; a store that fails it is refused here, at startup, rather than halfway through a commit.
On an empty notebook the report is short:
OK generation 0 /home/you/work/notes
0 files changed, 0 insertions(+), 0 deletions(-)
OK is the status token, the generation is the accepted remote state you
are now looking at, and the path is the notebook directory — every
result names it. The directory notes/ now exists and holds the
notebook.
Warning: A refusal here is almost always the bucket or the credentials. The diagnostic names the reason with every secret redacted — an
INCOMPATIBLE_STOREcategory means the store itself is not suitable; an access error means the key or the policy is. See S3 requirements.
3. Write something and commit it
Create a file under notes/. It must be UTF-8 text; empty files are
fine.
echo "Standup: shipped the cache fix." > notes/today.md
Publish it:
npx -y slivingdoc commit notes -m "first note"
OK generation 1 /home/you/work/notes
today.md +1
1 files changed, 1 insertions(+), 0 deletions(-)
The generation moved, and the per-file line says what the publication added. That is the whole write path: edit files with any tool, then commit.
Run npx -y slivingdoc pull notes again from a second
machine, or a second directory, and the same note comes back.
4. Give it to an agent
Now register the same command in your MCP host. In Claude Code:
claude mcp add slivingdoc \
--env SLIVINGDOC_BUCKET=my-notes \
--env AWS_ACCESS_KEY_ID=<your-access-key-id> \
--env AWS_SECRET_ACCESS_KEY=<your-secret-access-key> \
-- npx -y slivingdoc serve
Verify it with claude mcp list, or /mcp inside a session. Other hosts
take the same command in their own syntax, or a JSON block —
Connect an MCP host has all of them, and the
credential choices that beat pasting keys into a configuration file.
The agent now has two tools, notes_pull and notes_commit. Ask it to
read the notebook and add to it. It needs no path: each server takes its
own notebook directory and names it in every result.
That directory is private to the server process, so it is not the
notes/ you just used. To share one directory between the agent and
yourself, add --workspace-root to the arguments — see
Share a directory with humans.
Where to go next
- Connect an MCP host — every host, and how credentials reach the server.
- Share a directory with humans — one directory for agents and people.
- Resolve conflicts — the one case slivingdoc hands back to you.
- Configuration — every flag, environment variable, and default.