Skip to main content

Give your LangGraph agent a June memory — mirror chat history from any LangGraph checkpointer into a searchable, cited June knowledge canvas. Three commands, no code changes.

Project description

june-langgraph

Give your LangGraph agent a June memory. If your agent saves conversations with a LangGraph checkpointer (SQLite or Postgres), this connects that history to Junê — so you can search every conversation, ask questions about them ("what did we decide about pricing?") and get grounded, cited answers, and give the agent itself memory of past sessions.

No code changes required. Three commands:

pip install "june-langgraph[sqlite]"     # [postgres] / [mysql] for server DBs
june-langgraph connect                   # one-time setup — it finds everything
june-langgraph watch                     # keeps June updated while your agent runs

connect is a small wizard: it looks for June on your computer (it finds the Junê desktop app automatically), looks for your agent's chat database in the current folder, checks the whole path works, and saves the setup. watch then quietly mirrors every new message into a June canvas as your agent runs. Run june-langgraph sync once to bring in the history you already have.

your LangGraph app ──▶ checkpointer DB ──▶ june-langgraph ──▶ June canvas
     (unchanged)         (unchanged)        (watch/sync)    (search · ask · cite)

Your checkpoint database is never modified — it is only read, and always through LangGraph's own deserializer, so what June sees is exactly what your agent saved.

Why

LangGraph checkpointers are built for resuming a conversation, not for finding one. The history lives in serialized checkpoint blobs across several tables — fine for the framework, hopeless for "show me everything we said about the contract". June turns that history into a searchable, cited knowledge graph.

Everyday commands

command what it does
june-langgraph connect one-time setup wizard (safe to re-run any time)
june-langgraph sync one catch-up pass — brings existing history into June
june-langgraph watch keeps syncing while your agent runs (Ctrl+C to stop)
june-langgraph status what's configured + how much has synced
june-langgraph doctor checks every part of the setup, PASS/FAIL per item

Everything is incremental: only new messages are sent, tracked per message in a small ledger, so re-running never duplicates. If June is offline, watch keeps trying quietly and catches up when it's back; your agent is never affected.

For developers: mirror in-process instead

If you'd rather not run a second process, wrap your checkpointer — one line:

from langgraph.checkpoint.sqlite import SqliteSaver
from june_langgraph import JuneSaver

with SqliteSaver.from_conn_string("checkpoints.sqlite") as inner:
    app = graph.compile(checkpointer=JuneSaver(
        inner,                                 # any BaseCheckpointSaver
        june_url="http://127.0.0.1:8799",      # the Junê app's local engine
        api_key="local",
        canvas="agent-chats",
        state_file=".june_pushed.json",        # dedupe ledger, survives restarts
    ))

LangGraph behaviour is untouched (resume, time travel, .list() — everything delegates to the inner saver). New messages mirror to June at save time, while they're still live objects — nothing is ever deserialized. Sync and async graphs both work. If June is down the agent keeps running and unpushed messages retry on the next save.

Pairs with june-mcp

Both packages speak the same env vars (JUNE_BASE_URL, JUNE_API_KEY, JUNE_CANVAS) and the same canvas semantics. Point june-mcp at the same canvas and Claude (Desktop or Code) can answer questions over your agent's entire chat history — june_answer with citations, june_search, june_enumerate — while june-langgraph watch keeps it current. Your LangGraph app can also read June at runtime (/v1/search, /v1/context) to give the agent long-term memory.

Which databases work

your checkpointer install --db looks like
SqliteSaver june-langgraph[sqlite] checkpoints.sqlite
PostgresSaver june-langgraph[postgres] postgresql://user:pw@host/db
PyMySQLSaver (community) june-langgraph[mysql] mysql://user:pw@host/db
anything else (Redis, Mongo, …) that saver's package its conn string + --saver

The --saver escape hatch accepts any BaseCheckpointSaver via a package.module:factory spec — the factory is called with your --db string:

june-langgraph sync --db "redis://localhost:6379" \
  --saver "langgraph.checkpoint.redis:RedisSaver.from_conn_string"

So new community checkpointers work the day they exist, without waiting for a june-langgraph release. (Custom savers always use the full-scan change detection; the metadata-only fast path is SQLite-specific.)

Configuration

connect writes ~/.june/langgraph.json (key-holding, chmod 600). Everything can be overridden per-run with flags (--db, --june-url, --june-key, --canvas) or the env vars above. JUNE_LANGGRAPH_HOME relocates the config directory. Custom state key? messages_key in the config file (default messages).

Troubleshooting

Run june-langgraph doctor. It checks, in order: configuration → June reachable → canvas resolves → database readable → ledger writable, and prints a mapped hint for each FAIL. Exits 0 only when everything passes.

License

MIT. The Junê engine itself is a separate, closed-source product — this connector is the open part, by design.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

june_langgraph-0.1.0.tar.gz (24.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

june_langgraph-0.1.0-py3-none-any.whl (21.9 kB view details)

Uploaded Python 3

File details

Details for the file june_langgraph-0.1.0.tar.gz.

File metadata

  • Download URL: june_langgraph-0.1.0.tar.gz
  • Upload date:
  • Size: 24.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for june_langgraph-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c6fadd756e5c9532bdd962c64ca564f12189cd4f8b2d5f596ffd32c21ec208c7
MD5 90d9583bf7dfbc26f1e887d5910b1dbf
BLAKE2b-256 bb3235f7adda9f15b55517c9a8ea92b1d5a1688a782b76a94be6f34fd54d7160

See more details on using hashes here.

Provenance

The following attestation bundles were made for june_langgraph-0.1.0.tar.gz:

Publisher: publish.yml on Junemind/june-langgraph

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file june_langgraph-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: june_langgraph-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 21.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for june_langgraph-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b654f97a5921508584a18451d8b37d56852a7260132e30cc2e646bf006c37b2c
MD5 ccd6ba32353c18b72ed232ef5c12d2e0
BLAKE2b-256 79dd97688255dbc0d0126e49a0870b098f17821c03ed86391b03ee9735dd279d

See more details on using hashes here.

Provenance

The following attestation bundles were made for june_langgraph-0.1.0-py3-none-any.whl:

Publisher: publish.yml on Junemind/june-langgraph

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page