# Connect the apps and invite friends

> Point the Frame apps at your server, decide who can join (invite-only, open or closed), and create, share and revoke invite links.

Source: https://crow.sg/apps/frame/docs/connect/

Everyone in your group uses the same Frame apps and types your server's address when they sign up. Friends on the same server can see each other's photos; friends on different servers can't, so pick one server per group.

- **iPhone:** [Download on the App Store](https://apps.apple.com/app/id6832514449)
- **Android:** Coming soon to Google Play
- **Server:** [Free and open source · GitHub](https://github.com/Crow-Tech-Pte-Ltd/frame)

## Connect the app

1. Open Frame. When it asks **Where's your Frame?**, type your address, such as `frame.example.com`, without `https://` and without a trailing slash. The app adds the rest.
2. Sign in with the account you made with the [setup link](https://crow.sg/apps/frame/docs/first-run/), or create one with an invite.
3. Invite friends from the app, or from **Invites** in the admin panel.

If the app can't connect, open `https://frame.example.com/api/v1/server` in your phone's browser: you should see JSON with your server's name. If you don't, see [Troubleshooting](https://crow.sg/apps/frame/docs/troubleshooting/#cant-connect). The apps only accept plain `http://` for local network addresses, so anything on the internet needs HTTPS.

## Who can join

New servers are **invite-only**. Change this in the admin panel under **Settings**, or pin it with `FRAME_REGISTRATION` in `frame.conf` (a setting in the file is locked in the panel).

| Mode | Who can create an account | Good for |
|---|---|---|
| `invite` (default) | Only people with an invite: a link from the admin panel, or, when **Members can invite** is on (`FRAME_USER_INVITES`, on by default), a link a member shares from the app | Most servers. You and your friends invite friends. |
| `open` | Anyone who knows your server address | Quick tests. Not recommended for a public server. |
| `closed` | Nobody. Admins create accounts in the panel (**Users → New user**) or with `frame-admin user create` | Family servers with a fixed list of people. |

Signing in to an existing account never needs an invite.

## Server invites

In the admin panel, **Invites → New invite** makes a link that lets someone create an account, by default once and within 7 days. Add a note ("for Mum") to remember who it's for, copy the link or show the QR code, and see who joined with it. A server invite doesn't make anyone a friend; they add friends in the app. From the command line:

```sh
sudo frame-admin invite server --uses 1 --days 7 --note "for Mum"
```

`--days 0` makes an invite that never expires.

## Members' invite links

In the app, open **Friends → Invite** and share the link, which looks like `https://frame.crow.sg/i#s=…&c=…`. When your friend opens it:

- If they have Frame, the link opens it with your server filled in, and after sign-up you're **already friends**.
- If not, the page shows the store buttons and a "copy server address" button.
- Your server address and the code travel in the part after `#`, which browsers never send to `frame.crow.sg`.

These links are valid for 30 days and can be used several times. Anyone holding one can become your friend, so share it privately. Turn off **Members can invite** if only you should decide who joins; members' links then still work for adding friends who are already on the server. An admin can make a member's link on the server with `sudo frame-admin invite create <username>`.

## Revoking invites

- Shared a link with the wrong person? In the app, use **Settings → Reset invite link**. This revokes all your open invites at once and gives you a new link. Revoked or expired links stop working immediately.
- In the admin panel, **Invites** lists every server invite and every member's open link, each with a **Revoke** button.
- Someone you previously **unfriended or blocked** can't use an old or forwarded invite to get back in: for them the link only creates a normal friend request that you must accept. A blocked person gets nothing.
- Friendships already made through an invite aren't undone by revoking it. Unfriend or block the person instead.

Friends on the same server can also find each other by username search, or by contacts if they allow it. There's no friend limit unless you set `FRAME_MAX_FRIENDS`.
