Sync your AI coding assistant configs across all your devices.
Seamlessly sync settings, MCP servers, custom agents, skills, and session contexts for Claude Code, OpenCode, and more.
| Assistant | Config Location | Status |
|---|---|---|
| Claude Code | ~/.claude/ |
β Supported |
| OpenCode | ~/.config/opencode/ |
β Supported |
| OpenAI Codex | ~/.codex/ |
π Coming soon |
npm install -g coding-agent-sync
coding-agent-sync initThat's it. The wizard walks you through setup and automatically syncs your settings.
First device? β Creates a new Gist and offers to push your current config Second device? β Finds your existing Gist and offers to pull everything down
| What | Synced |
|---|---|
Settings (settings.json) |
β |
MCP servers (~/.claude.json) |
β |
Custom commands (commands/*.md) |
β |
Custom agents (agents/*.md) |
β |
Rules/Skills (rules/*.md) |
β |
Global instructions (CLAUDE.md) |
β |
| What | Synced |
|---|---|
Main config (opencode.json) |
β |
Custom agents (agent/*.md) |
β |
Custom commands (command/*.md) |
β |
Global instructions (AGENTS.md) |
β |
Plugin configs (*.jsonc, oh-my-opencode*.json) |
β |
Skills directory (skill/**) |
β |
| Session contexts | β |
Morning at the office:
coding-agent-sync pull # Get latest from home
# ... work on features ...
/context-export "Feature Progress" # Save your context (OpenCode)
coding-agent-sync push # Sync to cloudEvening at home:
coding-agent-sync pull # Get settings + context
/context-import "Feature Progress" # Resume with full context
# ... continue seamlessly ...| Command | What it does |
|---|---|
coding-agent-sync init |
Set up GitHub token and encryption passphrase |
coding-agent-sync push |
Upload your settings to the cloud |
coding-agent-sync pull |
Download settings from the cloud |
coding-agent-sync status |
Check what's changed since last sync |
| Flag | Description |
|---|---|
--all |
Sync all installed assistants (default) |
--claude |
Only sync Claude Code |
--opencode |
Only sync OpenCode |
--verbose |
Show detailed output |
| Command | What it does |
|---|---|
/context-export [name] |
Save current session as a portable context |
/context-import [name] |
Load a saved context into your session |
/context-list |
See all your saved contexts |
/context-prune <name> |
Delete old contexts |
- AES-256-GCM encryption - Your data is encrypted before it leaves your machine
- Private GitHub Gists - Only you can access your sync storage
- Zero plaintext - Even if someone gets your Gist, they can't read it without your passphrase
If you were using opencodesync, your existing sync data will continue to work. The CLI also maintains backward compatibility:
# Both work the same
opencodesync push
coding-agent-sync push| Error | Solution |
|---|---|
| "Not configured" | Run coding-agent-sync init |
| "Decryption failed" | Use the same passphrase as your other devices |
| "Invalid token" | Create a new GitHub token with gist scope |
Need to start fresh? coding-agent-sync init --force && coding-agent-sync push --force
import { createPluginTools, addContext, getAllContexts } from "coding-agent-sync";
const tools = createPluginTools();
const context = addContext("My Context", "Summary...");
const all = getAllContexts();MIT
One config. Every device. All your AI assistants.