A terminal client for Tangled.
Find a file
2026-07-08 15:11:36 -04:00
atproto atproto: add getrecord and listrecords methods, move serviceauth to struct, and 2026-07-08 11:38:26 -04:00
cmd/tg add create command with --clone and --push options 2026-07-07 20:14:59 -04:00
flake init 2026-07-07 09:52:58 -04:00
internal internal/cli: add json output support via generic output function 2026-07-08 15:11:36 -04:00
knot add create command with --clone and --push options 2026-07-07 20:14:59 -04:00
nix atproto: add getrecord and listrecords methods, move serviceauth to struct, and 2026-07-08 11:38:26 -04:00
tangled tangled: migrate from xrpc to atclient API 2026-07-07 20:35:25 -04:00
.envrc init 2026-07-07 09:52:58 -04:00
.gitignore add create command with --clone and --push options 2026-07-07 20:14:59 -04:00
flake.lock init 2026-07-07 09:52:58 -04:00
flake.nix init 2026-07-07 09:52:58 -04:00
go.mod atproto: add getrecord and listrecords methods, move serviceauth to struct, and 2026-07-08 11:38:26 -04:00
go.sum atproto: add getrecord and listrecords methods, move serviceauth to struct, and 2026-07-08 11:38:26 -04:00
LICENSE.md init 2026-07-07 09:52:58 -04:00
README.md readme: fix license link 2026-07-08 10:24:21 -04:00
result tangled: migrate from xrpc to atclient API 2026-07-07 20:35:25 -04:00

tg

tg is a command-line client for Tangled, the git forge built on atproto. It is an analogue to the GitHub CLI (gh), (for now) built against the read-only Bobbin XRPC API.

Installation

With Nix

nix profile add github:alyraffauf/tg

From source

go install github.com/alyraffauf/tg/cmd/tg@latest

Usage

tg auto-detects the repository from the origin remote when run inside a cloned Tangled repo. For now, only ssh origins are supported. You can also pass a fully-qualified handle/repo argument.

Repositories

# List repositories for a user
tg repo list microcosm.blue

# Create a repository (requires `tg auth login`)
tg repo create my-tool --description "A small tool"

# Create and clone it into the current directory
tg repo create my-tool --clone

# Create and push an existing local repo (at the given path) to the new remote
tg repo create my-tool --push=.

# Clone a repository
tg repo clone microcosm.blue/microcosm-rs

# Clone into a custom directory
tg repo clone microcosm.blue/microcosm-rs my-fork

Issues

# List issues for the current repository
tg issue list

# List issues for an explicit repository
tg issue list microcosm.blue/microcosm-rs

Pull Requests

# List pull requests
tg pr list

# Check out a pull request as detached HEAD
tg pr checkout 3mporttfqez22

Architecture

  • cmd/tg/ — CLI entry point
  • internal/cli/ — Cobra command tree (repo, issue, pr)
  • internal/gitutil/ — Git operations (clone, fetch, patch apply)
  • tangled/ — Typed client for the Bobbin API (api.tangled.org)
  • atproto/ — Identity resolution (handle ↔ DID, PDS discovery)

Dependencies

License

See LICENSE.