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-1.json   # Page metadata and page SEO
│   │   │   ├── block-2-hero.html
│   │   │   └── block-2-hero.json
│   │   ├── about/            # /about page
│   │   │   ├── page-3.json
│   │   │   └── block-4-main.html
│   │   └── blog/
│   │       ├── page-5.json   # /blog page
│   │       └── post-1/       # /blog/post-1 (nested)
│   │           └── page-6.json
│   ├── blocks/               # Global/shared blocks
│   │   ├── block-7-header.html
│   │   └── block-8-footer.html
│   ├── 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 page metadata, page SEO, and page-owned blocks within that page folder. It does not upload global/shared blocks from .redo/blocks.

# Push one page-owned block
redo push page /about --block hero

Push a Global Block

redo push block header

Use this for global/shared blocks only.

Push Settings

# Push a specific setting
redo push setting site_title

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/page-*.json or page-owned block files

# 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 redo read to inspect the remote version without overwriting local files
  • Pull only when you want to replace your local copy with the remote version
  • Use --force only when you intend to overwrite the remote version
# Inspect first
redo read page /about
redo read block header

# 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 →