Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 71 additions & 1 deletion docs/decisions.md
Original file line number Diff line number Diff line change
Expand Up @@ -10551,7 +10551,9 @@ reference is [integrations](integrations.md#the-composio-organization-of-an-envi
missing from the Folder, its manifest unreadable), the rule is `unverified`:
never taken for the person's choice and never guessed (Pablo's review of
#372). Any other Environment, a personal one or a computer, works in the
organization the person chose. *(Amended 2026-10-13, after rc.65:)* the owning
organization the person chose *(amended 2026-10-26: a personal Environment works
in the account's default organization, see the addendum of that day)*.
*(Amended 2026-10-13, after rc.65:)* the owning
Organization is the one Organization settings select (F45):
`selectCatalogOrganization` with the binding's `owner.organization`, the manifest
slug compared case-insensitively as GitHub compares slugs, else the directory
Expand Down Expand Up @@ -10601,6 +10603,7 @@ reference is [integrations](integrations.md#the-composio-organization-of-an-envi
Environment's sign-in dialog advises the default organization, the one
Composio made at the sign-up, and the person chooses it. Once the CLI prints
when an organization was created, the oldest one can be chosen by the rule.
*(Done on 2026-10-26, see the addendum of that day.)*

| Alternative | Trade-off / disposition |
| --- | --- |
Expand Down Expand Up @@ -11473,6 +11476,73 @@ English: on main, after the sign-in Gmail's "Připojit" landed on Settings → T
it stays on Integrace with its form, a card read before the sign-in connects after a
live check, and a Composio switched off says so on its cards.

**Addendum 2026-10-26, reported by the Operator: a personal Environment works in the
account's default Composio organization.** On his personal Environment the Operator
found the apps of a work organization where his personal ones belong. Composio's browser
sign-in lands in the organization open in Composio's dashboard, and that is often an
Organization's one, since the person creates those there (point 5 of addendum (2) of
2026-10-13); the Launchpad then left a personal Environment's organization to the
person, because the CLI did not say which organization is the default (point 7). Root
decision 0162 says the personal Environment uses the account's default organization
(its addendum of 2026-10-13, point 2), and point 7 named the missing step: the CLI
printing when each organization was created.

1. **The default organization is the oldest.** Composio marks none as the default and
lists the newest first; the one it made at the sign-up is the account's oldest.
Lazurio's build of the CLI prints each organization's `created_at` in `orgs list`
from `0.4.3-lazurio.3` on (Lazurio/composio#4), and `defaultComposioOrganization`
takes the oldest. An account read on 2026-10-26 confirms it: its default
organization was made at the sign-up and each Organization's one weeks later, and
the list showed the default one last.
2. **Brought current like an Organization's one.** A Machine binding whose owner is a
person, the personal Environment, has the rule `default`. The Integrace reading, the
sign-in dialog of Settings → Tools and every link and removal make the default
organization current where another one is, journaled as in point 2 of addendum (2).
The dialog offers no choice there, since the next reading would undo it; Integrace
and agents read the default organization as `{name, state, default: true}`, named as
Composio names it and never rewritten as an Organization's name would be.
3. **Nothing guessed.** Where an organization has no date (Composio's own CLI, or
Lazurio's before `0.4.3-lazurio.3`), where two are equally old, or where the list is
a full page of 50 (`orgs list` prints one page, the newest first, so the oldest may
be left out; Pablo's review of Lazurio/composio#4), the verdict is `chosen`: the
person's current organization and the dialog's choice, as before this addendum.
Where the default organization exists but cannot be made current, nothing of
Composio counts, as in point 4.
4. **Unchanged:** an Organization's Environment and a Team Environment (the rule of the
Organization's name), and a computer, where the person chooses.
5. **The pin moves to `0.4.3-lazurio.3`.** `composioBuild` names it, the installer at the
release's own commit `5bcde7de8dc78681e8d44262fcf134afab19e091` (the squash of
Lazurio/composio#4; its `install.sh` byte for byte the one of `0.4.3-lazurio.2`) and
the four archives' SHA-256 as the release's `checksums.txt` lists them and the
downloaded archives hash (read 2026-10-26). An Environment with `0.4.3-lazurio.2`
keeps the person's choice until the person updates Composio in Settings → Tools,
which then says that it is not the build Lazurio uses, as with every pin (note of
2026-10-19). The release ran its own installation check on Linux and macOS; its
macOS arm64 build, run in an isolated home with a copy of one real account's
sign-in, printed each organization's `created_at` and the default one as the oldest.

| Alternative | Trade-off / disposition |
| --- | --- |
| The default organization by a name ending in `_workspace` | No CLI change; but a guess about Composio's naming; rejected as in addendum (2) |
| The default organization as the last one `orgs list` prints | No CLI change; but Composio documents no order; rejected |
| Remember the person's choice for the Environment | Survives a new sign-in; but the first sign-in still lands in the open organization, and root decision 0162 names the default one; rejected |
| Read the dates from Composio's API in the Launchpad | No CLI release; but a second way to Composio with the person's key beside the one CLI (root decision 0162, addendum of 2026-10-08, point 4); rejected |

Verified by tests: the dates kept as `createdAt` where they are dates and left out
otherwise (`tests/tools-login.test.ts`); the oldest organization as the default, and
`chosen` without a date for each, between two equally old, without any and on a full
page of 50; the rule
`default` on a personal Environment and `chosen` on a computer; on a personal
Environment the sign-in dialog and the Integrace reading making the default
organization current after a sign-in that landed in another one, the dialog with
nothing to choose, an organization made current behind the reading switched back and
a link going to the default organization, switched back first; a default organization
that cannot be made current with no account listed, a link refused, and the page and
`lazurio integrations list` naming it as Composio does; a CLI without dates leaving
the choice to the person as before (`tests/integrations-composio-organization.test.ts`);
Začínáme's Composio step done only where the default organization is current
(`tests/first-run.test.ts`).

## F43 — The Environment vault: one Vaultwarden account per Environment, its Bitwarden CLI pinned, one session for its agents

> **Superseded in part by [F53](#f53--every-environment-owns-its-vault-its-own-organization-in-the-networks-vaultwarden-created-by-its-technical-account)
Expand Down
2 changes: 1 addition & 1 deletion docs/environment-tools.md
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,7 @@ an agent (`gogcli`, `neon`) are refused with a pointer to `lazurio tools prompt
immutable), downloaded into a private file first, then run with
`COMPOSIO_INSTALL_PLUGINS=0 COMPOSIO_INSTALL_SHELL=none COMPOSIO_INSTALL_HELP=0
COMPOSIO_GITHUB_OWNER=Lazurio COMPOSIO_GITHUB_REPO=composio
COMPOSIO_INSTALL_VERSION=@composio/cli@0.4.3-lazurio.2` and the target's
COMPOSIO_INSTALL_VERSION=@composio/cli@0.4.3-lazurio.3` and the target's
`COMPOSIO_INSTALL_SHA256` (of the archive the installer downloads: on macOS an x64
process that Rosetta 2 translates gets the arm64 one, as its `detect_target` chooses;
bundle in `~/.composio`, link in `~/.local/bin`, no agent
Expand Down
55 changes: 35 additions & 20 deletions docs/integrations.md
Original file line number Diff line number Diff line change
Expand Up @@ -358,14 +358,14 @@ returned or logged.
Decision F42, addendum (3) of 2026-10-13 (Matěj's decision), and its note of
2026-10-19. Composio's stable CLI cannot remove an account without a prompt, names no
account but by an alias and notices a finished sign-in late, so Lazurio installs its
own build until a stable release of Composio's has all three changes (proposed
upstream in ComposioHQ/composio#4817, issue #4816, and #4809; the login's poll not
yet).
own build until a stable release of Composio's has all four changes (proposed
upstream in ComposioHQ/composio#4817, issue #4816, and #4809; the login's poll and
the organizations' dates not yet).

- **The build.** Composio's stable 0.4.3 with exactly three changes, the GitHub
release `@composio/cli@0.4.3-lazurio.2` of the fork Lazurio/composio (assets
- **The build.** Composio's stable 0.4.3 with exactly four changes, the GitHub
release `@composio/cli@0.4.3-lazurio.3` of the fork Lazurio/composio (assets
`composio-<target>.zip` and `checksums.txt`, as Composio's); `composio --version`
prints `0.4.3-lazurio.2`. `connections remove <account> --yes` (and `-y`) removes
prints `0.4.3-lazurio.3`. `connections remove <account> --yes` (and `-y`) removes
without a prompt; `connections list` prints on every entry its `id` (`ca_…`), its
`alias` wherever it has one (a toolkit's only account too; `alias: null` may stand
for none) and, where Composio knows the provider's identity, `display_name`
Expand All @@ -376,22 +376,26 @@ yet).
minutes (`--key`: about 75 s), where Composio's own pause doubles from the sixth
check on (checks at about 0, 5, 10, 15, 20, 25, 35, 54, 92 and 169 s), so the
Launchpad's Composio dialog noticed an "Authorize" up to about a minute late
(Lazurio/composio#3, since 0.4.3-lazurio.2). Its `composio upgrade`, update
check, skill installation and companion self-repair default to the fork's releases.
(Lazurio/composio#3, since 0.4.3-lazurio.2). `orgs list` prints each
organization's `created_at` as Composio's API returns it, by which a personal
Environment finds the account's default organization, its oldest
(Lazurio/composio#4, since 0.4.3-lazurio.3; F42, addendum of 2026-10-26). Its
`composio upgrade`, update check, skill installation and companion self-repair
default to the fork's releases.
- **The pin** is one constant, `composioBuild` (`src/tools/composio-build.ts`): the
fork, the version and its tag, and the commit of the fork's installer
(`installerCommit`). The tag and the commit come from the same release of the fork
and change together, in one reviewed change; the constant goes, and the recipe
returns to Composio's installer and latest stable release, once Composio's own
stable CLI has all three changes.
stable CLI has all four changes.
- **Installation** (`lazurio tools install composio`, Settings → Tools): Composio's
installer from Lazurio's fork, pinned by commit
(`https://raw.githubusercontent.com/Lazurio/composio/<installerCommit>/install.sh`;
pinned by commit, the URL is immutable), downloaded into a private file first and
run with `COMPOSIO_INSTALL_PLUGINS=0`,
`COMPOSIO_INSTALL_SHELL=none`, `COMPOSIO_INSTALL_HELP=0`,
`COMPOSIO_GITHUB_OWNER=Lazurio`, `COMPOSIO_GITHUB_REPO=composio` and
`COMPOSIO_INSTALL_VERSION=@composio/cli@0.4.3-lazurio.2`. It downloads the release's
`COMPOSIO_INSTALL_VERSION=@composio/cli@0.4.3-lazurio.3`. It downloads the release's
archive for the platform, checks it against the release's `checksums.txt`, publishes
the bundle into `~/.composio` beside the files already there and links
`~/.local/bin/composio`. The installer served at `https://composio.dev/install`
Expand All @@ -406,7 +410,7 @@ yet).
installer's `detect_target` chooses), so the
installer refuses any other archive before it extracts or replaces anything: a
refused installation or update changes nothing. The installation is done only when
`composio --version` then prints exactly `0.4.3-lazurio.2`. Were another version to
`composio --version` then prints exactly `0.4.3-lazurio.3`. Were another version to
run after an installer that ignored the pins, it would fail at `verify`
(`version-mismatch`), and what runs would stay.
- **Update** (`lazurio tools update composio`; "Aktualizovat" / "Update" in Settings →
Expand Down Expand Up @@ -460,7 +464,7 @@ step left to do):
| --- | --- |
| `ExampleCompany`, the Organization "Example Company" named as Composio accepts it | that Organization's Environments |
| one organization for each other Organization, named as it is | that Organization's Environments |
| the default organization (`<login>_workspace`, made at the sign-up) | the user's personal Environment |
| the default organization (made at the sign-up, so the account's oldest) | the user's personal Environment |

Nobody else is invited to these organizations and no key is shared: the user
signs in to Composio with their own account, and Lazurio switches the CLI to the
Expand Down Expand Up @@ -490,10 +494,15 @@ in: a Team's account is an ordinary Composio account.
the Organization's settings, which say whether Composio is allowed, never
disagree on the owner. Missing or ambiguous is `unverified` (fixed on
2026-10-13 after rc.65, whose exact comparison left every Environment of an
Organization with capitals in its slug `unverified`). Any other Environment, a personal one or a computer, works in
the organization the user chose; by advice (this page) a personal
Environment's is the default one, and the sign-in dialog offers the choice where
the account has several. A name matches by its letters and digits alone
Organization with capitals in its slug `unverified`). A personal Environment
(a Machine binding whose owner is a person) works in the account's default
organization, the one Composio made at the sign-up (F42, addendum of 2026-10-26):
Composio marks none as the default and lists the newest first, so the rule takes
the oldest by the `created_at` Lazurio's build prints from `0.4.3-lazurio.3` on
(`defaultComposioOrganization`). Where the CLI does not date every organization,
two are equally old, or `orgs list` printed a full page of 50 (the newest first,
which may leave out the oldest), it is not guessed: the user's choice stands, as on a
computer, where the sign-in dialog offers it among several. A name matches by its letters and digits alone
(`organizationKey`, note of 2026-10-17, evening): its case, diacritics,
spaces, punctuation and underscores do not count, so every name Composio
allows for the Organization matches it ("Human and Machine",
Expand All @@ -512,7 +521,9 @@ in: a Team's account is an ordinary Composio account.
- **The verdict** (`composioOrganizationVerdict`), over `orgs list`: `matches`
where the one organization of that name is current; `elsewhere` where it
exists and another is current; `missing` where the account has none;
`ambiguous` where it has more than one, and none is guessed.
`ambiguous` where it has more than one, and none is guessed. For a personal
Environment `matches` or `elsewhere` for the default organization, and
`chosen` where it cannot be told.
- **Brought current** (`convergeComposioOrganization`): the reading (only where
Composio is installed, signed in, on and allowed), and the sign-in dialog of
Settings → Tools after a sign-in, make an `elsewhere` organization current
Expand All @@ -521,8 +532,10 @@ in: a Team's account is an ordinary Composio account.
link and every removal asks it live first (`inOwnOrganization`), never the
cached reading: it switches back where another organization was chosen, goes
to the current one where the account has none of the name or several, and
refuses with `composio-organization` where the organization cannot be told. A
user's choice is never changed.
refuses with `composio-organization` where the organization cannot be told.
On a personal Environment it brings the default organization current the same
way, so the sign-in dialog shows no choice there. A user's choice is never
changed on a computer, nor where the default organization cannot be told.
- **Missing or there more than once** (Matěj's decision of 2026-10-13):
Composio works in the user's current organization, its accounts count and
links and removals go there; Apps → Integrace says what to do with a link to
Expand All @@ -542,7 +555,9 @@ in: a Team's account is an ordinary Composio account.
`organization`: none of its accounts is listed, and a link or a removal is
refused (`409 composio-organization`) with nothing written. The reading's
`composio.organization` is `{name, state}` on an Organization's Environment
(the name null where it is `unverified`), null elsewhere.
(the name null where it is `unverified`), `{name, state, default: true}` on a
personal Environment (the name as Composio gives it, `matches` or `elsewhere`),
null elsewhere.
- **Creating one** is the user's, in Composio's dashboard: neither its CLI nor
its documented API creates or renames an organization (the API lists them, the
CLI lists and switches). The sign-in dialog and Apps → Integrace find it by
Expand Down
10 changes: 5 additions & 5 deletions docs/launchpad-development.md
Original file line number Diff line number Diff line change
Expand Up @@ -2516,10 +2516,10 @@ card's state is read again. What it shows:

**Update** (decision F42, addendum (3) of 2026-10-13). The tools reading carries the
build Lazurio pins for a tool (`pinned`; today only composio, Lazurio's build of the
Composio CLI, `0.4.3-lazurio.2` since 2026-10-19). A composio whose version is not
that build, an earlier build of Lazurio's (`0.4.3-lazurio.1`) included, says so in its
Details ("Toto není sestavení, které Lazurio používá (0.4.3-lazurio.2)." / "This is not
the build Lazurio uses (0.4.3-lazurio.2).", the amber attention state) and its row offers
Composio CLI, `0.4.3-lazurio.3` since 2026-10-26). A composio whose version is not
that build, an earlier build of Lazurio's (`0.4.3-lazurio.2`) included, says so in its
Details ("Toto není sestavení, které Lazurio používá (0.4.3-lazurio.3)." / "This is not
the build Lazurio uses (0.4.3-lazurio.3).", the amber attention state) and its row offers
"Aktualizovat" / "Update" (named "Update composio") where the update can work: a
`launchpad` tool this Environment offers, not refused by the Organization, installed
in the standard path (an installation elsewhere is never shadowed by a second copy, so
Expand All @@ -2529,7 +2529,7 @@ there is no button there). The click is the user's consent: it posts
installer run per tool at a time, shared with installation, `busy` otherwise; a tool
without a pinned build is refused as `update-unavailable`). While it runs the status
line says that the tool is being updated; the row then says the outcome ("composio
0.4.3-lazurio.2 je nainstalovaný; přihlášení zůstává." or that the update did not
0.4.3-lazurio.3 je nainstalovaný; přihlášení zůstává." or that the update did not
finish, with why under "What happened" in Details) and the tools are read again.

**gh and its SSH key** (F19 addendum 2026-09-28). The gh dialog has a third step,
Expand Down
Loading
Loading