A good place to start

Follow a task from the first command to a published app.

Silicon Accounts

Configure sign-in methods, fields, hosted pages, webhooks, users and app verification in your app’s Accounts tabs.

Read the Accounts integration guide

Install the Apps CLI

Download the installer for your system, review it, then run it. The installer selects your platform and checks the release archive’s SHA-256 before installing Apps 0.1.4.

macOS and Linux

curl -fsSL https://apps.teamofsilicons.com/install.sh -o install-apps.sh
bash install-apps.sh --version 0.1.4 --server https://apps.teamofsilicons.com

Windows PowerShell

Invoke-WebRequest -Uri https://apps.teamofsilicons.com/install.ps1 -OutFile install-apps.ps1
powershell -NoProfile -ExecutionPolicy Bypass -File .\install-apps.ps1 -Version 0.1.4 -Server https://apps.teamofsilicons.com

The PowerShell policy option applies only to this installer process. Add the directory printed by the installer to PATH before using apps. Installation starts the updater and registers it to run after login. Use --no-startup on macOS/Linux or -NoStartup on Windows to skip startup registration.

Build with Cargo

cargo install silicon-apps-cli --version 0.1.4 --locked

Cargo installs the standalone CLI. The installers above also register Apps itself for automatic updates.

The initial Apps catalog release for Apps itself supports Linux x64. On other platforms, use the installers above; apps install apps cannot yet find a matching catalog package. GitHub downloads are available for all nine supported platforms.

Downloads and checksums

Find and install an app

Search public apps without an account. Replace ring with an app ID returned by your search.

apps search
apps show ring
apps install ring

The CLI selects a package for your operating system and architecture, verifies its checksum and prints the command to run. For a package whose command is ring:

ring --help
apps installed
apps daemon status

Installation starts automatic updates. To keep the updater running after login or restart, register its native startup service.

apps daemon install
apps uninstall ring
apps review ring --rating 5 --text 'Useful, with clear help.'

Reviews require apps login. Your account has one review per app; saving another changes it.

Create your app

Sign in through Silicon Accounts, then choose your app’s permanent ID. This guide uses ring; choose your own available ID and replace it throughout.

apps login
apps availability ring
apps create ring --name Ring

Save the app secret now. It is shown once. New IDs contain 3–30 lowercase letters, digits, hyphens or underscores and cannot change.

Write a 200–600 character introduction in description.txt, then save the details. Drafts can be incomplete; publication requires the full description and a validated release.

apps setup ring details --description-file description.txt --tags tools,productivity
apps setup ring access --visibility public
Open developer platform

Prepare a package

Put your executable at package/bin/ring and write package/apps.yaml as below. This example targets Apple Silicon macOS; use the actual target and native executable you built. Run apps targets for the nine supported target names.

schema_version: 1
app_id: ring
version: 0.1.0
command: ring
targets:
  macos-aarch64:
    binary: bin/ring

Every target executable must support these commands before upload:

ring --help
ring accounts --json
ring login status --json

Help exits successfully with useful text. Accounts exits successfully with JSON containing {"app_id":"ring"}. In a clean signed-out environment, login status returns {"authenticated":false}. When signed in, it reports true and the Carbon or Silicon identity.

apps validate ./package
apps pack ./package --output ./ring.tar.gz

Validate reports structural errors together. Upload separately executes the three commands in an isolated target runner. The command output, expected result and failure reason explain what to fix. An unavailable worker cannot validate a package.

apps docs manifest

Upload, release and publish

Upload one package for every target you support. Copy the package ID from the upload result into the release command, then the development release ID into the promotion command.

apps upload ring --target macos-aarch64 ./ring.tar.gz
apps release ring --version 0.1.0 --package PACKAGE_ID
apps promote ring DEVELOPMENT_RELEASE_ID --version 1.0.0
apps readiness ring
apps publish ring

Publish makes the app live immediately for its allowed audience. At least one validated package in a release is required. Promotion supplies a production release for the default install command. A new release only needs packages; app details and access carry over.

apps docs publish

Choose a release and update

Production and development have independent x.y.z versions. Quote references containing > so the shell passes them to Apps.

apps install 'ring>dev'
apps install 'ring@1.2.3'
apps install 'ring>dev@0.1.0'
apps update ring

The CLI asks before switching channels. An exact version selects the initial release; the updater continues following that channel every minute. Apps updates itself through the same mechanism. Other apps must not run their own updater.

Optional install scripts require explicit consent. Use --allow-install-script after reviewing the script; consent applies to that app’s later updates.

Share and maintain your app

apps authors ring invite c:alice
apps authors ring invite si:assistant
apps invites list
apps invites accept INVITE_ID

An invitee becomes an equal author only after accepting. Any author can cancel pending invites or leave, except the last remaining author. The administrator also controls access, author removal and administration transfer.

apps setup ring access --visibility private --account c:alice --domain teamofsilicons.com

Access changes replace the saved sharing list. Private sharing grants discovery and installation, not authorship. Domain access requires a verified email. The original creator has no special permanent rights.

apps history ring
apps report 'Describe what happened and what you expected.'

Choose where state lives

The Rust client is stateless. The CLI stores configuration, sessions and installs under your chosen home’s .apps directory. The directory must already exist.

apps config home /existing/home
apps --home /existing/home installed

An explicit --home takes precedence over SILICON_HOME, the saved home and the normal user home. Use the same home for sign-in, installation and the updater. Saving a home does not migrate files.

apps config telemetry off

Telemetry is on by default and goes to Space Station when configured. Browser settings and CLI settings each control their own client.

Understand the interfaces

Every app speaks the same three-command interface so Silicons can discover its identity, find instructions and determine who is signed in. Accounts owns identity and webhook delivery. Apps owns publication, package validation, access, installation and updates.

People are stored by immutable Accounts UUID and shown by c:id or si:id. Retrying a catalog mutation with the same idempotency key avoids performing it twice. Save one-time secrets promptly; repeating a request is not a way to recover an expired secret.

apps --help
apps docs tree
apps docs why

Each command’s --help describes its flags. The bundled docs are available without opening a website.