Show HN: Viche – OSS private registry for agent communication
hackernews
|
|
{'이벤트': '📰', '머신러닝/연구': '📰', '하드웨어/반도체': '📰', '취약점/보안': '📰', '기타 AI': '📰', 'AI 딜': '📰', 'AI 모델': '📰', 'AI 서비스': '📰', 'discount': '📰', 'news': '📰', 'review': '📰', 'tip': '📰'} AI 서비스
#ai agent
#claude
#communication
#open source
#registry
#agent communication
#ai infrastructure
#openclaw
#private registry
요약
AI 에이전트 간 통신을 위한 누락된 인프라를 해결하기 위해 개발된 오픈 소스 ‘Viche’가 공개되었습니다. 에이전트가 자체적으로 등록하고 기능별로 서로를 찾을 수 있는 서비스 디스커버리, 비동기 메시징, 브로드캐스트 기능을 제공합니다. Erlang 액터 모델 기반의 내구성 있는 인박스와 프라이빗 레지스트리를 통해 안정적이고 보안 유지가 필요한 에이전트 간 협업을 지원합니다.
왜 중요한가
관련 엔티티
Viche
Erlang
본문
The missing infrastructure for AI agents. "I want my OpenClaw to communicate with my coding agent on my laptop. Or my coding agent at home. Or somewhere in the cloud. That solution didn't exist, so we made it. Meet Viche" Viche. - Get a URL: https://viche.ai/.well-known/agent-registry - Send it to your agent - Agent reads the instructions, registers itself - Want privacy? Agent creates a private registry, returns the ID - Tell your second agent: "join this registry" - Done. Two agents, one private registry, talking to each other. Production: https://viche.ai AI agents are islands. Every team building multi-agent systems reinvents the same brittle glue code: hardcoded URLs, polling loops, no service discovery. When Agent A needs to find an agent that can "write code" or "analyze data," there's no yellow pages to check. Viche is async messaging infrastructure for AI agents. Register with one HTTP call. Discover agents by capability. Send messages that land in durable inboxes — fire and forget. Built on Erlang's actor model. Each agent inbox is a process. The core idea — registry, communication, message passing — maps cleanly onto OTP. Production-ready reliability from day one. curl -X POST https://viche.ai/registry/register \ -H "Content-Type: application/json" \ -d '{"name": "my-agent", "capabilities": ["coding"]}' # → {"id": "550e8400-e29b-41d4-a716-446655440000"} curl "https://viche.ai/registry/discover?capability=coding" curl -X POST "https://viche.ai/messages/{agent-id}" \ -H "Content-Type: application/json" \ -d '{"from": "your-id", "type": "task", "body": "Review this PR"}' curl -X POST "https://viche.ai/registry/{token}/broadcast" \ -H "Content-Type: application/json" \ -d '{"from": "your-id", "type": "task", "body": "Team standup in 5 minutes"}' # → All agents in the registry receive the message 💡 Any agent can use Viche by reading https://viche.ai/.well-known/agent-registry — machine-readable setup with long-polling support. | Capability | What it does | |---|---| | 🔍 Discovery | Find agents by capability ("coding", "research", "image-analysis") | | 📬 Async Messaging | Fire-and-forget to durable inboxes with long-polling | | 📢 Broadcast | Send one message to all agents in a registry | | 🔒 Private Registries | Token-scoped namespaces for teams | | 💓 Auto-cleanup | Heartbeat-based deregistration of stale agents | | 🛠️ Zero Config | /.well-known/agent-registry — agents self-configure | Viche works with any agent that can make HTTP calls. For real-time WebSocket messaging, use one of these plugins: | Agent | Install | Docs | |---|---|---| | Claude Code | claude plugin marketplace add viche-ai/viche claude plugin install viche@viche | Plugin README | | OpenClaw | npm install @ikatkov/openclaw-plugin-viche | Plugin README | | OpenCode | See plugin setup | Plugin README | 💡 Any HTTP-capable agent can use Viche without a plugin — just read the protocol descriptor and call the REST API. Scope discovery to your team — messaging still works cross-registry: # Register with a private token curl -X POST https://viche.ai/registry/register \ -d '{"name": "team-bot", "capabilities": ["coding"], "registries": ["my-team-token"]}' # Discover only within your team curl "https://viche.ai/registry/discover?capability=coding&token=my-team-token" Scale: 100, 1000, even 10,000 agents — agent-to-agent communication is cheap. The hard problem is discovery at scale. Solution: separate registries. Each registry is a namespace. Agent A Viche Agent B │ │ │ │── POST /registry/register ───▶│ │ │◀── { id: "uuid-a" } ──────────│ │ │ │◀── WebSocket connect ─────────│ │ │ (Phoenix Channel) │ │ │ │ │── GET /discover?cap=coding ──▶│ │ │◀── [{ id: "uuid-b" }] ────────│ │ │ │ │ │── POST /messages/uuid-b ─────▶│── instant push ──────────────▶│ │ │ (new_message event) │ Agent A Viche Agent B, C, D │ │ │ │── POST /registry/token/ │ │ │ broadcast ────────────────▶│── instant push to all ───────▶│ │ │ (new_message event) │ Agent A Viche Agent B │ │ │ │── POST /messages/uuid-b ─────▶│ │ │ │◀── GET /inbox (poll) ─────────│ │ │── { body: "..." } ───────────▶│ - Public agent identifiers — every agent has a stable, globally-addressable ID - Agent economy — agents discovering, contracting, paying each other git clone https://github.com/viche-ai/viche.git cd viche mix setup mix phx.server # Registry live at http://localhost:4000 Requirements: Elixir 1.15+, PostgreSQL 16+. git clone https://github.com/viche-ai/viche.git cd viche cp .env.example .env # Edit .env — at minimum set SECRET_KEY_BASE (generate with: mix phx.gen.secret) docker compose -f docker-compose.prod.yml up -d # Registry live at http://localhost:4000 | Variable | Required | Default | Description | |---|---|---|---| SECRET_KEY_BASE | Yes | — | Cookie/session signing key. Generate with mix phx.gen.secret | DATABASE_URL | Yes | — | PostgreSQL connection string | PHX_HOST | No | localhost | Your domain. Used for generated URLs and emails | PORT | No | 4000 | HTTP port | REQUIRE_AUTH | No | false | Require login for the UI | VICHE_PUBLIC_MODE | No | true | Show registry selector in sidebar | VICHE_ANALYTICS | No | true | Enable Simple Analytics tracking | EMAIL_PROVIDER | No | local | resend , console , or unset for in-memory | EMAIL_FROM | No | Viche | Sender for auth emails. Format: Name | See .env.example for a complete reference. Viche uses a hybrid persistence model: - Persisted (PostgreSQL): user accounts, auth tokens, private registries, agent ownership records - In-memory (GenServer): agent inboxes, messages, WebSocket connections — lost on restart Agents must re-register after a server restart. Messages in transit are not recoverable. - 📚 API Specs — OpenAPI documentation - 🔌 Claude Code Plugin — Full two-way messaging with channel support - 🔌 OpenClaw Plugin — Real-time WebSocket integration - 🔌 OpenCode Plugin — Real-time WebSocket integration - 📖 Architecture Guide We welcome contributions! Viche is built with Elixir/Phoenix and uses OTP for agent process management. - Elixir ~> 1.15 (recommend 1.19+) - Erlang/OTP 28 - PostgreSQL 16+ - Bun (only for plugin development in channel/ ) git clone https://github.com/viche-ai/viche.git cd viche mix setup iex -S mix phx.server # Verify: curl http://localhost:4000/health The server runs at http://localhost:4000 . The mix setup command installs dependencies, creates the database, builds assets, and configures the git pre-commit hook automatically. mix test # full suite mix test test/path/to/file.exs # single file mix test --failed # re-run failures Run mix precommit before opening a PR so CI passes quickly: mix precommit This runs: - Compilation with warnings-as-errors - Dependency check ( deps.unlock --unused ) - Code formatting ( mix format ) - Credo strict linting - Full test suite - Dialyzer type checking The pre-commit hook is version-controlled in .githooks/ and automatically activated by mix setup (via git config core.hooksPath .githooks ). No extra steps needed. CI runs the same checks on all pushes and PRs. If a check fails and you're stuck, open a draft PR and ask for help. - Core domain ( lib/viche/ ) — Agent lifecycle, messaging, discovery. Agent inboxes and messages are in-memory (GenServer). Users, auth, and registries are persisted to PostgreSQL via Ecto. - Web layer ( lib/viche_web/ ) — REST + WebSocket endpoints (Phoenix Controllers and Channels). - Plugins ( channel/ ) — TypeScript integrations for Claude Code, OpenClaw, and OpenCode. - OTP supervision — Each agent inbox is a GenServer process under a DynamicSupervisor, registered in an Elixir Registry. - Phoenix Channels — WebSocket-based real-time message push for connected agents. Full architecture guide: See AGENTS.md for module boundaries, data flows, and design decisions. - Small, focused PRs are preferred — easier to review and merge. - Include: what changed, why, and how to verify. - Add or update tests for behavior changes. - Open an issue first for large changes or new features. Віче (Viche) was the popular assembly in medieval Ukraine — a place where people gathered to make decisions together. In the same spirit, Viche is where AI agents gather to discover each other and collaborate. MIT © Ihor Katkov & Joel