Sync Agents
Sync agents let you connect data sources that aren’t accessible from the public internet—things like QuickBooks Desktop, local SQL Server instances, or databases behind a corporate firewall.
How it works
Section titled “How it works”The sync agent is a Docker container that runs on your network. It connects outbound to Resplendent’s cloud over WebSocket, waits for sync requests, queries your local data source, and sends the results back.
┌─────────────────────────────────────────────────────────────────┐│ Your network ││ ││ ┌──────────────────┐ ┌──────────────────────────────┐ ││ │ Sync Agent │ ◄─────► │ Local data source │ ││ │ (Docker) │ │ (QuickBooks, SQL Server) │ ││ └────────┬─────────┘ └──────────────────────────────┘ ││ │ │└───────────│─────────────────────────────────────────────────────┘ │ WebSocket (outbound only, port 443) ▼ ┌───────────────────┐ │ Resplendent │ │ Cloud │ └───────────────────┘Because the agent only makes outbound connections, you don’t need to open any inbound firewall ports or configure port forwarding.
When you need a sync agent
Section titled “When you need a sync agent”You need a sync agent if your data source:
- Runs on a local machine (QuickBooks Desktop)
- Is behind a firewall with no public IP
- Can’t whitelist Resplendent’s IP addresses
- Is on a private network segment
For cloud services (ConnectWise, QuickBooks Online, Autotask) or databases with public IPs, you don’t need a sync agent—connect directly through the Integrations page.
Creating a sync agent
Section titled “Creating a sync agent”Sync agents are available on Business tier and above. A Staff or Admin user can create and edit an agent; deleting an agent requires an Admin user.
- Go to Settings → Sync Agents in the sidebar
- Click Add Sync Agent
- Enter a name for your agent (e.g., “Office Server” or “HQ Sync Agent”)
- Click Save
The dialog displays the Agent UUID immediately. The Agent Key shows Pending save until you save the agent. After saving, keep the dialog open and copy both values—you’ll need them to install the agent.
If you close the dialog before copying the credentials, click the agent’s name in the table to view them again.
Installing the agent
Section titled “Installing the agent”Requirements
Section titled “Requirements”- A 64-bit x86 (
amd64) machine with Docker Engine and Docker Compose v2 installed - Network access to your local data source
- Outbound HTTPS and WebSocket access to
app.resplendentdata.comon TCP port 443
We recommend a dedicated Linux VM or server that stays running 24/7. The agent needs to be online whenever syncs run. Windows with WSL2 and macOS can be used for evaluation, but Linux is the recommended production host.
Use the following profiles to size each sync agent host:
| Workload | CPU | Memory | Available SSD storage | Network |
|---|---|---|---|---|
| Evaluation or light use | 2 vCPU | 4 GB RAM | 20 GB | 10 Mbps |
| Recommended production | 4 vCPU | 8 GB RAM | 40 GB | 100 Mbps |
| Large backfills or multiple data sources | 8 vCPU | 16 GB RAM | 80 GB | 100 Mbps–1 Gbps |
These profiles are planning recommendations rather than fixed limits. Actual resource use depends on the number of simultaneous syncs, selected columns, row width, and the volume of changes between syncs. Large initial imports and incremental catch-up operations can temporarily use substantially more memory and network bandwidth than normal scheduled syncs.
The agent does not store a persistent copy of synchronized data on the host. Available storage is primarily used for Docker images, container logs, and temporary capacity while an updated image is downloaded. Configure Docker log rotation and leave enough free space for both the current and replacement images during an update.
Quick install
Section titled “Quick install”SSH into your server and run:
mkdir resplendent_sync_agentcd resplendent_sync_agentcurl -sSL https://app.resplendentdata.com/api/public/sync-agent-install.sh | bashThe script prompts for your Agent UUID and Agent Key, then creates a docker-compose.yaml and starts the containers.
Manual install
Section titled “Manual install”If you prefer not to pipe scripts to bash:
-
Create a directory for the agent:
Terminal window mkdir resplendent_sync_agentcd resplendent_sync_agent -
Create
docker-compose.yaml:name: resplendent-sync-agentservices:sync-agent:image: resplendentdata/sync-agent:latestcontainer_name: sync-agentenvironment:- SYNC_AGENT_UUID=your-uuid-here- SYNC_AGENT_KEY=your-key-here- SYNC_AGENT_UPDATER_URL=http://sync-agent-updater:8080/v1/update- SYNC_AGENT_UPDATER_TOKEN=generate-a-long-random-tokenrestart: alwayssync-agent-updater:image: resplendentdata/sync-agent-updater:latestcontainer_name: sync-agent-updatergroup_add:- '999'volumes:- /var/run/docker.sock:/var/run/docker.sock- ./docker-compose.yaml:/config/docker-compose.yaml:roenvironment:- SYNC_AGENT_UPDATER_TOKEN=generate-a-long-random-token- SYNC_AGENT_COMPOSE_FILE=/config/docker-compose.yaml- SYNC_AGENT_COMPOSE_PROJECT=resplendent-sync-agent- SYNC_AGENT_SERVICE_NAME=sync-agent- SYNC_AGENT_UPDATE_AUTO_THROTTLE_SECONDS=21600restart: always -
Replace
your-uuid-hereandyour-key-herewith your actual credentials. Replace bothgenerate-a-long-random-tokenvalues with the same long random token. If the Docker socket group on your host is not999, replacegroup_addwith the output ofstat -c '%g' /var/run/docker.sock. -
Start the containers:
Terminal window docker compose up -d
The Resplendent updater sidecar can update the sync agent from the Sync Agents page and checks for updates automatically when the agent reconnects.
Verify the connection
Section titled “Verify the connection”Check the logs to confirm the agent connected:
docker compose logs -f sync-agentYou should see:
INFO:__main__:Authenticating with serverINFO:__main__:Successfully authenticated with the serverIn Resplendent, the Last Connection column on the Sync Agents page should show the current time. The agent sends a heartbeat every 30 seconds.
Using the agent with an integration
Section titled “Using the agent with an integration”Once your agent is running, you can use it when connecting a data source:
- Go to Settings → Integrations
- Find the integration card (e.g., QuickBooks Desktop). Click Connect, or select Manage → New connection if the card already has a connection
- Fill in the connection details and the required Connection Title
- Scroll down to On-Premise Sync Agent
- Toggle Enable On-Premise Sync
- Under Select Sync Agent, choose your agent
- Click Save & Test
The connection test runs through your sync agent. After the dialog shows Connected, click Sync Dataset to select the datasets you want to sync.
Managing agents
Section titled “Managing agents”Common commands
Section titled “Common commands”Run these from the directory containing docker-compose.yaml:
# View logsdocker compose logs -f sync-agent
# Restart the agentdocker compose restart sync-agent
# Stop the agentdocker compose down
# Update manuallydocker compose pull && docker compose up -dEditing an agent
Section titled “Editing an agent”- Go to Settings → Sync Agents
- Click the agent name
- Update the name if needed
- Click Save
You can’t change the UUID or Key after creation. If you need new credentials, delete the agent and create a new one.
Deleting an agent
Section titled “Deleting an agent”You must be an Admin user to delete a sync agent.
- Go to Settings → Sync Agents
- Click the agent name
- Click Delete
You can’t delete an agent that’s still assigned to an integration. First go to Settings → Integrations, edit or delete each connection that uses the agent, and save the changes so the connection no longer uses that agent.
Troubleshooting
Section titled “Troubleshooting”Agent shows “Never connected”
Section titled “Agent shows “Never connected””- Check the container is running:
docker ps - Verify the UUID and Key match what’s in Resplendent
- Check logs for errors:
docker compose logs sync-agent - Ensure outbound connections to
wss://app.resplendentdata.comon port 443 aren’t blocked
”Connection refused” when testing integration
Section titled “”Connection refused” when testing integration”- Verify the sync agent can reach your data source on the network
- Check firewall rules between the agent and data source
- For QuickBooks Desktop, ensure the CData Gateway is running
Agent keeps disconnecting
Section titled “Agent keeps disconnecting”- Check for network instability
- The agent automatically reconnects after disconnection
- If the problem persists, check
docker compose logs sync-agentfor error patterns
Integration-specific guides
Section titled “Integration-specific guides”For detailed setup instructions with specific data sources:
- QuickBooks Desktop on-premise setup — Includes CData Gateway installation
Tier availability
Section titled “Tier availability”Sync agents are available on Business tier and above. See Tier Limits for details.
Frequently asked questions
Section titled “Frequently asked questions”Does the sync agent require inbound firewall ports?
Section titled “Does the sync agent require inbound firewall ports?”No. The agent only makes outbound connections to Resplendent’s cloud on port 443 (HTTPS/WSS). No inbound ports, port forwarding, or firewall rules are needed.
What happens if the agent goes offline?
Section titled “What happens if the agent goes offline?”Syncs pause until the agent reconnects. The agent automatically reconnects when the network is restored. No data is lost.
Can I run multiple sync agents?
Section titled “Can I run multiple sync agents?”Yes. Create a separate agent in Resplendent for each location or network segment. Each agent needs its own UUID and Key.
How do I update the sync agent?
Section titled “How do I update the sync agent?”The Resplendent updater sidecar can update the sync agent from the Sync Agents page and checks for updates automatically when the agent reconnects. For manual updates: docker compose pull && docker compose up -d.
What are the system requirements?
Section titled “What are the system requirements?”For production, we recommend a dedicated 64-bit x86 Linux VM with 4 vCPU, 8 GB RAM, 40 GB of available SSD storage, and a 100 Mbps network connection. The minimum profile for evaluation or light workloads is 2 vCPU, 4 GB RAM, and 20 GB of available storage. See Requirements for high-volume sizing and network details.
Can I see sync agent logs in Resplendent?
Section titled “Can I see sync agent logs in Resplendent?”Basic connection status appears in Settings → Sync Agents. For detailed logs, check the container directly: docker compose logs -f sync-agent.