VIVATLAS について
VIVATLASは、公開リポジトリや保存したリンクからスキル、エージェント、MCPサーバーを整理するセルフホスト型カタログです。全文検索と意味検索、個人用・共有カードを備え、MCP経由でカタログにアクセスできます。
主な機能
- 01公開リポジトリとリンクをカタログ化
- 02単語と意味による検索
- 03プロジェクトの説明とカードを作成
- 04個人用・共有コレクションの管理
- 05ブラウザーやAndroidアプリでリンクを保存
- 06RESTとMCPでカタログを公開
活用シーン
- 01用途を説明して保存済みツールを探す
- 02エージェントプロジェクトの共有カタログを閲覧
- 03ブラウジング中やAndroidからリンクを保存
- 04AIアシスタントにカタログ項目を尋ねる
MCP 対応
VIVATLASは、MCPクライアントからユーザーのカタログを検索できるMCPサーバーです。REST APIも提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e SECRET_KEY -e GOOGLE_API_KEY ghcr.io/bobpanil/vivatlas:1.0.13SECRET_KEYシークレットSigns sessions and encrypts stored tokens. Set once and keep it; left empty, the container generates one and keeps it in /data.GOOGLE_API_KEYシークレットGemini key for the descriptions, search embeddings and picture choice. Optional; Ollama works too (OLLAMA_URL). Also settable in the admin panel.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/bobpanil/vivatlas:1.0.13Streamable HTTPツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
VIVATLAS
ツールを集めています。Claude のスキル、エージェント、MCP サーバー、深夜にスターを付けたスクレイパー、誰かが Reddit にリンクしたデザインキット。GitHub のスター、セルフホストの Gitea、ブラウザーのブックマーク、メモアプリに散らばり、3 か月後には「確か、あれに使えるものがあった」と思い出しても、見つけられません。
VIVATLAS は、そのための棚です。リポジトリや保存したリンクを登録すると、それぞれがカードになります。名前、コンパイラー向けではなく人向けに書かれた説明、画像、タグが付きます。そして、それらをすべてひとつの場所にまとめ、名前だけではなく意味で検索できます。「サイトのアクセシビリティを監査するもの」と尋ねれば、候補を3つ提示し、それぞれの理由も教えてくれます。
自分のマシンで動作します。NAS、余っているコンピューター、ノートパソコンなどで使えます。複数人での利用を想定しており、動作は常に読み取り専用です。公開リポジトリを取り込むだけで、Git に書き戻すことは決してありません。
インストールする前に試してみましょう。 demo1.bobpanil.com は公開版の VIVATLAS です。サインインページで Try it を押すと、自分専用のアカウントが作成されます。カタログの閲覧や検索、リンクやメモの追加をお試しください。アカウントと追加した内容は24時間後に削除されます。このデモは AI なしで動作するため、追加したカードはシンプルな表示になり、検索も意味ではなく単語に基づいて行われます。常に最新リリースが動作します。
できること
すべてのカードに顔を
灰色の四角形が並ぶ画面を眺めたい人はいません。VIVATLAS は、各プロジェクトが使っている画像を見つけます。README の先頭にあるバナー、リポジトリ内のロゴ、GitHub が生成するカード画像などです。そして、画像に見えるだけのもの、たとえばビルドバッジ、スポンサーのロゴ、「コーヒーをおごる」ボタン、オーナーのアバターなどは除外します。本物の候補が複数ある場合は、説明文を作成したのと同じ AI がそれらを見比べ、プロジェクトの内容を実際に表しているものを選びます。
プロジェクトに画像がまったくない場合は、VIVATLAS がカバー画像を自動生成します。名前を専用の書体で表示し、名前に基づいた色とパターンを組み合わせます。どのカバーも異なりながら、全体に統一感があります。モデル不要、コストなし、灰色のままにはなりません。
カードを詳しく見る
カードを開くと、同じプロジェクトを3つの形式で確認できます。1行の説明、人向けの段落、そして利用するかどうかを判断するための技術メモです。確信度付きのタグ、用途、入手元、最終更新日時に加え、再スキャン、ファイルへの整理、リンクのコピーを行うボタンもあります。説明文は、リポジトリの README をもとに、設定した AI が作成します。
同僚に尋ねるように検索
2つのインデックスが連携します。単語を検索する全文検索と、意味を検索するベクトル検索です。ロシア語で入力して英語のツールを見つけられます。ツール名ではなくタスクを説明すると、レコメンダーが候補を3つ提示し、それぞれについて理由を1文で説明します。あるいは、正直に「該当するものはありません」と答えます。ソフトウェアの世界では、もっとよくあるべき答えです。
どこからでもクリップ
-
ブラウザー拡張機能(Chrome、Edge、Brave、Firefox):今開いているページや貼り付けたリンクを、公開または非公開でワンクリックでカタログに追加します。→ extension/README.md
-
Android アプリ:どのアプリからでも「共有」→「VIVATLAS」。保存内容を表示する小さなシートで、送信前に非公開または公開を選べます。すでにサインイン済みのブラウザーから QR コードをスキャンしてサインインするため、長いパスワードをスマートフォンのキーボードで入力する必要はありません。→ android/README.md
-
ウェブフォーム:リンク、サイト、スクリーンショット、リールから候補を表示し、星で評価して選ぶと、カタログにカードが追加されます。
Android アプリのインストール: は、アプリを最新の状態に保ってくれる F-Droid から入手できます。または、最新リリースから
vivatlas-android-<version>.apk をダウンロードするか、このリポジトリを Obtainium に追加すれば、自動で更新されます。アプリの存続期間中、リリースには同じキーで署名されるため、毎回前のバージョンに上書きインストールできます。
自分のもの、みんなのもの
各ユーザーはそれぞれのサインイン情報、非公開カード、個人用フォルダーを持ちます。共有カタログは全員が共用し、運営者が管理します。カードは所有者の判断で共有カタログと個人用カタログの間を移動できます。お気に入りを保存したり、変更内容のフィードを確認したり、上流で古くなったカードを見つけたりすることもできます。
AI アシスタントから質問
VIVATLAS は MCP サーバーです。ChatGPT、Claude など、MCP に対応するものに接続すれば、「X をするツールはどれ?」という質問に、あなたのカタログから回答します。シンプルな REST API もあります。→ docs/MCP.md
その他の機能
3 言語(英語、ロシア語、ヘブライ語。右から左への表示にも適切に対応)。ライト、ダーク、OLED、システム設定に従うテーマ。バックアップコード付きの 2 段階サインイン。リンクまたはメールでの招待、あるいは希望に応じてオープン登録。ソースとして Gitea と GitHub に対応し、毎日再スキャンします。ユーザー、フォルダー、メール、AI キーを管理でき、再起動せずに変更できる管理パネル。そして upstream / update を使えば、カードを元の場所と比較し、ファイルに手を加えていない箇所に限って新しいバージョンを取り込めます。
5 分で試す
最も手早い方法はコンテナーです。
docker run -d --name vivatlas -p 8710:8710 -v vivatlas_data:/data ghcr.io/bobpanil/vivatlas:latest
http://localhost:8710 を開くと、/setup に最初にアクセスしたユーザーが所有者になります。次に Admin → Sources で GitHub アカウントまたは Gitea アドレスを登録し、Scan now を押して、カードが追加されるのを確認します。
ソースから実行する場合:
python -m venv .venv
.venv/bin/python -m pip install -e ".[dev]" # Windows: .venv\Scripts\python.exe
cp .env.example .env # set SECRET_KEY; everything else is optional
.venv/bin/python -m vivatlas.cli init-db # create or update the database
.venv/bin/python -m vivatlas.cli scan # fetch repositories
.venv/bin/python -m vivatlas.cli serve --host 0.0.0.0 --port 8710
--host 0.0.0.0 を指定すると、同じ Wi-Fi 上のスマートフォンからアクセスできます。コードを更新した後は、もう一度 init-db を実行してください。serve は自動でマイグレーションを行いません(コンテナーは起動のたびに実行します)。
本格的に自宅で運用する場合は、docs/DEPLOY-TRUENAS.md に TrueNAS SCALE の手順があります。VIVATLAS をプロキシやトンネルの背後で運用する際に重要となる 2 つの設定についても説明しています。
実際に使いたくなる設定
任意の設定はすべて .env(またはコンテナの環境変数)にあります。.env.example にすべての説明が記載されています。よく質問される設定は次のとおりです。
| 設定 | 用途 |
|---|---|
GOOGLE_API_KEY、OLLAMA_URL | 説明文の作成や画像の選択に使う AI です。どちらか一方でも、両方でも使えます。管理パネルでも設定できます。 |
TRUSTED_PROXIES | Cloudflare、Traefik、nginx が VIVATLAS の前段で TLS を終端する場合に設定します。設定しないと、Cookie に Secure が付与されません。 |
IMAGE_MODEL | 画像がないカード用の画像を 生成 します。Google の画像モデル(課金が必要)または pollinations:flux(無料、キー不要、品質は控えめ)を指定します。空の場合はデザイン済みのカバー画像が使われます。これがデフォルトで、想像以上に見栄えがします。 |
守っているルール
VIVATLAS は閲覧ツールであり、所有者ではありません。 公開 Git リポジトリを読み取り、その中にあるツールの検索と閲覧を支援します。カタログ化またはリンクするリポジトリ、コード、名前、商標を所有することも、それらに対する権利を主張することもありません。それらは各作者に帰属し、それぞれ独自のライセンスに従います。
Git には何も書き込まず、非公開リポジトリもスキャンしません。 これは設定ではなくルールであり、どこにも切り替え機能はありません。
ライセンス: サーバー(src/ 以下のすべて)は Business Source License 1.1 です。商用利用を含め、無料で使用、デプロイ、変更できます。ただし、VIVATLAS 自体を製品またはホスティングサービスとして販売または再販売することはできません。2030-07-21 に Apache-2.0 に移行します。Android アプリ(android/)も Apache-2.0 であり、F-Droid でビルドして配布できます。ブラウザー拡張機能(extension/)も Apache-2.0 です。
テスト
.venv/bin/python -m pytest
.venv/bin/python -m ruff check src tests
内部の仕組み — 変更を加えるときのために、各要素の配置を説明します
src/vivatlas/
config.py settings from .env
runtime_settings.py overrides from the database on top of .env (edited from the admin panel)
db.py connection to SQLite
models.py tables
migrate.py init-db: add missing columns/indexes, rebuild search
security.py passwords, secret encryption, secret key
twofactor.py two-step sign-in (TOTP + backup codes)
auth.py, auth_web.py sign-in, registration, invitations, password reset
qrlogin.py sign a phone in by a one-time QR shown on a signed-in browser
admin_web.py admin panel (people, access, email, integrations)
settings_web.py personal settings, avatars, sources, folders
web.py catalogue, cards, adding
api.py app assembly, REST, background loops, static
filters.py visibility: own + shared
categories.py folder permissions (shared/personal)
i18n.py, translations*.py translations (en/ru/he), RTL
mailer.py emails (password reset, invitations)
avatars.py uploaded photo → square WebP
previews.py the picture on a card: find it, fetch it, fit it — or draw a cover
ai/ the models: google.py (text, vision, images), ollama.py, pollinations.py
usericons.py default avatar set (static/usericons)
scanner.py, indexer.py scanning + the private-repo rule, index
mcp_server.py MCP server for AI assistants
cli.py terminal commands (init-db, scan, serve, previews, embed, upstream…)
providers/
base.py common interface to a Git host (the "socket")
gitea.py Gitea
github.py GitHub (an account's public repositories)
ext_api.py JSON API for the browser extension and the Android app (/api/ext)
templates/, static/ pages and styles (hand-written CSS, no build step)
extension/ browser extension for Firefox and Chromium (Manifest V3)
android/ Kotlin WebView shell: share target, QR sign-in
別の Git ホストを追加するには、新しいプロバイダーで providers/base.py インターフェースを実装し、providers/__init__.py に接続します。それ以外のコードは変更不要です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。