Catalogue

Your AI catalogue, from what you already run

AI systems are found on your platforms, in your code and at the gateway, then claimed by an owner who adds the purpose and the risk class. The browser extension is not yet available.

ConnectGitHub org · GitLab groupplatforms · gateway · browser (roadmap)Readevery repository, nightlyfixed patterns, no modelCandidatesone per deployable unit,key, IAM role, endpoint, roleClaimpurpose · risk classtyped by the ownerAinto a new or an existing systemAttestthe owner, every 90 daysa ledger record↺ read again every night, only what changed;Scan now runs at once;unclaimed for 14 days: flagged to admins
From what you run to an AI system with an owner · nothing is typed until the claim
  • GitHub organisation
    every repository, including archived ones (flagged), none skipped · one AI system per deployable unit
  • GitLab group
    every project of the group and its subgroups, by group token · GitLab.com and self-managed
  • Self-hosted hosts
    GitHub Enterprise Server and GitLab self-managed: a collector you run reads them and sends the findings
  • OpenAI
    each API key, in its project
  • Anthropic
    each workspace or service-account key
  • Azure OpenAI
    each model deployment
  • Amazon Bedrock
    each IAM role seen calling Bedrock in CloudTrail
  • Databricks
    each serving endpoint
  • Snowflake
    each role calling Cortex
  • A repository you scan
    one per application, on the Policy tab: the AI SDKs and models it imports
  • The gateway
    each application registered with an application key
  • roadmap
    The browser extension
    AI services people use, by team (extension not yet published)
  • roadmap
    Azure DevOps · Bitbucket
    after GitHub and GitLab
  • roadmap
    One system across platforms
    a repository matched to its keys, roles and images
Sources of AI systems · tick: fills the AI catalogue · roadmap: not built

Each repository is read in memory as one archive of its head commit and then discarded. The next scan reads again only the repositories whose head commit changed. With the collector, the archive is read on your own network and only the findings below are sent. The per-application scan on Policy → From your code is separate. It keeps the trimmed line on which a finding sits, and the AI catalogue takes only the SDK and model names from it.

  • Read, by fixed patterns
    • Dependency manifests naming an AI SDK or agent framework; imports in code
    • Environment variable names: OPENAI_API_KEY, ANTHROPIC_API_KEY, AZURE_OPENAI_*, BEDROCK_*
    • Model id strings; prompt files and system prompts; .mcp.json and tool schemas; AGENTS.md, CLAUDE.md, .cursorrules
    • Terraform and CloudFormation for Bedrock agents, Azure OpenAI deployments and Vertex endpoints; CODEOWNERS
    • One archive per repository whose default branch changed, read in memory · no model reads your code
  • Kept by Saible
    • Repository names, the head commit, each unit's folder, and the file and line a signal sits on with the matched name only
    • SDK, framework and model names; environment variable names; counts of prompts, tools and MCP servers
    • A CODEOWNERS team, shown in the claim drawer as a suggestion · a person named there is only flagged
    • A confidence of high, medium or low, computed from the kinds of signal found
  • Never
    • Source code or prompt text stored or sent to a model (prompts are only counted) · the text of a line beyond the matched name
    • An environment variable's value, or your code host's token in a finding
    • A person's name or e-mail on a candidate: entries describe software, never people
    • A repository skipped because it looks inactive · a connection Saible opens into your network
The organisation-wide scan · data read, data kept, and what Saible never does
  • Metadata: readthe list of repositories, their default branch and whether each is archived
  • Contents: readone archive of the head commit per repository whose branch changed, read in memory
  • All repositoriesthe installation covers the whole organisation · nothing is selected by hand and nothing is skipped
  • App ID · installation ID · private keyentered once at Connect · the key goes to the organisation's own secret store, and a new installation token is issued for each scan
  • Your own GitHub App on the organisation, or Saible's when your Saible region offers the install link. Push and repository events are not read yet. A change is picked up by the nightly scan or by Scan now. Webhooks are on the roadmap.
