Contribute
Contributing and development
Set up a development checkout, run the tests, and follow the rules that keep One Connect safe to adopt.
Get the code running#
git clone https://github.com/krishsah01/One-connect.git && cd One-connect
pnpm install
pnpm typecheck
pnpm test # core, daemon (real runner processes, fake vendor CLIs) and web
pnpm demo # daemon + UI with scripted agents; uses no subscription usageNode 24 or later runs the TypeScript sources directly through type stripping, so there is no build step except for the web UI (pnpm build). Use erasable TypeScript syntax only: no enums, namespaces or parameter properties.
For dashboard work, run the daemon with a throwaway data folder and Vite next to it:
ACC_DATA_DIR=/tmp/acc-dev ACC_ALLOW_TEMP_DATA_DIR=1 pnpm acc daemon --config …
pnpm dev:web # http://localhost:5173, proxied to the daemonRepository layout#
| Path | Contents |
|---|---|
packages/core | Pure, shared code: config schema, entities, lifecycle, events, reducer, handoff parser, redactor, pre-flight, templates |
packages/daemon | The engine: services, store, runner, adapters, git, context, MCP server, rules, HTTP server, phone, CLI |
packages/web | The React dashboard |
packages/desktop | The Tauri Mac app |
examples/ | The example configuration, the sample repository and the fake agents used by tests and the demo |
design/ | Brand assets and the design tokens (design/tokens.json) |
docs/ | Engineering notes, plans and verification records |
scripts/ | Demo, license, SPDX, DCO, desktop packaging, tokens and docs generators |
Tests#
pnpm test runs three Vitest projects: core (Node), daemon (Node, real child processes, 30-second timeouts) and web (jsdom).
- Agent adapters are checked by a shared contract suite against sanitized captures of real vendor sessions in
packages/daemon/test/fixtures/real/. - The end-to-end suite drives scripted fake agents (
examples/fake-agent), so failure scenarios such as usage limits, hangs and out-of-scope edits cost nothing. - Native code:
cargo test --manifest-path packages/desktop/src-tauri/Cargo.toml --locked.
Safety-relevant changes need tests. That covers billing guards, approval routing, redaction, path scopes and push guards.
Checks CI runs#
| Check | Command |
|---|---|
| Types, tests, web build | pnpm typecheck && pnpm test && pnpm build (Ubuntu and macOS) |
| SPDX headers and manifest licenses | pnpm spdx:check |
| Dependency licenses and notices | pnpm license:check |
| Mac app build and native tests | pnpm desktop:prepare, cargo test, pnpm desktop:build |
| DCO sign-off on every commit | .github/workflows/dco.yml |
Rules of the road#
Sign off every commit (Developer Certificate of Origin 1.1):
git commit -s. This certifies you wrote the change or otherwise have the right to submit it under the project license. CI rejects unsigned commits; fix a branch withgit rebase --signoff origin/main.Headers. New source files start with an SPDX header matching the project license:
// SPDX-License-Identifier: Apache-2.0 AND LicenseRef-Commons-Clause-1.0Dependencies need a license allowed in
license-policy.json; never add GPL, AGPL or SSPL code. After changing dependencies, runpnpm license:notices.No vendor binaries, credentials or private APIs. Adapters drive official CLIs, apps and public APIs only.
One topic per pull request, with a short description of the failure mode it addresses.
By participating you agree to the Code of Conduct.
Design tokens#
design/tokens.json is the single source of the app's colours, type, spacing, radius, shadows, durations and easing.
node scripts/design-tokens.mjs # writes packages/web/src/tokens.css
node scripts/design-tokens.mjs --check # fails when tokens.css is staleEditing these docs#
This website and its documentation live in a separate repository, one-connect-website. Each page is a Markdown file there, and every page has an Edit this page on GitHub link at the bottom.