Beta JJSourcery is in early access. Core import flows work; some features are still stabilizing.
Now accepting early users Private workspace

Your repositories.
Powered by jj.

JJSourcery is a private workspace for teams that want a queryable copy of their GitHub repositories. Import history, branches, and metadata into storage you control, then browse and search with a jj-powered UI.

Install the CLI in one line

macOS ยท Linux ยท Windows (WSL)

curl -fsSL https://jjsourcery.com/install.sh | sh
Free during beta No credit card Self-hosted auth Your own storage
jjsourcery import --from github
$ jjsourcery auth login --provider pocket-id
โœ“ OIDC session: idp.your-domain.com
$ jjsourcery import \
--from github \
--to r2://your-bucket \
--repo awdemos/jjsourcery \
--preserve-everything
โœ“ Connected to GitHub API
โœ“ Cloning 12,847 commits, 38 branches, 142 tags
โœ“ Indexing into jj change graph
โœ“ Encrypting tarball and pushing to your object bucket
โœ“ Indexing symbols for semantic search
Import complete. Ready to browse.

Built for the open stack

jj Leptos Fly.io Pocket ID
Get the CLI

One command to get started

The JJSourcery CLI is a single static binary. Paste the installer into your terminal, authenticate with Pocket ID, and start importing.

~
$ curl -fsSL https://jjsourcery.com/install.sh | sh
โœ“ jjsourcery installed to ~/.local/bin
$ jjsourcery login
Open https://jjsourcery.com/cli/login?device_code=XXXX-XXXX
$ jjsourcery import --from github --repo awdemos/jjsourcery
โœ“ Import queued
Read the CLI manual
Capabilities

A workspace for your repositories

JJSourcery turns your GitHub repositories into a queryable, self-hosted workspace.

๐Ÿ›ฐ๏ธ

One-click, no-loss import

Import public and private repositories with branches, tags, pull requests, releases, and every commit preserved. Your history stays intact in storage you control.

$ jjsourcery repos list --from github
awdemos/jjsourcery โ†’ ready
awdemos/jj-cli โ†’ ready
awdemos/infra โ†’ ready
$ jjsourcery import --all --background
3 repositories queued. Track progress in /app/.
๐Ÿ”

Private by design

Code lives in your object bucket. Metadata lives in your metadata database. You hold the keys, the backups, and the exit route.

โšก

jj-powered history

Browse files, commits, and diffs through a next-generation VCS backend that treats history as a queryable graph.

๐Ÿค–

Queryable workspace

Semantic search, machine-readable APIs, and deterministic jj operations make history easy to explore and automate.

๐ŸŒ

Edge-deployed

Runs on an edge worker and Fly.io for sub-50ms access anywhere on Earth, with no cold starts on the dashboard.

๐Ÿ”‘

Own your identity

Secure OIDC sign-in with Pocket ID. Bring your own provider, enforce your own policies, and never outsource user trust.

Docs & FAQ

Import with confidence

The bottom-line answers technical teams need when importing GitHub repositories into a private, jj-powered workspace.

๐Ÿš€

Quick start

Import your first repository in under five minutes from the web UI or CLI. Docs are coming soon.

Coming soon
โŒ˜

CLI reference

Every jjsourcery command, flag, and exit code. Explore the source for now.

View CLI source
๐Ÿค–

Workspace API

Structured, machine-readable endpoints for tools that need to query and act on code.

Browse endpoints
๐Ÿฐ

Self-hosting

Deploy the edge worker, backend, object store, metadata database, and Pocket ID on your own infrastructure.

Ask about self-hosting
Is JJSourcery a GitHub replacement?
No. It is an import and workspace layer. You mirror your repos into storage and metadata stores you control, then browse, search, and build on them. Social coding features like issues and PRs are intentionally out of scope; we focus on the code plane.
What happens to my git history?
Everything comes with you: commits, branches, tags, release metadata, and pull-request history. The import is read-only on the GitHub side, so the original stays untouched while your workspace gets a complete, queryable copy.
Why use jj as the VCS backend?
jj treats version control as a database of changes, not a chain of immutable snapshots. That means rebase-free workflows, first-class conflicts, and operations fast enough for automated tools to run at scale. Git compatibility is built in, so you can still push to any git remote.
Where does my code actually live?
In your object-storage bucket and metadata database by default. The hosted service only routes requests and never holds your repository contents. Prefer local storage? Self-host the backend and point it at a filesystem path.
Can I self-host the whole stack?
Yes. The edge worker, Fly.io backend, object store, metadata database, and Pocket ID auth provider can all run under accounts and infrastructure you control. We publish Terraform/Pulumi-style deployment configs and a reference self-hosting guide.
Do I have to move my whole team at once?
No. Import one repo, try the browser and API, then expand when you are ready. Because jj is git-compatible, you can keep pushing to GitHub as a mirror while you evaluate the new workflow.
What about CI/CD?
Keep your existing GitHub Actions during the transition. In 2026/2027 we are shipping webhook sync and native event hooks so CI can pull from your JJSourcery plane directly, without forcing a rip-and-replace.
How do agents interact with repositories?
Through a typed, auditable API and a semantic code index. Agents can query history, read files, propose changes, and run jj operations with deterministic outcomes instead of scraping GitHub pages or guessing at repository state.
jjsourcery login && jjsourcery import
$ jjsourcery login
โœ“ Device authorized via Pocket ID
$ jjsourcery import --from github --to r2://my-bucket --repos org/critical-service
โœ“ Fetched 4,182 commits
โœ“ Mirrored 23 branches, 14 tags
โœ“ Indexed for semantic search
Your repository is now mirrored.

Still have questions?

The codebase is open, the roadmap is public, and the maintainers are actively shipping. Open a GitHub issue, join the discussion, or read the architecture spec.

Pricing

Pay for sovereignty, not seat licenses

No per-user tax. No data ransom. Start free during beta, then scale by what you store and run, not by how many teammates you invite.

Starter

Free

For solo hackers and open-source maintainers.

$0 /mo
  • Up to 5 imported repos
  • jj-powered history browser
  • Pocket ID sign-in
  • Community Discord support
Start for free
Recommended

Pro

Beta price

For indie teams who want their own workspace.

$5 /workspace /mo
  • Unlimited imported repos
  • Semantic code search
  • Webhook sync with GitHub
  • 1 TB object storage included
  • Priority support
Import now

Sovereign

Self-hosted

For orgs that can't let code leave their perimeter.

Custom
  • Everything in Pro
  • Run backend on your own Fly.io / metal
  • Bring your own S3-compatible store
  • Custom OIDC / SCIM
  • Dedicated engineering support
Talk to us

Why teams choose JJSourcery

$0
Per-user fees
Own
Your object bucket
Private
Your storage
jj
Powered by jj
The JJSourcery Dispatch

Workspace tips, jj guides, and automation ideas. No spam.

Once a month, we share what we're learning about operating self-hosted code infrastructure, working with jj, and designing tools that can reason about repositories. Unsubscribe anytime.

We respect your inbox. No tracking pixels.