Local Sync

Pull content to your local machine, edit with your favorite tools, and push changes back.

How Local Sync Works

The CLI creates a .redo/ folder structure that mirrors your site. This gives you:

  • Version control - Track changes with Git
  • Editor freedom - Use VS Code, Cursor, or any text editor
  • AI assistance - Feed your site content to Claude or ChatGPT
  • Bulk edits - Find and replace across all pages

Folder Structure

After pulling content, your project looks like this:

my-site/
├── .redo/
│   ├── config.json           # Site configuration
│   ├── pages/
│   │   ├── index/            # Home page (/)
│   │   │   ├── page.json     # Page metadata
│   │   │   └── blocks/       # Page blocks
│   │   │       ├── hero.json
│   │   │       └── features.json
│   │   ├── about/            # /about page
│   │   │   ├── page.json
│   │   │   └── blocks/
│   │   └── blog/
│   │       ├── page.json     # /blog page
│   │       └── post-1/       # /blog/post-1 (nested)
│   │           └── page.json
│   ├── blocks/               # Global blocks
│   │   ├── header.json
│   │   └── footer.json
│   ├── settings/
│   │   └── site.json
│   └── forms/
│       └── contact.json

Pulling Content

Pull a Single Page

# Pull by ID
redo pull page page_abc123

# Pull by path
redo pull page /about

# Pull home page
redo pull page /

Pull Global Blocks

# Pull a specific block
redo pull block header

# Pull by ID
redo pull block block_xyz789

Pull Everything

# Pull entire site
redo pull --all

This downloads all pages, blocks, settings, and forms. Useful for initial setup or creating a backup.

Pull Settings and Forms

# Pull all settings
redo pull settings

# Pull a form schema
redo pull form form_abc123

Editing Content

After pulling, edit the JSON files with any text editor. Block content typically looks like:

{
  "id": "block_hero",
  "type": "hero",
  "content": {
    "heading": "Welcome to Our Site",
    "subheading": "We make great things happen",
    "cta_text": "Get Started",
    "cta_link": "/contact"
  }
}

Change the values and save the file.

Don't change IDs

The id field links your local file to the remote content. Changing it will create new content instead of updating existing.

Pushing Changes

Push a Page

# Push by ID
redo push page page_abc123

# Push by path
redo push page /about

This uploads all blocks within that page folder.

Push a Global Block

redo push block header

Push Settings

# Push a specific setting
redo push setting site_title

# Push all settings
redo push settings

Push Forms

redo push form contact

Workflow Example

Here's a typical workflow for updating your site:

# 1. Pull the latest content
redo pull page /about

# 2. Edit .redo/pages/about/blocks/*.json in your editor

# 3. Push your changes
redo push page /about

# 4. Preview your changes
redo screenshot --page /about

# 5. Publish when ready
redo publish /about

Handling Conflicts

If content changed on the server while you were editing locally:

  • The CLI warns you about the conflict
  • Use --force to overwrite server content with your local version
  • Or pull again to get the latest version and re-apply your changes
# Force push (overwrites server)
redo push page /about --force

Use force carefully

Force pushing overwrites any changes made in the web editor. Coordinate with your team to avoid losing work.

Next: Publishing →