Skip to content
109 linesCodeBlameRaw
1---
2title: The phone app
3description: g1t on Android and iOS, built with Expo. Chat, Code and Customize on your phone, signed in with g1t's own OAuth. Not in the stores yet; this is how it works and how to build it.
4---
5
6The phone app is g1t on Android and iOS, with its own screens for what
7you do away from a desk: answering in Chat, reviewing what agents made in
8Code, and seeing the skills, connectors and plugins your workspace can
9use in Customize. Everything else opens on the site, in your phone's
10browser.
11
12It is not in Google Play or the App Store yet. Android comes first. Until
13then, it is built from `apps/mobile` in
14[g1t's repository](https://g1t.sh/flagon-io/g1t), as
15[For operators](#for-operators-building-and-releasing) says.
16
17| Tab | What is on it |
18| --- | --- |
19| **Chat** | The channels you are in and your direct messages, with unread counts. A conversation shows its messages and agents' cards, live while it is open, and you write back from the box at the bottom. |
20| **Code** | The workspace's repositories, each with its pull requests and issues, open or closed. A pull request shows its description, checks, conversation and changed files, and you can approve it or ask for changes. An issue shows the pull requests made for it, and you can comment. |
21| **Customize** | **Skills** (what agents know how to do), **Connectors** (the tools they can reach, the Marketplace's integrations today) and **Plugins** (what adds pages and tools, the Marketplace's extensions today). Each opens where it is set up on the site. |
22| **You** | Your workspaces, to switch between them, how you signed in, and **Sign out**. |
23
24## Signing in
25
26**Sign in with g1t** opens g1t.sh in your phone's browser, where you sign
27in as usual (with your password, GitHub, two-factor) and approve the app.
28The browser sends you back to the app, signed in. The app never sees your
29password. This is [OAuth](/guides/authentication/#signing-in-with-oauth):
30the app is listed as **g1t for Android** or **g1t for iOS** in
31[Settings → Connected applications](https://g1t.sh/settings/applications),
32where **Change access** narrows what it can do and **Sign out** ends it at
33once.
34
35The approval page lists what the app asks for: reading your account,
36workspaces, repositories, checks and workflows, reading and writing
37issues, pull requests and notifications, recalling memory, reading
38artifacts, and putting agents to work. Untick what you would rather it
39could not do.
40
41**Use an access token** signs in with a
42[personal access token](/guides/authentication/#access-tokens) you paste
43in instead. The token stays on your phone, in its keystore.
44
45### Chat and the app's sign-in
46
47Chat is served by the site, and the site takes only a browser's session
48or a token with **Use the website as you** turned on. The app's OAuth
49sign-in is neither yet, so with it Code and Customize work and Chat says
50it needs another sign-in. Until the app's sign-in opens Chat, sign in
51with **Use an access token** and a token with
52[Use the website as you](/guides/authentication/#use-a-token-on-the-website)
53turned on. Keep that token as safe as your password: on the website it can
54do anything you can.
55
56## Links
57
58A `g1t://` link opens the app, as it opens [the desktop app](/guides/desktop/#links):
59`g1t://acme/-/chat/dm/chn_1` is that conversation. The app shows the
60pages it has screens for:
61
62| Link | Opens |
63| --- | --- |
64| `g1t://<workspace>/-/chat`, `…/-/chat/<channel>`, `…/-/chat/dm/<id>` | Chat, or the conversation, in that workspace |
65| `g1t://<owner>/<repo>` | The repository |
66| `g1t://<owner>/<repo>/pull/<number>`, `…/issues/<number>` | The pull request or issue |
67| `g1t://<workspace>/-/marketplace…`, `…/-/agents/skills` | Customize |
68
69Any other page opens on the site, in the browser.
70
71## Your own g1t
72
73If you [run g1t yourself](/guides/self-hosting/), choose **Server** on the
74sign-in screen and enter your site's address, such as
75`https://g1t.example.com`. The app takes the API to be `api.` in front of
76it (`https://api.g1t.example.com`); if yours is elsewhere, enter it under
77**API**. **Use g1t.sh** goes back.
78
79## What's not there yet
80
81- **Store releases.** Google Play first, then the App Store.
82- **Notifications on your phone.** g1t sends browser and desktop
83 notifications today; push to phones needs g1t to send through Firebase
84 and Apple, which is coming.
85- **Chat with the app's own sign-in**, as [above](#chat-and-the-apps-sign-in).
86- **Home, Notifications, Agents and Artifacts** as tabs of their own.
87 Their pages open on the site meanwhile.
88- **Formatting.** Messages, descriptions and comments show their Markdown
89 as written.
90- **Threads.** A message's replies are counted, and read on the site.
91- **https links.** `g1t.sh` addresses open the site in the browser, not
92 the app, until g1t.sh publishes the files Android and iOS check first.
93
94## For operators: building and releasing
95
96The app lives in `apps/mobile`: [Expo](https://expo.dev) with Expo
97Router, in TypeScript, sharing types with the site through
98`@g1t/contracts`. It builds with EAS Build. `apps/mobile/README.md` has
99the commands for running it on a phone and the first-time setup.
100
101| Build | Command | What it makes |
102| --- | --- | --- |
103| Development | `eas build --profile development --platform android` | An APK of `g1t (dev)` (`sh.g1t.app.dev`) that loads its code from your computer. |
104| Preview | `npm run build:android:apk -w @g1t/mobile` | An APK of `g1t (beta)` (`sh.g1t.app.preview`) to install on testers' phones. |
105| Production | `npm run build:android -w @g1t/mobile` | An Android App Bundle of `g1t` (`sh.g1t.app`) for Google Play. |
106
107The three install side by side. `eas submit --platform android` sends
108the latest production build to Google Play's internal testing track as a
109draft.