Upload EIS signals straight from your CI. Your code never leaves your machine — only the signals (light) reach the observatory. Built for GitHub Enterprise and no-clone environments.
EIS のシグナルを CI からそのままアップロード。コードはあなたのマシンから出ない — 観測所に届くのはシグナル(光)だけ。GitHub Enterprise やクローン不可の環境のために。
Base URL https://api.orbitlens.ioThe OrbitLens API lets the EIS CLI push locally-computed signals to your observatory, and lets anyone embed a signal badge.
OrbitLens API は、EIS CLI がローカルで算出したシグナルを観測所へ送り、誰でもシグナルバッジを埋め込めるようにする。
EIS analyses your repository locally — git log and git blame, nothing else. The CLI uploads only the resulting signals (the 7-axis scores and archetypes), never source code. This is the path for teams who can't or won't let the SaaS clone their repos (GitHub Enterprise, air-gapped, strict policy).
EIS はリポジトリをローカルで解析する — git log と git blame だけ、他には何も使わない。CLI がアップロードするのは結果のシグナル(7軸の数値とアーキタイプ)のみで、ソースコードは決して送らない。SaaS にリポジトリをクローンさせられない・させたくないチーム(GitHub Enterprise、エアギャップ、厳格なポリシー)のための経路だ。
All write endpoints take a Bearer token. Create one in Ace → Settings → API tokens (shown once). Tokens are prefixed eis_ and scoped to the galaxy that created them.
書き込み系エンドポイントはすべて Bearer トークンを要求する。Ace → Settings → API tokens で発行する(表示は一度きり)。トークンは eis_ で始まり、発行した galaxy にスコープされる。
Authorization: Bearer eis_xxxxxxxxxxxxxxxxxxxx
The recommended path is the CLI, which sends the token for you:
推奨は CLI 経由で、トークンは CLI が代わりに送る:
# token via flag or $EIS_TOKEN
eis analyze --upload --token eis_xxxx
Requests are rate-limited per token/user, by plan. Every response carries the standard headers:
リクエストはトークン/ユーザー単位、プランに応じてレート制限される。すべてのレスポンスに標準ヘッダが付く:
| Headerヘッダ | Meaning意味 |
|---|---|
| X-RateLimit-Limit | Requests allowed per minute for your planプランごとの毎分許可リクエスト数 |
| X-RateLimit-Remaining | Requests left in the current window現在のウィンドウで残っているリクエスト数 |
| X-RateLimit-Reset | Unix time when the window resetsウィンドウがリセットされる Unix 時刻 |
Over the limit returns 429 Too Many Requests. Uploads run once per analysis (e.g. per CI build), so the plan limits leave generous headroom.
制限を超えると 429 Too Many Requests を返す。アップロードは解析ごとに一度(例: CI ビルドごと)なので、プランの制限には十分な余裕がある。
Writes per-member signals for one domain as an observation, keyed on the analyzed commit. git_sha and sha_author_date are required — the observatory uses them to place the observation on the timeline (it can't derive them itself).
1つのドメインのメンバー別シグナルを、解析対象コミットをキーに観測として書き込む。git_sha と sha_author_date は必須 — 観測所はこれらを使って観測を年表上に配置する(自分では導出できない)。
| Fieldフィールド | Type型 | |
|---|---|---|
| git_sha | string | HEAD commit of the analyzed repo (required)解析対象リポジトリの HEAD コミット(必須) |
| sha_author_date | RFC3339 | Author date of that commit (required)そのコミットの author date(必須) |
| analysis_time | RFC3339 | When the analysis ran解析を実行した時刻 |
| domain | string | Logical domain (e.g. "backend")論理ドメイン(例: "backend") |
| signals[] | object | Per-member 7-axis scores + archetypesメンバー別の7軸数値+アーキタイプ |
curl -X POST https://api.orbitlens.io/v1/signals/upload \ -H "Authorization: Bearer eis_xxxx" \ -H "Content-Type: application/json" \ -d '{ "git_sha": "a1b2c3d4...", "sha_author_date": "2026-06-15T09:00:00Z", "analysis_time": "2026-06-15T09:05:00Z", "domain": "backend", "signals": [ { "author": "alice", "production": 100, "catalysis": 68, "survival": 40, "design": 20, "breadth": 55, "debt_cleanup": 30, "indispensability": 25, "total": 62.7, "role_archetype": "Anchor" } ] }'
201{ "members": 1, "git_sha": "a1b2c3d4..." }
In practice you never hand-build this — run eis analyze --upload and the CLI assembles the payload (including git_sha) from your local analysis.
実際には手で組み立てることはない — eis analyze --upload を実行すれば、CLI がローカル解析からペイロード(git_sha を含む)を組み立てる。
Returns an SVG badge of a member's current Total + archetype, for embedding in a README.
メンバーの現在の Total +アーキタイプを表す SVG バッジを返す。README への埋め込み用。
<!-- Markdown -->

A read-only Model Context Protocol server that hands one galaxy's observation to an AI coding agent as tools it can call. The agent stops writing blind: it can ask which modules are fragile, who holds them, and whether code here survives — before it edits.
1つの galaxy の観測を、AI コーディングエージェントが呼べるツールとして渡す、読み取り専用の Model Context Protocol サーバ。エージェントは手探りで書くのをやめられる——どのモジュールが脆く、誰が支え、ここでコードが生き残るのかを、編集する前に問い合わせられる。
The MCP server lives at /mcp on the Ace host (not the api.orbitlens.io upload host above). It is read-only — no writes, no side effects — and scoped to the galaxy the token belongs to (Galaxy Boundary): an agent can never reach another galaxy's context.
MCP サーバは Ace ホストの /mcp にある(上のアップロード用 api.orbitlens.io とは別)。読み取り専用で——書き込みも副作用もなく——トークンが属する galaxy にスコープされる(Galaxy Boundary)。エージェントが他の galaxy のコンテキストに届くことはない。
MCP uses a dedicated mcp_ token — a separate credential from the eis_ upload token above, so read access is never conflated with the write capability. Mint one in Ace → AI Integration (shown once).
MCP は専用の mcp_ トークンを使う——上のアップロード用 eis_ トークンとは別の認証情報で、読み取り権限が書き込み権限と混ざらない。Ace → AI連携 で発行する(表示は一度きり)。
// .mcp.json { "mcpServers": { "orbitlens": { "type": "http", "url": "https://ace.orbitlens.io/mcp", "headers": { "Authorization": "Bearer mcp_xxxx" } } } }
Or via the CLI:
または CLI で:
claude mcp add --transport http orbitlens \ https://ace.orbitlens.io/mcp \ --header "Authorization: Bearer mcp_xxxx"
| Toolツール | Returns返すもの |
|---|---|
| module_durability | Every module's fragile-vs-robust profile (survival + ownership concentration), most-fragile first各モジュールの脆い⇔堅牢プロファイル(生存+所有集中)、脆い順 |
| assess_change | Pre-flight durability for the specific files you're about to editこれから編集するファイルの pre-flight durability |
| knowledge_holder | Who (anonymously, Member-N) holds a module, and whether it's bus-factor 1そのモジュールを(匿名・Member-N で)誰が支えているか、bus factor 1 か |
| blast_radius | The modules that historically change together with a given module指定モジュールと歴史的に一緒に変わってきたモジュール群 |
| author_survival_profile | The galaxy's anonymous survival distribution — never a per-person rowgalaxy の匿名の生存分布——個人単位の行は返さない |
| get_write_context | Before you write in a module: its durability, ownership concentration, and the constraints worth respectingモジュールに書き込む前の耐久性・所有集中・尊重すべき制約 |
| ai_sludge_meter | Modules where change keeps landing but little survives — accumulating churn / collapse-risk signal変更が積もるのに生き残らないモジュール——churn 累積・崩壊リスクのシグナル |
| triage_review_attention | Gravity-weighted ranking of where human review attention is worth spending firstレビューの注意をどこに優先して割くべきかを重力加重でランク付け |
| query_graveyard | Locally-dead patterns — modules that collapsed here, so the agent doesn't revive themこの galaxy で崩壊したパターン——復活させないための「墓場」 |
| get_propagation_anchors | Survival-proven robust modules — positive examples to pattern-match new code toward生存が実証された堅牢モジュール——新コードが倣うべき良い実例(アンカー) |
Tool calls are rate-limited per galaxy per hour, by plan (a higher plan or more seats raises the ceiling). Over the limit returns 429; it resets at the top of the hour. Protocol calls (initialize, tools/list) are never counted.
ツール呼び出しは galaxy 単位・1時間あたりでプランに応じてレート制限される(上位プランや席数で上限が上がる)。制限を超えると 429 を返し、毎時の頭でリセットされる。プロトコル呼び出し(initialize・tools/list)はカウントしない。
| Statusステータス | Meaning意味 |
|---|---|
| 400 | Malformed body, or missing git_sha / sha_author_date (upgrade the CLI)ボディの形式不正、または git_sha / sha_author_date の欠落(CLI を更新すること) |
| 401 | Missing or invalid / expired tokenトークンの欠落・無効・期限切れ |
| 429 | Rate limit exceeded — back off until X-RateLimit-Resetレート制限超過 — X-RateLimit-Reset まで待つこと |