Skip to content

Sync a workspace through GitHub

To sync through GitHub, open the workspace on your Mac and choose Workspace ▸ Put Workspace on GitHub…. nokko makes a private repository and uploads your files, and every device then keeps a full copy.

For Mac, iPhone · Last checked

Put a workspace on GitHub

On the Mac

You need a GitHub account. A free one is enough. Start on a Mac: the iPhone can join a workspace on GitHub, but cannot put one there.

  1. Open the workspace and choose Workspace ▸ Put Workspace on GitHub…. You can also use Share… beside the workspace in Settings ▸ General.
  2. Click Sign in with GitHub. nokko shows a short code. If this device is already signed in, the sheet goes straight to the repository list.
  3. Click Open github.com/login/device, type the code on GitHub's page and approve the request. Use Copy Code if you would rather paste it.
  4. Come back to nokko. The sheet carries on by itself once GitHub answers.
  5. Under New repository, keep the suggested name or type your own, then click Create Private Repository. To use an empty repository you already have, pick it from the list instead.
  6. Read the summary and click Upload Workspace. The sheet counts the files as they go.

The sign-in asks GitHub for repository access, because nokko must create and write to a repository. You type your password only on github.com, and the sign-in stays in this Mac's Keychain.

Your folder stays exactly where it is. From now on nokko syncs a couple of seconds after each change, every 20 seconds, and when you press the sync button. A large first upload slows down on purpose after 50 files, to stay inside GitHub's limits.

What lands in the repository

The repository holds the same folders and files as your workspace, so you can read it on github.com. nokko creates it private: only people you invite can see it. Your .nokko folder stays on the device.

Each changed file is one commit, made by the GitHub account signed in on that device. The message gives the action, the path and the device's name.

Commit messages from nokko
Add Client Work/Brand Refresh.md (MacBook Pro)
Update Client Work/Retainer.md (Studio iPhone)
Delete Inbox.md (MacBook Pro)

If you edit a file on github.com, nokko downloads it like any other change. The Activity feed shows those commits with their own first line.

Use a repository that already has code

You can keep a workspace in your project's own repository. Pick the repository from the list, and the summary offers a Branch field filled in with pm.

nokko starts that branch with no shared history, so nothing on your default branch is touched. Your code's history never sees a task. Teammates join the same branch.

A repository nokko creates, or any empty one, has nothing to protect, so the workspace sits on its default branch instead.

A branch that already holds files is refused, because uploading never merges into an occupied branch. Name a new branch, or pick an empty one.

Do not use a public repository

On the Mac, picking a public repository stops at a warning. Go Back returns you to the list, and Use the Public Repository Anyway carries on. On iPhone the list only marks it Public, with no warning, so check before you tap.

Join from another Mac

On the Mac

  1. Choose Workspace ▸ New Workspace…, select On GitHub and click Sign in with GitHub….
  2. Sign in with the code, as above. A Mac that already holds a working sign-in skips this.
  3. Pick the repository. If it has more than one branch, check Branch: nokko picks pm when it exists.
  4. Give the workspace a Name.
  5. Under Local copy, click Choose… and pick a folder. nokko makes a folder of the workspace's name inside it.
  6. Click Download 41 Files. The button shows the real count.
The Join a GitHub Workspace sheet showing a short sign-in code, with buttons to open github.com/login/device and to copy the code.
Signing in: type this code on GitHub's page and the sheet carries on by itself. Your code will differ.
The Join a GitHub Workspace sheet after signing in: an invitation with an Accept button, a filter box and a list of private repositories.
Signed in: pending invitations sit at the top, with every repository this account can reach below.

Choose a location if you also open these files in Obsidian. The default is inside nokko's own container folder, which Finder and Obsidian do not show.

A joined workspace must start in an empty folder. If the name is taken, nokko says the folder already holds files. Give it another name, or choose another location.

Join on iPhone

On iPhone

  1. Open Settings and tap Join a Workspace…, then GitHub.
  2. Tap Sign In with GitHub. nokko shows a code.
  3. Tap Open GitHub, which also copies the code. Paste it on GitHub's page and approve.
  4. Return to nokko and tap the repository.
  5. The first time, type a name under Name This iPhone. It appears beside this phone's changes.
  6. Check the workspace name and tap the Join button.
