Skip to content

garami-vcs/garami

Repository files navigation

Garami

Garami is an experimental ecosystem for native Jujutsu repository hosting and collaboration.

Garami, Ashi, and Ukemi

Garami explores bringing native Jujutsu repository hosting to the Tangled ecosystem.

Tangled calls a source-control server a knot. Today, a knot is fundamentally Git-oriented. Garami explores what a knot could look like if Jujutsu were the native version-control model rather than a client layered on top of Git.

The project uses three related names:

  • Garami is the broader ecosystem, shared model, and supporting infrastructure.
  • Ashi is the jj-native knot server.
  • Ukemi is the client-side jj backend that connects a local repository to Ashi.

Garami and Ashi refer to ashi-garami, a family of grappling entanglements. The reference is deliberately playful: Jujutsu is commonly abbreviated as jj, grappling involves tying people into knots, and Tangled uses knots as its repository-hosting primitive. Ukemi is the practice of receiving a technique safely and adapting to it, matching the backend's role in receiving, translating, and reconciling remote repository state for jj.

Architecture direction

The intended repository path connects Ukemi directly to Ashi:

local Jujutsu repository <-> Ukemi <-> Ashi

This jj-native protocol will replace the Git transport conversation that would normally connect Git to a knot. The repository path does not go through Tangled or ATProto, and ATProto is not the Ashi repository transport protocol. Tangled remains the ecosystem inspiration and the hosting and product-level integration target.

The protocol should treat Jujutsu concepts as first-class data:

  • stable change identities rather than commit hashes alone;
  • operation history and repository evolution;
  • mutable commits and rewritten history;
  • conflicts represented as committed state;
  • bookmarks, workspaces, and jj-native collaboration workflows.

Ashi and Ukemi are still exploratory. There is no stable protocol, storage model, API, or compatibility guarantee. Their immediate purpose is to identify what a jj-native knot and client backend need to store, exchange, and expose. Garami does not yet implement networking, persistence, repository transport, or direct integration with jj.

Current status

The workspace contains three publishable Rust libraries at version 0.0.1:

  • garami provides validated repository, change, and operation identifiers plus repository references.
  • ashi provides repository discovery and description types, a service trait, and an in-memory implementation for tests and domain experiments.
  • ukemi provides client-side state for direct communication with Ashi without defining the protocol prematurely.

Workspace layout

.
└── crates/
    ├── ashi/            # ashi server-facing abstractions
    ├── garami/          # garami shared domain model
    └── ukemi/           # ukemi client-side backend abstractions

Development

The workspace uses stable Rust and requires Rust 1.85 or newer.

cargo fmt --all --check
cargo check --workspace --all-targets
cargo test --workspace --all-targets
cargo clippy --workspace --all-targets -- -D warnings

See CONTRIBUTING.md for the complete local validation and packaging commands.

License

Garami is licensed under either of

at your option.

About

Experimental native hosting and collaboration infrastructure for Jujutsu repositories.

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages