tangled on ur phone

Files
README.md

Untangle #

A native iOS client for Tangled, the git forge built on atproto. It's written in SwiftUI and styled after the GitHub iOS app.

  • Sign in with any atproto account. Untangle uses atproto OAuth (PAR + PKCE + DPoP) as a public native client.
  • Browse repositories, the code tree, files with syntax highlighting, branches, commits and diffs.
  • Issues and pull requests: lists, detail, comments, opening issues, closing and reopening, and a pull request's commits and changed files.
  • Notifications: Tangled has no notifications API, so Untangle builds them from activity on your repositories (new issues, pull requests, stars and followers).
  • Explore: trending repositories and people, and search.

Reads go to Tangled's Bobbin AppView at api.tangled.org. Writes (stars, follows, issues, comments) are atproto records created on your PDS.

Building #

You need macOS with Xcode 26 and XcodeGen.

brew install xcodegen
xcodegen        # generates Untangle.xcodeproj from project.yml
open Untangle.xcodeproj

Set your development team under Signing & Capabilities, then run.

Server #

/server is a small, dependency-free Node service that hosts the OAuth client metadata at https://untangle.mozzius.dev/oauth-client-metadata.json. Sign-in needs it to be live. See server/README.md for deploying it on Railway.

The client ID, the redirect scheme (dev.mozzius.untangle:/oauth/callback) and the bundle ID are tied to that domain. If you change the domain, update OAuthConfig in Untangle/Auth/OAuth.swift as well.