The GitHub screen on iPhone showing a sign-in code with Copy Code and Open GitHub buttons, waiting for GitHub.
The code to type at GitHub. Open GitHub also copies it.

The iPhone picks the branch for you: pm when it exists, otherwise the default branch. It cannot join a branch with any other name, so keep the name pm if you want the iPhone on a repository that holds code. Each device signs in by itself, so nothing secret is copied from the Mac.

Invite a teammate

On the Mac

  1. On a Mac that administers the repository, choose Workspace ▸ Edit GitHub Connection….
  2. Under People, type their login in GitHub username and click Invite.
  3. On their Mac, they choose Workspace ▸ New Workspace…, select On GitHub and sign in.
  4. Your invitation appears at the top of the list. They click Accept, and the repository joins the list.
  5. They pick it and download, as in Join from another Mac.

The invite field appears only for someone who administers the repository. A teammate starting on iPhone has no Accept button, so they accept the invitation on github.com first.

To show a teammate's name instead of their GitHub login, add it to the GitHub field in People & Team.

Restore a deleted file

A delete syncs like any other change, but every version stays in the repository's history. The file also goes to the Trash on each Mac that had it, so look there first: putting it back makes it a new file, and it syncs again.

If the Trash is empty, use the history on github.com:

  1. Open the repository and switch to the workspace's branch.
  2. Open the commit history and find the commit named Delete with your file's path.
  3. Open the commit before it, and copy the file's text.
  4. Save that text in your workspace folder, at the same path and name.

nokko uploads it on the next pass. On a Mac, Restore a File from a Snapshot… also brings back the Markdown from the last 14 daily copies.

Sign out, or stop syncing

  • Sign out on the Mac: choose Workspace ▸ Edit GitHub Connection… and click Sign Out. The sign-in leaves the Keychain and sync pauses until you sign in again. Sign In Again is beside it.
  • Sign out on iPhone: open Settings and tap Sign Out of GitHub under Accounts. The files stay, and the workspace stops syncing until you sign in.
  • Stop syncing one workspace on the Mac: open that workspace first. Then in Settings ▸ General, open the menu beside it and choose Forget GitHub Connection…. The folder stays as a normal workspace and the repository is not touched. Your sign-in is kept.
  • Stop syncing on iPhone: open Settings and tap Stop Sharing on This iPhone. The files stay on the phone.

If an organisation's repository is missing

On the Mac

An organisation's repositories appear only once the organisation has granted nokko access. Until then the list can look empty or incomplete.

  1. In the repository list, click Missing an organization or repository? Review Nokko's access on GitHub….
  2. On GitHub's page, find the organisation. Grant access, or request it if you are not an owner.
  3. If you requested it, ask an owner of the organisation to approve it.
  4. Close the sheet in nokko and open it again, so the list reloads.

If the list is empty the link is not there. Open github.com/settings/applications, choose nokko under Authorized OAuth Apps, and grant access from that page.

The link is on the Mac only. On iPhone, do this once on a Mac or on github.com, then open the GitHub join screen again.

If something goes wrong

What you seeWhat to do
The code expired before it was typedClick Start Over for a fresh code, and type it sooner.
GitHub declined the nameThat repository name may already exist on your account. Click Start Over and pick another, or choose the existing one from the list.
GitHub sign-in expiredOn the Mac, click the footer and use Sign In Again. On iPhone, sign in under Settings ▸ Join a Workspace… ▸ GitHub, then close nokko from the app switcher and open it again.
The repository can't be foundIt was renamed or removed, or your access changed. Check on github.com. You also see this after signing out, so sign in again. Sync waits until this is fixed.
This branch only accepts pull requestsBranch protection is on. Give the workspace a branch of its own.
GitHub is rate-limitingNothing to do. Syncing retries by itself.

Questions

Does nokko touch my code when the workspace shares a repository with it?
No. nokko keeps the workspace on a branch of its own, called pm by default, created empty with no shared history. Your default branch and its history are not touched. One thing to change: if your CI runs on every push, tell it to ignore that branch, because every synced change is a push.
Does each nokko teammate need a paid GitHub plan?
No. nokko's help says a free GitHub account is all a teammate needs. Each person signs in on each device with a short code typed on github.com. Check GitHub's own plans if your organisation has rules about private repositories or outside collaborators, because those limits are GitHub's and not nokko's.

Next: Your own server (SFTP)