Docs

Studio

Many repositories

One owner, many governed repositories, one page. Studio finds them from the forge and a marker file, shows what you can start across all of them, and makes version drift visible.

Planned
Owner overview
Ready queue
Discovery
Version drift

About many repositories

You open one thing and see every repository you govern, honestly. A repository that failed to load appears as unknown, not as empty.

It rests on four requirements:

  1. The repository is an argument. Which repository is being looked at is passed in, not a process-wide fact. Only one function reads the current directory.
  2. Discovery is asking, not declaring. Studio asks the forge and looks for the marker file vinaya.config.json. Nobody maintains a registry.
  3. One page, one question. Across every repository: what can I start right now?
  4. Version drift is visible. Two repositories on different harness versions run different gate sets, and you can see it.

How it works

  1. 1

    Resolve the owner

    Studio uses --owner <name>, else the owner of the origin remote, else owners in ~/.vinaya/config.json. If none of the three gives an owner, it refuses and names all three.

  2. 2

    List the owner's repositories

    It enumerates them with gh repo list <owner>.

  3. 3

    Probe each one for the marker file

    It asks gh api repos/<owner>/<repo>/contents/vinaya.config.json. A 200 means installed, a 404 means not installed, and anything else is unknown. At most four probes run at once.

  4. 4

    Cache the result

    Results are cached at ~/.vinaya/cache/owners/<owner>.json. Negative results are cached like positive ones. A repository cannot switch discovery off.

The owner overview

The overview at /studio has one row per repository:

ColumnShows
ReadyTasks ready to start
In flightWork under way
Installed versionThe harness version in that repository
Statusok, partial or unknown, with a reason

The overview shows counts only, never a full derivation per repository. With a single repository, it goes straight through to that repository.

Below the overview:

  • The ready queue lists tasks ready to start, across every repository.
  • Each repository lives at /studio/[owner]/[repo]/..., above the single-repository pages.

Honest status

  • 404 and unknown never collapse. A 403, a single sign-on challenge or a network error is unknown. It gets its own row and its own remedy text.
  • What did not run never reads as passed. Beyond ok, partial and unreachable, a repository can be inaccessible, because of sso, auth or network.

Owner scope on the command line

vinaya studio, vinaya doctor and vinaya upgrade take an owner. vinaya doctor reports each repository's installed version. See Setup commands.

What stays per repository

  • Every subprocess is told which repository it addresses. None infers it from the working directory.
  • The trust anchor. It is read from each repository's default branch, never the working tree. See Trust.
  • The gate runner. An owner-scoped gate run has no meaning.

Configuration

KeyWhereWhat it sets
owners~/.vinaya/config.jsonThe owners Studio looks at when no other owner is given

owners is a subscription, not a registration. It grants nothing; your forge token decides what is readable. It lives in the global config and must never carry any key that is stripped from the global config.

What's next