Дата: 2026-04-20
Мета: інвентаризувати credentials у /srv/passepartout/ та перевірити наявність usage/billing API у 4 провайдерів (Anthropic, Replicate, Google Gemini, Google Cloud) під MVP дашборда моніторингу витрат.
sk-ant-admin... (генерується лише org admin у Claude Console). Ендпоінти повноцінні: usage_report/messages + cost_report./account/billing». Workaround: пагінувати GET /v1/predictions і агрегувати metrics.predict_time × модельні тарифи (але balance/credits не віддає API).roles/billing.viewer і жоден не пов'язаний з billing account./srv/passepartout/Permissions: корінь chmod 700 (root only). Всього 7 підтек + 3 root-файли.
| Шлях | Призначення | Тип | mtime |
|---|---|---|---|
/srv/passepartout/README.md |
Опис структури vault | docs | 2026-04-15 |
/srv/passepartout/google-andriy-savchenko.txt |
Gmail-акаунт Андрія Савченка (логін/пароль/recovery) для Reviews + Ad Analytics | credentials (plaintext) | 2026-04-15 |
/srv/passepartout/lifecell-esim.txt |
Дані lifecell eSIM (13 байт, ймовірно PIN/QR ID) | plaintext | 2026-04-15 |
/telegram/| Файл | Призначення | Тип | mtime |
|---|---|---|---|
arteggia-bot.token |
@arteggia_promo_bot (bot ID 8660071271), механіка «2× Arteggia → промокод Vertebra» |
Telegram bot token | 2026-04-20 |
claude-bot.token |
Основний чат з Сергієм (systemd claude-bot) |
Telegram bot token | 2026-04-15 |
pediatric-news-bot.token |
Проект Pediatric News (n8n) | Telegram bot token | 2026-04-15 |
tree-bot.token |
Tree Bot (lunar-hubble) | Telegram bot token | 2026-04-15 |
arteggia-bot.token.meta |
meta-опис | docs | 2026-04-20 |
/google/| Файл | Призначення | Тип | mtime |
|---|---|---|---|
gemini.key |
Gemini API key (AI Studio). ЗАБЛОКОВАНИЙ станом на 20.04: 403 на 2.5-моделях, 429 quota=0 на 2.0 | API key | 2026-04-15 |
gemini.key.meta |
meta з діагностикою блокування | docs | 2026-04-20 |
bigquery-sa.json |
Service account expense-bot@expense-bot-492610.iam — призначений для особистого BigQuery (назва не співпадає з ad-analytics-hub, виглядає як перенесений із старого projectу) |
GCP SA JSON | 2026-04-16 |
ad-pipeline-worker-sa.json |
Service account ad-pipeline-worker@ad-analytics-hub.iam — для ad-analytics pipeline |
GCP SA JSON | 2026-04-16 |
google-ads-developer-token.txt |
Google Ads API developer_token (basic access, MCC 191-068-9182) | developer token | 2026-04-16 |
mcc-account-ids.json |
Карта 38 брендів → Google Ads customer IDs (Humer, Zest, BioGaia, Fervex, etc.) | reference data | 2026-04-16 |
cookies-google-ads.json |
Браузерні куки Google Ads UI (для Puppeteer/Playwright scraping) | session cookies | 2026-04-16 |
cookies-looker-studio.json |
Куки Looker Studio | session cookies | 2026-04-15 |
cookies-sergey.json |
Загальні Google куки Сергія | session cookies | 2026-04-15 |
/replicate/| Файл | Призначення | Тип | mtime |
|---|---|---|---|
token.txt |
Replicate API token (org deltamedical, verified). Використовується med-detective (Llama 70B) + arteggia-bot (gemini-2.5-flash OCR) |
API token (r8_...) |
2026-04-18 |
token.txt.meta |
meta-опис | docs | 2026-04-20 |
/meta/, /reviews/, /supabase/, /github/| Файл | Призначення | Тип | mtime |
|---|---|---|---|
meta/andrii-savchenko-fb.txt |
FB credentials для Ad Library + Threads | plaintext | 2026-04-15 |
meta/cookies-andrii-savchenko-fb.json |
FB session cookies | session cookies | 2026-04-15 |
reviews/cookies-add-ua.json |
Куки для Add.ua (відгуки) | session cookies | 2026-04-16 |
supabase/lunar-hubble.env |
Supabase URL + publishable key (lunar-hubble проект) | env | 2026-04-15 |
github/tokens.txt |
GitHub PAT (значення redacted, дивись у passepartout). README заявляє expires 2026-05-14. 🔒 2026-05-12 — значення прибрано зі звіту, історія git також почищена при наступній ротації PAT. | PAT | 2026-04-16 |
~/.claude/), а не через API key у passepartout.ad-pipeline-worker@ad-analytics-hub, expense-bot@expense-bot-492610) — жоден НЕ має ролі billing.viewer, і проекти різні. Немає SA прив'язаного до billing account особистого Сергія чи корпоративного Deltamedical.Є, документовано, production-ready.
https://api.anthropic.comGET /v1/organizations/usage_report/messages — usage (tokens)GET /v1/organizations/cost_report — cost (USD, по workspaces/description)x-api-key: sk-ant-admin... (окремий Admin API key, не той що для inference). Генерується лише org admin у Claude Console → Settings → Admin Keys.anthropic-version: 2023-06-01starting_at, ending_at (ISO8601), bucket_width ∈ {1m, 1h, 1d}, group_by[], фільтри models[], api_key_ids[], workspace_ids[], service_tiers[], context_window[], inference_geos[].starting_at, ending_at, group_by[] ∈ {workspace_id, description} — тільки daily granularity./docs/en/build-with-claude/claude-code-analytics-api).Джерела:
Офіційного billing/usage API НЕ МАЄ.
GET /v1/account — тільки базове (type, username, name, github_url). Жодних $.GET /v1/predictions (paginated) — кожна prediction має metrics.predict_time (CPU/GPU seconds) та total_time. Але: input/output/logs видаляються через ~1 год, тому для історії не згодиться без власного архівування.Authorization: Bearer r8_... (той самий token що для inference).https://replicate.com/account/billing (UI)./account/billing через збережені cookies (cookies-based, крихко).GET /v1/predictions → агрегувати predict_time × hardware tariff (є у GET /v1/hardware) → approximate spend. Окремо треба вести базу historical predictions.costgoat.com/monitor/replicate-credits) — якщо готові дати доступ стороньому сервісу.Джерела:
Окремого usage/quota API НЕ МАЄ для AI Studio keys.
Dashboard → Usage) — єдине місце де доступна агрегована Gemini-usage для AI Studio ключа.metric.type="serviceruntime.googleapis.com/quota/rate/net_usage" AND resource.labels.service="generativelanguage.googleapis.com"./srv/passepartout/google/gemini.key заблокований (квота=0) — дашборд на ньому збирати нема що.Джерела:
Є два рівні API.
https://cloudbilling.googleapis.com/v1GET /billingAccounts — список billing accountsGET /billingAccounts/{id} — деталі (не spend!)GET /billingAccounts/{id}/projects — прив'язані проектиGET /projects/{project}/billingInfo — billing account проектуGET /services, GET /services/{id}/skus — каталог SKU + pricingbillingbudgets.googleapis.com/v1): GET /billingAccounts/{id}/budgets — бюджети та їхні thresholds (НЕ actual spend напряму, але трекінг порогів можна зав'язати на notifications).https://www.googleapis.com/auth/cloud-billing (read) або cloud-billing.readonly, або cloud-platform.roles/billing.viewer на billing account — read metadata + budgets.roles/billing.user — крім read, ще linking projects.roles/billing.costsManager або roles/billing.admin.<project>.<dataset>.gcp_billing_export_v1_<BILLING_ACCOUNT_ID>.SELECT service.description,
SUM(cost) + SUM(IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)) AS total
FROM `<project>.<dataset>.gcp_billing_export_v1_XXXXXX`
WHERE invoice.month = FORMAT_DATE('%Y%m', CURRENT_DATE())
GROUP BY service.description ORDER BY total DESC;
bigquery.readonly + cloud-billing.readonly.roles/bigquery.dataViewer на датасеті + roles/bigquery.jobUser на проекті.https://monitoring.googleapis.com/v3/projects/{project}/timeSeriesmetric.type="serviceruntime.googleapis.com/quota/rate/net_usage" + resource.labels.service="generativelanguage.googleapis.com" (Gemini API)aiplatform.googleapis.com (Vertex AI).roles/monitoring.viewer.https://www.googleapis.com/auth/monitoring.read.Джерела:
| Провайдер | Credential потрібен | Є в passepartout? | Якщо нема — як отримати |
|---|---|---|---|
| Anthropic (API usage + cost) | Admin API key sk-ant-admin... |
❌ НЕМАЄ | Сергій → Claude Console → Settings → Admin Keys → Create. Вимагає org (не personal). |
| Anthropic (Claude Code per-user) | той же Admin key + org на Team/Enterprise plan | ❌ НЕМАЄ | Див. вище + плюс перевірити чи поточний plan дозволяє Claude Code Analytics API. |
| Replicate (balance) | немає API | — | Workaround: cookies для /account/billing або власне архівування /v1/predictions + hardware tariff. |
| Replicate (usage approx) | API token | ✅ Є (replicate/token.txt) |
— |
| Gemini (через AI Studio) | немає API | — | Прив'язати проект до Cloud Billing → піти через GCP шлях. |
| Gemini (через Vertex/Cloud Billing) | SA з billing.viewer + monitoring.viewer на проекті з увімкненим billing |
⚠️ частково: SA є, але ролі НЕ видані; проект expense-bot-492610 чи ad-analytics-hub — не зрозуміло який billing |
Сергій → IAM → видати роль roles/billing.viewer на billing account потрібному SA. Уточнити який GCP проект використовується під Gemini. |
| GCP Billing (corporate Deltamedical) | SA + roles/billing.viewer на corp billing account + billing export у BigQuery |
❌ НЕМАЄ | 1) Дізнатись ID корпоративного billing account. 2) Увімкнути BigQuery Export. 3) Створити/перевикористати SA, видати billing.viewer + bigquery.dataViewer. |
| GCP Billing (personal Сергій) | аналогічно | ❌ НЕМАЄ | Те саме на особистому billing account. |
| GCP Monitoring (quota per service) | SA з monitoring.viewer на проекті |
⚠️ SA є (2 шт), ролі явно не задокументовані | Перевірити через gcloud projects get-iam-policy який у них рівень. Ймовірно для ad-analytics-hub є, для expense-bot ні. |
| GitHub PAT | ghp_... | ✅ Є, але expires 2026-05-14 | Ротація за 3 тижні — можна зразу згенерувати новий з тими ж скоупами. |
| Метрика | Джерело | Складність |
|---|---|---|
| Replicate predictions count + GPU-seconds (останні N днів) | GET /v1/predictions (token є) + GET /v1/hardware для тарифів |
Середня — треба локальна БД для історії >1 год |
| Telegram bots health (4 боти up/down) | GET /bot<token>/getMe на кожен токен |
Легко |
| GitHub rate-limit + PAT expiry countdown | GET /rate_limit + відомо що 14.05 |
Легко |
| Supabase lunar-hubble health | Ping URL | Легко |
| Метрика | Блокер |
|---|---|
| Anthropic API spend + tokens | Admin key потрібно згенерувати (5 хв Сергію) |
| Claude Code per-user usage | Admin key + перевірка plan |
| Gemini usage/cost | Розблокувати ключ АБО перейти на Vertex AI + billing.viewer |
| GCP corp spend (Gemini, Vertex, BigQuery, etc.) | BigQuery Billing Export + IAM для SA |
| GCP personal spend | Той же шлях для особистого billing account |
Припущення: Сергій видає Admin API key Anthropic + налаштовує BigQuery Billing Export (corp + personal) + видає ролі SA. Tech stack: FastAPI + статичний HTML через Reports Hub (/reports/), data refresh cron кожні 15 хв.
| Етап | Час |
|---|---|
| Scaffold FastAPI + cron scheduler | 1-1.5 год |
| Anthropic usage_report + cost_report клієнт | 1.5 год |
| Replicate pagination + GPU-seconds aggregator + SQLite cache | 2-3 год |
| GCP BigQuery Billing Export клієнт (corp + personal) | 1.5-2 год |
| GCP Monitoring API для Gemini quota metrics | 1 год |
| Front-end: 4 картки (Anthropic / Replicate / Gemini / GCP Total) + графіки 30 днів | 2-3 год |
| Caddy route + systemd service | 0.5 год |
| Тест, polish | 1 год |
Разом: ~10-12 годин при наявності всіх credentials. Мінімальний usable MVP (лише Replicate + Telegram + GitHub) — ~3 години.
Рекомендація: зробити спершу «каркас з тим що є» (3 год), показати Сергію, паралельно він видає доступи, потім інкрементально додати Anthropic і GCP.
[Critical] Anthropic Admin API key
/srv/passepartout/anthropic/admin.key + написати .meta[Critical] Розблокувати Gemini або прийняти рішення про Vertex
[High] GCP Billing Export (corporate Deltamedical)
billing_export у дозволеному проектіad-pipeline-worker@ad-analytics-hub.iam ролі: roles/billing.viewer + roles/bigquery.dataViewer на датасетіresource-dashboard-reader@... з мінімальними правами (рекомендовано)[High] GCP Billing Export (personal)
[Medium] GCP Monitoring для quota trackingу
roles/monitoring.viewer SA на проекті де Gemini/Vertex API[Medium] GitHub PAT rotation
/srv/passepartout/github/tokens.txt + додати .meta[Low] Replicate — рішення щодо balance tracking
/account/billing у /srv/passepartout/replicate/cookies.json (крихко, сесія живе ~тиждень)