Alternative: a fine-grained organisation tokenContents: read and Metadata: read on all repositories. It belongs to the person who created it and stops working with their account, so the code hosts card shows it as Person-bound. A GitLab group token needs read_api and read_repository.No write permission is asked for. Nothing is pushed to a repository. Test lists the repository count and nothing else.
The GitHub App on your organisation · permissions requested and the reasons
  • FirstCollector run by your team
    • A distroless image: non-root, no shell, no inbound port, outbound only to your code host and to Saible
    • Connect the host in Saible as “Our collector reads it”, then issue a collector key (sdc.<org>.<secret>). It is shown once, and Saible keeps only its SHA-256 hash
    • Runs as a cron job or a Kubernetes CronJob · asks Saible which commits it already holds, reads only what changed and sends the findings
    • The same scanner as Saible's own, so a push finds the same AI systems as a pull · up to 200 repositories per push
    • Every value sent is checked on arrival for its format (a name, a path, a line number or a team slug), and anything else is refused
    Saible never opens a connection into your network and holds no credential for the host. Revoke the key from the console, or disconnect the host, which also revokes it. The image is built from source and provided during onboarding with its installation guide. A signed, published image is on the roadmap.
  • SecondPrivate connectivity, without a collectorroadmap
    • AWS PrivateLink: your endpoint service, with Saible's interface endpoint in your Saible region
    • Next, an allow-listed fixed egress address, as the gateway's requests to the control plane use today
    • Then VPC peering, for Dedicated Saible only
    Designed and documented only. The Terraform for it is on the roadmap.
Self-hosted code hosts · Saible never opens a connection into your network
  • SplitA unit that is really several services: name the folders and give a reason. Each folder becomes its own AI system. A folder with no signal is refused. The record states whether the parent was kept or replaced.
  • MergeSeveral units that are one product: select the rows, name the product and give a reason. The result is one AI system to claim, and a reconnection keeps the merge.
  • Not AIAn organisation admin sets a row aside with a reason, such as a test fixture or code where nothing deployed calls a model. It is not listed again.
  • ConfidenceHigh: an SDK, import or infrastructure declaration plus another kind of signal. Medium: one strong signal, or a supporting one. Low: a prompt file or README mention alone. Coding-assistant files alone never make a system.
Corrections to what was found · each is an override the next scan keeps, and a record in the evidence ledger
  • PurposeWhat the AI system is for, in one sentence. It is required to claim the system and is never pre-filled.
  • AI Act risk class and its reasonProhibited, high, limited or minimal, with the reason in one sentence, or decided later. The owner declares it. Saible never does.
  • Owner and teamThe CODEOWNERS team is a suggestion in the claim drawer, and the person confirms it. Data classes and autonomy are declared by the owner, or taken from the data map where your platforms' tags state them.
  • ApprovalsA claim into an existing system is approved by its owner or an organisation admin. A policy change is approved by a second person. The owner attests every 90 days.
Decisions that stay with a person · Saible proposes and never decides a purpose or a risk class

Home and the AI catalogue count the AI systems found with no owner, in code and on the platforms, with where each was found and how long it has waited. After 14 days, an unclaimed system is flagged to the organisation admins.

The AI Act inventory lists each discovered, unclaimed system as such, with where it was found and the date first seen, and no owner, purpose or tier until a person claims it. The AI landscape report counts them, apart from the names seen in use with no registration. No owner suggestion appears on a report. A row count is a list of what was found, never a register on its own.

See evidence ledgers, checks and the evidence pack for the contents of the reports, and control coverage for the source of the Know and Own areas.

On the reports
Steps
  1. 1Open Catalogue → Systems → Discovered from code → Connect GitHub: your GitHub organisation through a GitHub App or a fine-grained token, or a GitLab group through a group token. For a self-hosted host choose Our collector reads it, then Collector key and run the collector where it can reach the host.
  2. 2Connect your AI platforms under Settings → Providers. The first scan runs the same night, or press Scan now. Test counts the repositories and reads nothing else.
  3. 3Open Discovered from code. It lists each service that calls a model, with its repository and folder, Saible's confidence and what was found. The figures on Home and in the AI catalogue count what has no owner, in code and on the platforms.
  4. 4Open a row. It shows where each signal was found, by file and line, and suggests the CODEOWNERS team. Press Claim it and type the purpose and the risk class. Alternatively, Split it by folder, select rows to Merge, or mark it Not AI, each with a reason.
  5. 5Press Attest as owner on the system's Access tab, and again every 90 days. Mark a system that does not belong to you as Not ours.
For your agents

This topic is also documented as Agent Skills that your agents can load: discovery, catalog, code-scan, exposure-report, human-ai-use. Request them from Saible.

Next · Control Plane · CatalogueWhat Saible discovers when you connect a source →