# io.Connect Desktop CLI | Seed Project walkthrough

**URL:** <https://community.interop.io/t/io-connect-desktop-cli-seed-project-walkthrough/454>\
**Category:** io.Connect Desktop\
**Tags:** Video, iocd-10, CLI\
**Created:** [January 14, 2026, 5:33pm UTC](https://community.interop.io/t/io-connect-desktop-cli-seed-project-walkthrough/454 "2026-01-14T17:33:01Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![toni.petrov](https://yyz2.discourse-cdn.com/flex028/user_avatar/community.interop.io/toni.petrov/32/17_2.png) [@toni.petrov](https://community.interop.io/u/toni.petrov)\
**Post date:** [January 14, 2026, 5:33pm UTC](https://community.interop.io/t/io-connect-desktop-cli-seed-project-walkthrough/454/1 "2026-01-14T17:33:01Z")

</div>

In this recording @kiril.popov is setting up and running an io.Connect Desktop Seed project from scratch. He walks through generating a new project via the CLI, exploring the default launcher, demo apps, and the project structure. It also explains how components and the `modifications` folder work, how to safely customize configs, apps, versioning, and branding, and where to manage CLI, build, and signing settings.

https://fast.wistia.net/embed/iframe/vuz5jlzfa3

## Demo takeaways

This complements the **Seed Project** documentation - [io.Connect Desktop Documentation - Seed Project](https://docs.interop.io/desktop/developers/seed-project/index.html) . Assuming you already created seed project and ran setup/dev below we explore workflow patterns to be used after you have the dev project running.

## `components/` is vendor code, `modifications/` is yours

A seed project deliberately separates downloaded platform content from your overrides:

- **`components/`** – downloaded platform components (treat as **read-only** )
- **`modifications/`** – all platform customizations (config, assets, apps) applied on top of components
- **`apps/`** – templates for customizable system apps, plus any apps you want bundled into the build
- **`config/`** – CLI + packaging config (`iocd.cli.config.json`, `forge.config.js`, `iocd.license.key`)

Core component updates/reinstalls are part of the seed project value proposition, and anything you edit under `components/` is, by design, at risk of being overwritten. Use the modifications folder for durable customization.

## System configuration: what `system.json.merge` _actually_ does

io.Connect Desktop’s system-wide behavior is controlled by `system.json`. The recommended approach with Seed Project is to override it with `modifications/base/iocd/config/system.json.merge` instead of editing the original file.  
This lets you add only the settings you care about (logging, auto-updates, features), and the platform’s default config remains intact for easier maintenance.

### Split system changes

`system.json.merge` can get large, so you can keep separate “fragments” (e.g., _workspaces_, _logging_, _auto-update_) like:

- `system.json.merge-workspace`
- `system.json.merge-logging`
- `system.json.merge-autoUpdate`

## The `config/` folder

- **`config/iocd.cli.config.json`** – which components you need, which versions you want (pin vs `latest`), and related CLI settings
- **`config/forge.config.js`** – packaging/output formats and build behavior

Use **CLI config** to define _what you download_, use **Forge config** to define _what you ship_.

## Fast “proofs” that your customization works

Here’s a quick visual confirmation that you’re not accidentally running “vanilla”.

### A) Change the product version in `package.json`

Seed projects treat `package.json` as product metadata (including the platform app version).

1. Change `"version"` in `package.json`
2. Restart `npm run dev`
3. Validate that the UI surfaces that version where you expect it

### B) Swap branding assets via `modifications/base/iocd/assets/...`

There’s a dedicated folder for replacing the default logo/icon files under `modifications/base/iocd/assets/images/`.

1. Drop your replacement icon/logo files in the modifications assets path
2. Restart dev mode
3. Confirm the shell starts with the new branding
