LangGraph
Let LangGraph nodes share a mountable.io filesystem, then read the same note from a later run of this in-memory example.
This example uses LangGraph's in-memory checkpointer. When that process exits, a new run starts with an empty checkpoint and does not have the previous note.
mountable.io is a persistent filesystem for AI agents. The write node stores the note there. The next node, and a later process, read that same file.
mountable.io maintains the runnable example, separately from LangChain's packages. The graph reads and writes one file.
Prerequisites
Use an existing mountable.io account with a saved payment method, an existing filesystem and an API key that can access it. Storage and file operations follow the usage prices. The example creates no account, filesystem or credits.
You also need Python 3.11+ and uv. Set MOUNTABLE_API_KEY in your private
environment or secret manager. Never put a key in a command argument.
Use your filesystem ID in place of FS_ID below.
git clone https://github.com/writeitai/mountable.git
cd mountable/examples/langgraph-workspace
uv sync --locked
export FS_ID="your-filesystem-id"Your backend chooses the filesystem and the note path from its authenticated user. Do not let graph state choose another user's filesystem.
Share a note across nodes
handoff runs two nodes in one graph. write_note creates
notes/brief.md and returns empty text. read_note receives no note body
in its input and reads the file. Earlier checkpoint steps still hold the
input text. A persistent LangGraph checkpointer is a separate choice. This
example does not use one.
uv run python graph.py handoff \
--filesystem "$FS_ID" \
--path notes/brief.md \
--text "Parser review complete. Check empty input next."The path has to look like notes/brief.md. The note is UTF-8 text up to
16 KiB. The write uses If-None-Match: *, so an existing file is left as
it is. After a timeout, read the path before writing it again.
A 402 with filesystem_spending_cap_reached stops that user's billable
mountable.io work. Other filesystems keep working. The filesystem cap does
not limit what a model provider charges if you add a model node later.
Read it from a fresh run
resume is a new process. It compiles the read node with a new in-memory
checkpointer and opens the filesystem read-only.
uv run python graph.py resume \
--filesystem "$FS_ID" \
--path notes/brief.mdThe command prints the note. It does not print the API key. Use a new path for each note you want to keep. This example does not delete files for you.
Offline checks
From the example directory:
uv run pytest -qThe tests compile real LangGraph graphs against a fake filesystem. They make no paid cloud or model calls.
Sources: LangGraph graph API, Files API.