Companies in Chui

How colleagues share meetings with each other, and who may invite, remove or leave.

A company in Chui is a small group of colleagues who can see the meetings each has shared with the group. One account is in at most one company. The person who starts a company is its first admin, and a company can have more than one. Only an admin can invite anybody, take an invitation back, remove a colleague, or make somebody else an admin. Wherever this guide says "the owner", read "an admin": every admin runs the company exactly as the person who started it does.

Sharing a meeting with the company is what the app calls sharing it with your team — one thing under two words, and "Who else can see a meeting" is the page about which meetings that actually reaches.

A company of one person behaves exactly like no company at all. Nothing is shared and no new control appears anywhere in the app until a second person joins — the team section in Settings, where you invite them, is the single exception — so starting one changes nothing on its own; it is the invitation that does. (Asking an assistant with get_company() still names it: the question «which company am I in?» deserves an answer, and it is the app's controls that stay away, not the fact.)

A team is paid for by the company

These grow a team, and a team is paid for by the company — one price for every seat, the owner's included:

A team is the moment there is a second person, so the smallest team is two seats — you and one colleague, €19.98 a month (or $19.98, £17.98, CA$27.98, CHF 19.80). The company pays for every seat on one bill by card on chui.io, the owner's own included; nobody in a team needs a plan of their own, and whoever still has one is told where to stop it.

The card is taken on chui.io, or in Chui for Mac or Windows from chui.io/download — never inside the iPhone app, which shows the way there; on Android, Google Play takes it. On an iPhone whose App Store is the United States one, the team section in Settings has a button, «Pay for the team on chui.io», that opens chui.io's team page; in any other country's App Store Apple does not allow that button, so the same place says «The team is paid for at chui.io — on a computer or in a browser». The same goes for paying for a team again after it stopped. On Android the team is paid for in the app, through Google Play (since build 238; in every country since build 244). The team section in Settings asks for the team's name and a first colleague's address, how many places, and by the month or by the year; it shows Google Play's price and has a button, «Pay with Google Play». Google Play sells a team in sizes from 2 to 50 places, and only the sizes it gives a price for are offered; when every place is taken, the same section offers the next size up. The card, the receipts and stopping the team are then in Google Play. An owner whose team stopped sees the same form, to pay for it again. If Google Play gives no price, the screen says so, and the team can still be paid for on chui.io or in the desktop app. Once a team is paid for, the phone — iPhone or Android — can invite and approve like everywhere else. By the year, Google Play sells a team of at most 10 places, and in about half of all countries, most of Europe among them, at most 5 (in South Korea at most 3, and a team of 50 is not sold there by the month either). A bigger team pays by the month in the app, or by the year on chui.io or in the desktop app; a full yearly team is offered its next size by the month.

Somebody invited holds a paid seat from the moment of the invitation, and taking the invitation back gives the seat back. Adding a seat is charged at once for the rest of the month; a seat given up comes off the next bill. That is a team paid on chui.io or in the desktop app; a team paid through Google Play is paid by its size, so a seat given up stays on the Google Play bill.

Anybody can start a team. An assistant cannot start a team — paying for one is done in Chui on chui.io — but once the team is paid for it can invite and approve, each after naming the person and the new total and hearing yes.

Three things are never refused, whether or not the team is paid for: taking an invitation back, removing a colleague, and leaving. Shutting a door you opened, and the way out of a company, are not things Chui sells — so an owner who typed an invitation to the wrong address can always withdraw it, and nobody is ever held in a company by a bill that stopped.

Starting one and seeing who is in it

create_company() starts a company under the name you give it and makes you its owner; the team section in Settings does the same thing in the app, with a name field. get_company() answers with the name, your own role — owner or member — how many seats the team pays for and what that is a month, and one row per colleague. The owner sees each colleague's name and email address, because the owner is the only account that can act on the list; a colleague sees ids, roles and joining dates and nothing more about a colleague. Neither says anything about anybody's meetings.

Invitations

An invitation is addressed to an email address, any domain — a contractor on a personal address is the ordinary case. Chui emails it to them from team@chui.io — in their own language if they already sign into Chui with that address, in yours otherwise — and a reply comes back to you. If the email does not arrive, their row under Members says so, and «Copy the invitation» gives you the words to send yourself. Somebody who has not answered can be sent the same email again from the «⋯» on their row — «Send the invitation again» — or by typing (resend_invitation()); one address hears at most three letters a day from one company. When that person signs into Chui holding a verified copy of that address, the invitation is waiting on the first screen — who sent it, that the company pays for their seat, and that they get a separate work account beside their own — and joining is their own choice: signing in never joins anybody to anything. It is shown only once the team is paid for. An assistant can say an invitation is waiting (get_company()) and, after naming the company and what its admins would read, join it for them (prepare_join_company(), then join_company()). Apple's "Hide My Email" relay is a different address and will not match.

The link in the invitation joins with any address. The email, and the text «Copy the invitation» gives you, carry a link of its own — chui.io/join/…. Whoever opens it is asked «Emil invited yana@emcho.com to Emcho. Join as yana@gmail.com?», signing in or up first with whatever address they use, and one press joins. The link is the proof the invitation reached them, so it works once, for 14 days from the email, and not after you withdraw the invitation. Under Members you then see who actually came in — the address they joined as and the one you invited — and remove them as usual. An assistant handed the link can join for the user (prepare_join_by_link(), then join_by_link()).

prepare_invite_colleague() names who would be invited, as a member or an admin, what they would read once in, and what the team's bill becomes; invite_colleague() sends it with the token that answer carries. list_invitations() is what has been sent and not yet claimed, with the id revoke_invitation() takes — worth reaching for when an address was typed wrong, which otherwise leaves an invitation into your company sitting open for whoever really owns it.

In the app, invitations are in the team section in Settings — on the phone, on chui.io and on the Mac, and the one thing about companies Chui shows a person who is still working alone: starting a team, inviting a colleague by address, and taking back an invitation nobody has claimed. A colleague invited by an assistant stays a member after the assistant is disconnected, exactly as one invited by tapping does — which is why the assistant asks first.

Who is waiting for a seat

Somebody whose work sign-in vouches for the same employer as your company is ASKED whether they want to join, and you approve them. Until 15 September 2026 they were simply put in, silently, the first time they signed in — and the owner of a company could then open every meeting a member recorded, so somebody who had agreed to nothing had everything they recorded afterwards readable by their boss. Now they are shown that their colleagues already use Chui and a button; nothing at all happens until they press it.

Either way in — an invitation or a seat — ends in the same place: a separate work account. Joining never moves the account somebody already has. It adds a second one inside the company, linked to the same sign-in, and the two sit one under the other in Settings. Their own account, its meetings and their own subscription stay exactly as they were, and the company has no access to them.

While they wait, nothing about them changes. Their Chui carries on exactly as it was — free, or on the plan they pay for — the company is charged nothing, and nothing they have already recorded becomes readable by anybody — a meeting recorded before they joined stays theirs for ever, which is the same rule as "what never moves" below. "Carry on alone" is on that screen too, and it takes the request back: some people should deliberately not be on the company account.

list_seat_requests() is who is waiting — name and address, oldest first — with what the team pays for its seats now and what it would pay after one more yes. You see that number before you say yes, in the app and by asking. drop_seat_request() ends one without letting anybody in, which is both "no" to a colleague and "never mind" to your own request: Chui works out which from whose request it is. Nobody is told by Chui either way — you tell them — and they can ask again.

An assistant can ask for a seat and can approve one. ask_for_seat() sends your name and address to whoever runs that company, so the assistant says so before asking. Approving adds one seat to the bill and gives the person a work account inside the company, so it is two steps: prepare_approve_seat() names them and the new total, in the team's own currency, and approve_seat() takes only its token — and refuses if the bill moved in between, so you never agree to one figure and pay another.

Or you can let them in without being asked. On Members, an admin of a company started with a Google Workspace or Microsoft work sign-in has one switch, “Colleagues join without asking”, off until turned on. With it on, a colleague whose work sign-in vouches for your company's employer is let in the moment they press “Request for a seat” — they still have to ask; nothing happens when they merely sign in — and the team pays for one more seat for each, from that moment, exactly as if you had pressed yes. If the team is not paid for, or the card is refused, their request simply waits for you as usual. A company started with Apple has no such switch: it is tied to no employer, so it could recognise nobody. By typing it is prepare_let_colleagues_in() — which names the domain (a Microsoft company can hold several, so there it names the company) and what one more seat costs — then let_colleagues_in() with its token, and stop_letting_colleagues_in() to turn it off; nobody already let in is removed.

The claim is never the text after the @. Chui asks the sign-in provider what it asserts about your employer — Microsoft's tenant, Google's hosted domain — and only where the provider positively says you are that company's own staff rather than a guest in its directory. Anybody can hold an address at a domain they do not work for. Apple asserts no employer at all, so an account that signs in with Apple is never offered a seat this way; an invitation is the path there.

Sharing, and what never moves

Once there are two of you, every meeting you record is in a workspace — or several — and every new one starts in your own “Private”, which nobody else reads. There is no setting for that: a meeting reaches colleagues only when you add that one meeting to “Whole team” or to other workspaces, while recording or afterwards. Who else can see a meeting says who reads each workspace.

Which company a recording belongs to is decided when it is made, and never moves. A meeting recorded while you were alone stays private even after colleagues arrive; a meeting recorded in one company can never become another's. That part is not a setting and nothing below re-decides it.

The one exception is your own press: «Bring my personal meetings». In the company account, Settings → Team offers to move every finished meeting you recorded on your personal account into your own “Private” in the company, with its files and the people in it. The company's admins do not read them there, exactly like any meeting you record at work; colleagues see one only once you share it. They leave your personal account, and if you leave the company later they stay with the company. Nothing moves until you press it; a meeting still being uploaded waits for the next press, and a meeting recorded inside another company never moves. By typing it is prepare_bring_meetings(), which says how many and where they go, then bring_meetings() with its token.

Who inside that company can see it is the workspaces it is in, and you can change your mind. Adding it to one or taking it out, in the app or with add_meeting_to_workspace() and remove_meeting_from_workspace(), is yours alone. So a meeting you shared stays shared after a colleague leaves, until you say otherwise.

If the card stops working

A payment that fails is never a lost meeting. When a card stops working the vendor keeps retrying for a while, and Chui says on screen how long that window is — in the app under Settings → Team, and in get_company, which answers with the date the team's bill runs until. Nothing changes for anybody before that date.

What happens when the window closes is said before it closes. Unless somebody else is paying for the company by then, it falls apart into personal accounts: colleagues stop seeing the meetings each had shared with the company, and everyone keeps every meeting they ever made. Not one recording is deleted, moved or made private. Who could see what is stamped on each meeting when it was recorded and is never rewritten, so this is one rule changing about who may read — which is why paying again puts the company back exactly as it was, with nothing to restore and nothing to choose.

Paying for the team again is the owner's to do, under Settings → Team on chui.io or the desktop app — an iPhone points there, with a button in the US App Store and in words elsewhere. On Android the owner pays again in the app, through the same Google Play form (since build 238). Nobody else in the company can bring it back, and nobody in it loses anything while it is down.

Leaving, and removing somebody

leave_company() takes you out of your own company; remove_colleague() takes somebody else out, and only the owner may. Both ask first — prepare_leave_company() and prepare_remove_colleague() answer with what would happen and with a short-lived token, and the act takes only that token, so nothing happens until you have been told what it is and said yes.

Either way: no recording is deleted and none changes hands, and nothing already shared is withdrawn. What changes is access from now on — the person out of the company stops being able to open meetings shared with it, including ones they could read yesterday, and the company stops seeing what they share next. Leaving does not take back what you have already shared with your colleagues: they go on seeing those meetings, and stop seeing your new ones. Taking one back to your “Private” is a thing you do on the meeting, or with add_meeting_to_workspace().

Two things are worth knowing before you press it. Getting back in takes a fresh invitation from an admin, since nobody can rejoin a company on their own. And the last admin of a company with people still in it cannot leave: only an admin can invite, revoke or remove, so walking out would leave everybody else stranded. Make somebody else an admin first, or remove the others.

Admins

A company has one or more admins. Every admin runs it — invites, removes, approves people asking for a seat, manages the bill, and makes or unmakes other admins. An admin reads every workspace in the team — the ones they are not in included — and never anybody's “Private”, where every new meeting starts. So an admin reads a colleague's meeting only once that colleague moves it out of “Private”.

make_admin() makes a colleague an admin, and it asks first: prepare_make_admin() answers with who it is and what it means, and a short-lived token, because it widens who can read meetings. remove_admin() makes an admin an ordinary member again, in one step — they stay in the company. The last admin can be neither removed nor demoted.

When somebody is made an admin, everybody in the company sees a notice in Chui naming them. From that moment they read every workspace but the “Private” ones. get_company() lists every admin by name, and any made since you joined that you have not been told about yet.

An admin is one seat on the team's bill like anybody else — making somebody an admin changes nothing about what the company pays.

Company settings

An admin can decide, for everybody in the company at once, four of the settings each person otherwise chooses for themselves. It is in the app under Settings → Members → Company settings, and by typing with get_company_settings() and set_company_setting().

Each of the four can be left to each person (the ordinary state) or locked — and the recording announcement alone can also be given a starting value each person may still change. Locked, everybody sees the value with a lock and «Set by <company>», and only an admin can change it. It only ever applies to the company account: nobody's personal account is touched, and nobody's own choice is erased — lift the lock and each person has back what they had.

Every change is kept — who made it, when, from what and to what — and the latest is shown under the settings.