Layout
packages/core: the twin engine: redaction, the store, segmentation, mining, automations, policy, autonomy and naming.apps/desktop: the Electron app.src/mainis the main process,src/rendereris the interface, andtest/e2e.cjsis the end-to-end script.apps/browser-ext: the Chrome and Edge extension and its native messaging host.tests/privacy: the planted-canary suite, which checks that nothing private reaches an output.scripts/measure: a CPU and memory sampler for the resource budgets.docs: the plan and research notes.docs-siteis this documentation.
Commands
You need Node.js 22 or later.npm run dist:dir builds an unpacked app for the current system. npm run dist builds the installers. npm run measure runs the sampler against the built app.
End-to-end tests
The end-to-end script launches the built app through Electron and drives it with Playwright. It covers setup (including the optional decision-model step), the overview, suggestions, automations, the tray, the network ledger, Delete everything, and the fixed 900 by 600 window. It checks that every main route fits the window with no sideways scroll, and that the window cannot be resized, maximised or made full screen. Playwright is not a dependency of the repository, so install it outside the tree:COMPANYOS_TEST_LAYA_FIXTURE, which a packaged build ignores.
Decision-model tests
apps/desktop/test/laya.test.ts tests the bundle manager against a local server that stands in for Hugging Face. It never downloads the real bundle. One opt-in test uses the real bundle already on your machine. It reads the files, checks them against the pinned digests, loads the model and asks one question:
receptron--laya-onnx/<commit>/, the layout the @receptron/laya package uses. The test only reads it.
Continuous integration
.github/workflows/ci.yml runs on every push and pull request. It runs the typecheck, the unit tests, the privacy suite, the build and an unpacked package on Ubuntu, macOS and Windows. The end-to-end script runs on Linux under a virtual display.
.github/workflows/docs.yml runs on pull requests that change docs-site, and checks the documentation (see below). .github/workflows/release.yml runs when a version tag is pushed. See Releasing.
Checking the docs
Run these from the repository root. They need Node.js 22 or later and no Mintlify account.scripts/docs/check-docs.mjshas no dependencies. It checks that every page indocs.jsonhas a file and every page file is in the navigation, that each page has a title and description, and that internal links, images and#headinglinks resolve. It does not fetch external links.mint validateis the Mintlify CLI’s content check and strict build. It exits 1 when it finds errors.mint broken-linksis the CLI’s link check. It exits 1 when it finds a broken link.
mint dev serves a local preview.
Publishing the docs
The workflow above only checks. Nothing publishes the docs yet. Publishing is done by Mintlify, and every step below needs the owner’s Mintlify account, so none of them has been run or checked here. The names of menus in the Mintlify dashboard change, so follow the dashboard if it differs.- Needs the owner’s Mintlify account. Create one at mintlify.com, or run
mint signupfromdocs-site. The CLI says the Starter plan is free and needs no credit card. - Connect GitHub in the Mintlify dashboard. Install the Mintlify GitHub app on the
katesaikishoreaccount and give it access to thecompanyOSrepository. This needs the repository owner’s permission. - Pick the repository and the branch. Choose
katesaikishore/companyOSand the branch to publish,main. - Set the docs folder to
docs-site.docs.jsonis indocs-site, not at the repository root, so use the dashboard’s Git settings and its monorepo option, and give it the pathdocs-site. Without this, Mintlify looks fordocs.jsonat the root and finds nothing. - Save and wait for the first deployment. After that, each push to the chosen branch redeploys the site. The CLI says the site is then live at an address of the form
https://<subdomain>.mintlify.site. The pull request check keeps broken pages from reaching the branch. - Optional: a custom domain. Add one in the dashboard (the CLI has
mint add-domain <domain>). It also needs DNS records at your domain provider. - Add the live address to the README, and to the repository’s website field on GitHub, once it exists.
mint --help also lists mint deploy, which makes an anonymous site and prints Git push instructions. It was not run, because it creates a site.