Skip to content

Development and Contributing

Shivang edited this page Oct 5, 2026 · 2 revisions

Development and contributing

The BossConsole repository contains the desktop host. Dynamic plugins are developed in separate repositories under boss-plugins.

Get the source

Use JDK 17 and the included Gradle wrapper. You do not need a separately installed Gradle version.

git clone https://github.com/risa-labs-inc/BossConsole.git
cd BossConsole
./gradlew showVersion

Read the repository's AGENTS.md and the guide for the module you intend to change.

Local configuration

Create local.properties in the repository root for your authorized development configuration:

jxbrowser.license.key=<your-jxbrowser-license>
SUPABASE_URL=https://<your-project>.supabase.co
SUPABASE_ANON_KEY=<your-project-anon-key>
SUPABASE_FUNCTION_URL=https://<your-project>.supabase.co/functions/v1

Do not commit populated configuration files or credentials. The embedded browser requires a JxBrowser license; account-backed features require the corresponding backend configuration. Missing credentials do not grant access to the official production backend.

Configuration precedence is environment variables → system properties → local.properties → embedded build configuration. Check inherited environment variables when a run seems to ignore your local file.

Build and validate

For a host UI change, the standard validation gate is:

./gradlew :composeApp:desktopTest :composeApp:detekt :composeApp:ktlintCheck

Run the equivalent checks for the modules you change. Supabase functions and shipped scripts have their own checks; follow their documentation and CI harnesses. Keep regression tests focused on observable behavior.

To launch your development build yourself with a separate debug data root:

BOSS_DEV_MODE=1 ./gradlew :composeApp:run

Debug data uses ~/.boss_debug; release data uses ~/.boss. Tests that persist application state must retain their isolated test home instead of using your real data directory.

Where changes belong

Path Responsibility
composeApp/ Shared Compose UI and desktop-specific integration.
plugin-platform/ Host plugin loader, repository, and API infrastructure.
modules/ IPC, services, orchestration, and out-of-process app modules.
supabase/ Database migrations and Edge Functions.
scripts/ Packaged CLI shims and developer tooling.
Separate plugin repositories Dynamic browser, terminal, editor, Toolbox, and other plugins.

BossTerm and BossEditor are standalone libraries bundled by their respective plugins, rather than direct host dependencies.

Contribute a change

Read CONTRIBUTING.md for the current target branch and review requirements. Search existing issues and open PRs before starting. Keep the change focused and include relevant validation evidence.

PR creation is currently restricted to repository collaborators. If GitHub does not let you open a PR, contact a maintainer about contribution access. This wiki does not change repository permissions.

For ordinary bugs, use GitHub Issues with reproduction steps and diagnostics. For vulnerabilities, follow the security policy and email security@risalabs.ai rather than filing a public issue.


Continue: Home · ← The local boss CLI · Security and privacy →

Clone this wiki locally