io.Connect Desktop CLI | Seed Project walkthrough

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.

Demo takeaways

This complements the Seed Project documentation - io.Connect Desktop Documentation - Seed Project. 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 section 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