# barndog sync (/docs/cli/sync)

## `barndog sync` [#barndog-sync]

Installs your enabled assets into your selected harnesses and follows newly published versions.

```bash
barndog sync
```

| Option            | Description                                                 |
| ----------------- | ----------------------------------------------------------- |
| `--config <path>` | Use a different configuration file for this run. See below. |

Sync works from any directory. It always reads `~/.barndog/config.yaml` unless you pass `--config`.

## What it does [#what-it-does]

1. Reads your selections and fetches the catalog from your server, if you're connected.
2. Downloads and validates every package it needs, **before** changing anything.
3. Adds, updates, or removes links in each selected harness.
4. Prints what changed, grouped by harness.

```text
BarnDog sync

  Installed  Claude Code ~/.claude/skills/code-review
  Unchanged  Codex       ~/.agents/skills/code-review
  Removed    Cursor      ~/.cursor/skills/old-skill

Sync complete. 1 installed, 1 removed, 1 unchanged
Restart your harness to pick up the changes.
```

Running sync twice in a row is safe. The second run reports everything as unchanged.

## Safety [#safety]

Sync only manages what it created, and it stops instead of overwriting:

- If a package can't be downloaded or doesn't validate, nothing is changed.
- If something BarnDog didn't create sits where a link should go, sync stops.
- If a link BarnDog created was replaced, sync stops.
- If you edited a downloaded package in the cache, sync stops so your edits aren't lost.

Network and sign-in failures keep your settings and installed files as they were.

Only one sync runs at a time per user. If a sync is killed partway, you may see an error about `~/.barndog/sync.lock`. Delete that folder only after checking that no other sync is running.

## Using another configuration file [#using-another-configuration-file]

```bash
barndog sync --config /absolute/path/config.yaml
```

The file must include `version`, `harnesses`, and `skills`. It replaces your selections for this run only, and it doesn't change `~/.barndog/config.yaml`. It uses the same installation state as normal syncs.

## Offline use [#offline-use]

If your configuration only contains Skills from local folders, sync works without a server or a sign-in.
