---
title: "Configuration Files"
description: "Documentation for Configuration Files in ZeyOS SDK CLI"
canonical_url: "https://www.zeyos.com/sdk/configuration-files"
markdown_url: "https://www.zeyos.com/ai/guide/sdk/configuration-files.md"
section: "sdk"
authority: "guide"
language: "en"
source_repository: "zeyos/sdk-v2"
source_path: "docs/configuration/index.md"
source_revision: "a99897af74253b4dc5af6fecb9301cea0ae18e27"
---

# Configuration Files

When using the SDK, you will notice that a couple of configuration files are being created:

### 1. Application Manifest (zeyos.app.json)
Describes the application's properties and represents the properties of all included assets

```json
{
  "identifier": "myapp",
  "name": "My Application",
  "version": 10000,
  "vendor": "Company Name",
  "services": {
    "reminder": {
      "type": "timing",
      "schedule": 600,
      "interval": 60
    }
  },
  "resources": {
    "logo": {
      "mimetype": "image/png",
      "public": 1
    }
  },
  "weblets": {
    "dashboard": {
      "type": "popup_framed",
      "width": 800,
      "height": 600
    }
  }
}
```

### 2. The ZeyOS Sync File (sync.json)

The `sync.json` file is created whenever you are syncing an application with a ZeyOS instance.

The instance configuration stores the authentication information when executing `zeysdk link [INSTANCE_ID]`. By using `zeysdk use [INSTANCE_ID]` a user can switch between different instances.


```json
Example:

{
  "id": "instance-id",
  "url": "platform-url",
  "syncstates": {
    "settings": {
      "hash": "file-hash",
      "lastmodified": "timestamp"
    },
    "defaultsettings": {
      "hash": "file-hash",
      "lastmodified": "timestamp"
    },
    "services": {},
    "resources": {},
    "weblets": {}
  }
}

```
The sync configuration consists of two core sections:

<details>
<summary><strong>1. Connection Settings</strong></summary>

```json
{
  "id": "instance-id",
  "url": "https://platform-url"
}
```
- Updated automatically when running `zeysdk link`
- Contains platform URL
- Manages instance connection details
</details>

<details>
<summary><strong>2. Sync States</strong></summary>

```json
{
  "syncstates": {
    "settings": {
      "hash": "file-hash",
      "lastmodified": 1234567890
    },
    "services": {},
    "resources": {},
    "weblets": {}
  }
}
```
- Tracks file states for settings, resources, services, weblets, and assets
- Uses hashes for change detection
- Stores the server-returned `lastmodified` timestamp for synced items
- Manages synchronization between local and server files
</details>

### Sync Scenarios

<details>
<summary><strong>New Files (Empty States)</strong></summary>

When no sync hash exists:

| Scenario | Action | Resolution Options |
|----------|--------|-------------------|
| File doesn't exist on server | Auto-create | N/A |
| File exists on server | Conflict | • `theirs`: Use server version• `mine`: Use local version |
</details>

<details>
<summary><strong>Existing Files (With States)</strong></summary>

When a sync hash exists:

| Scenario | Action | Resolution Options |
|----------|--------|-------------------|
| File missing on server | Conflict | • `theirs`: Remove locally• `mine`: Create on server |
| States don't match | Conflict | • `theirs`: Use server version• `mine`: Use local version |
| States match | Auto-sync | Copy to server |
</details>

**We highly recommend using the SDK's interface to edit those file and restrain from
editing them directly.**

However, in some cases you might want to automate certain tasks through additional
scripts and task runners - in such cases it is certainly useful to have a better
understanding about the underlying file structure and properties.

**BE CAREFUL WHEN MANIPULATING THE SYNC STATES, YOU ARE PUTTING YOUR SYSTEM INTEGRITY AT RISK!**
