cohostly share
Choose who can open an app, invite people by email, and change their roles from the command line.
cohostly share is how you decide who gets to open an app. Think of it as the guest list at the door. A new app starts with a list of one: you. This command widens or narrows that list.
Two related commands have their own pages. Domains puts the app on your own web address. Ship decides who may release new versions.
Usage
cohostly share --project <name> cohostly share <name> cohostly share visibility <level> --project <name> cohostly share invite <email> [--role viewer|editor|admin] --project <name> cohostly share role <email> <viewer|editor|admin> --project <name> cohostly share remove <email> --project <name>
With no subcommand, share lists. If you give a single bare word and nothing else, it is taken as the project name, so cohostly share hello works.
--project <name>text--role <role>viewer, editor or admininvite. Default viewer. Any other value stops with --role must be one of: viewer, editor, admin.--jsonon or offWho may run it
Every share command, including the plain list, needs admin on the project. An editor cannot even list the people an app is shared with.
Good to know A sign-in made with
cohostly loginis an account-wide key that acts as admin on every project in its account. So for your own account's projects, these commands pass. See the command line overview for what that means.
See who can open it
cohostly share --project hello
It prints one line describing the current visibility, then the people the app is shared with by name:
Only people you invite, plus the account owners and admins, can open this app. - ana@example.com viewer - raj@example.com editor (pending)
(pending) means the person was invited but has not confirmed their address yet. If nobody is on the list you see Not shared with anyone by name.
Change who can open it
cohostly share visibility link --project hello
On success it prints the project name and a plain sentence for the new level, such as hello: Anyone who has the link can open this app. The link has a random part that cannot be guessed.
There are five levels, from narrowest to widest.
privateaccountsigned_inlink.linkpublicA level that is not one of these five stops with Choose one of: public, link, signed_in, account, private.
A new project starts private. A deploy never changes who can open an app. A visibility line in your settings file is ignored with a warning, and the file only accepts link, private or public there. Use this command instead.
Widening can wait for approval
Making an app wider is a bigger decision than making it narrower, so the platform treats them differently.
- Narrowing takes effect at once. Visitors see the change within about 30 seconds.
- Widening to
signed_in,linkorpublicis held as a request when the person acting is not an account owner or admin, or when an assistant made the change. Nothing changes until an owner or admin approves.
Careful When a change is only held for approval, the command still prints a success-looking line, and that line shows the old visibility. For example you ask for
publicand seehello: Only people you invite, plus the account owners and admins, can open this app.Do not read that as done. Check withcohostly approvals waiting(the requests you made), or run the command again with--jsonand read themessage. See approvals.
An outsider with no access sees a plain "not found", not "forbidden", so an app does not reveal that it exists.
Invite someone
cohostly share invite ana@example.com --role editor --project hello
Output is one of two lines:
ana@example.com is invited as editor.The person does not have a confirmed account yet. They get an invitation email that stays valid for 14 days and becomes active when they confirm their address.ana@example.com is on the list as editor.They already had a confirmed account, so they have access at once.
Inviting the same address again changes the role. Pick the lowest role that does the job. That is why viewer is the default.
Sharing and roles lists exactly what each role can do. In short, a viewer opens the app, an editor can also deploy and manage secrets and schedules, and an admin can also change sharing.
Failures:
That does not look like an email address. Use a full address such as ana@example.com.<email> already has full access to this project through the account, so there is nothing to add.The command errors after the invite email fails to sendChange or remove a role
cohostly share role ana@example.com viewer --project hello cohostly share remove ana@example.com --project hello
roleprintsana@example.com is now viewer.removeprintsana@example.com was removed.It also ends that person's connections from AI assistants to this project.- Neither asks you to confirm first. They act at once.
- An address that is not on the list stops with
<email> is not on <project>'s share list.Runcohostly share --project <name>to see who is.
Exit codes
0 on success. 1 for any failure, including a refused role or a missing project. A held widening still exits 0, which is why you must check it.
Examples
Share a draft with one teammate who should only look:
cohostly share invite ana@example.com --project hello
Open an app to anyone with the address, then read the answer in a script:
cohostly share visibility link --project hello --json
Close it again after a demo:
cohostly share visibility private --project hello