{"id":37157661,"url":"https://github.com/agentstation/starmap","last_synced_at":"2026-01-14T18:48:55.870Z","repository":{"id":312602662,"uuid":"1034765660","full_name":"agentstation/starmap","owner":"agentstation","description":"Auto-updating catalog of AI models. Available as an HTTP API server, CLI tool and/or Golang package.","archived":false,"fork":false,"pushed_at":"2025-10-14T23:49:14.000Z","size":19582,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-15T00:05:07.160Z","etag":null,"topics":["ai","ai-models","ai-tools","anthropic","api","catalog","cli","developer-tools","devtools","go","golang","google-ai","groq","llm","machine-learning","model-discovery","model-registry","openai","pricing","sync"],"latest_commit_sha":null,"homepage":"https://agentstation.github.io/starmap/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/agentstation.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-09T00:23:10.000Z","updated_at":"2025-10-14T23:04:01.000Z","dependencies_parsed_at":"2025-10-15T00:13:27.824Z","dependency_job_id":"23c518c5-9cca-47df-8c9a-e8745e339f8f","html_url":"https://github.com/agentstation/starmap","commit_stats":null,"previous_names":["agentstation/starmap"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/agentstation/starmap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agentstation%2Fstarmap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agentstation%2Fstarmap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agentstation%2Fstarmap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agentstation%2Fstarmap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/agentstation","download_url":"https://codeload.github.com/agentstation/starmap/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agentstation%2Fstarmap/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28430921,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T16:38:47.836Z","status":"ssl_error","status_checked_at":"2026-01-14T16:34:59.695Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-models","ai-tools","anthropic","api","catalog","cli","developer-tools","devtools","go","golang","google-ai","groq","llm","machine-learning","model-discovery","model-registry","openai","pricing","sync"],"created_at":"2026-01-14T18:48:54.798Z","updated_at":"2026-01-14T18:48:55.857Z","avatar_url":"https://github.com/agentstation.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Starmap ⭐🗺️\n\n\u003e An auto-updating AI Model Catalog available as a Golang Package, CLI Tool, or Server (RESTful, WebSockets, SSE).\n\n\u003cdiv align=\"center\"\u003e\n\n```\n                             ____  _                                 \n                            / ___|| |_ __ _ _ __ _ __ ___   __ _ _ __  \n                            \\___ \\| __/ _` | '__| '_ ` _ \\ / _` | '_ \\ \n                             ___) | || (_| | |  | | | | | | (_| | |_) |\n                            |____/ \\__\\__,_|_|  |_| |_| |_|\\__,_| .__/ \n                                                                |_|    \n```\n\n[![Go Version](https://img.shields.io/badge/Go-1.25+-00ADD8?style=flat\u0026logo=go)](https://go.dev)\n[![License](https://img.shields.io/badge/License-AGPL%203.0-blue)](LICENSE)\n\n[Installation](#installation) • [Quick Start](#quick-start) • [API Reference](docs/API.md) • [Contributing](CONTRIBUTING.md)\n\n\u003c/div\u003e\n\n## Table of Contents\n\n- [Why Starmap?](#why-starmap)\n- [Key Features](#key-features)\n- [Installation](#installation)\n- [Quick Start](#quick-start)\n- [Architecture](#architecture)\n- [Core Concepts](#core-concepts)\n- [Project Structure](#project-structure)\n- [Choosing Your Approach](#choosing-your-approach)\n- [CLI Usage](#cli-usage)\n- [Go Package](#go-package)\n- [Data Sources](#data-sources)\n- [Model Catalog](#model-catalog)\n- [HTTP Server](#http-server)\n- [Configuration](#configuration)\n- [Development](#development)\n- [Contributing](#contributing)\n- [API Reference](#api-reference)\n- [License](#license)\n\n## Why Starmap?\n\n### The Problem\n\nBuilding AI applications requires accurate information about models across multiple providers, but:\n\n- **Fragmented Information**: Each provider has different APIs, documentation formats, and update cycles\n- **Missing Pricing Data**: Many providers don't publish pricing through their APIs\n- **Rapid Changes**: New models launch weekly, capabilities change, prices update\n- **Integration Complexity**: Each provider requires custom code to fetch and parse model data\n- **No Single Source of Truth**: Developers must check multiple sources for complete information\n\n### The Solution\n\nStarmap provides:\n\n- **Unified Catalog**: Single interface for all AI model information\n- **Multi-Source Reconciliation**: Combines provider APIs with community data for completeness\n- **Automatic Synchronization**: Keep your catalog current with scheduled updates\n- **Flexible Storage**: From in-memory for testing to persistent for production\n- **Event-Driven Updates**: React to model changes in real-time\n- **Type-Safe Go API**: Strongly typed models with comprehensive metadata\n\n### Who Uses Starmap?\n\n- **AI Application Developers**: Discover and compare models for your use case\n- **Platform Engineers**: Maintain accurate model catalogs for your organization\n- **Tool Builders**: Integrate comprehensive model data into your products\n- **Researchers**: Track model capabilities and pricing trends\n- **Cost Optimizers**: Find the best price/performance for your workloads\n\n## Key Features\n\n✅ **Comprehensive Coverage**: 500+ models from 10+ providers\n✅ **Accurate Pricing**: Community-verified pricing data via models.dev\n✅ **Real-time Synchronization**: Automatic updates from provider APIs\n✅ **Flexible Architecture**: Simple merging or complex reconciliation\n✅ **Multiple Interfaces**: CLI, Go package, and HTTP Server (REST + WebSocket + SSE)\n✅ **Production Ready**: Thread-safe, well-tested, actively maintained  \n\n## Installation\n\n### CLI Tool\n\n```bash\n# Homebrew (macOS/Linux)\nbrew install agentstation/tap/starmap\n\n# Or install from source\ngo install github.com/agentstation/starmap/cmd/starmap@latest\n\n# Verify installation\nstarmap version\n```\n\n### Go Package\n\n```bash\n# Add to your project\ngo get github.com/agentstation/starmap\n```\n\n### Docker\n\nStarmap provides production-ready container images built with [ko](https://ko.build) using Google's secure Chainguard base images (~2MB, zero CVEs).\n\n**Quick Start:**\n\n```bash\n# Pull and run the HTTP server\ndocker run -p 8080:8080 ghcr.io/agentstation/starmap:latest serve --host 0.0.0.0\n\n# Or use docker-compose (recommended)\ndocker-compose up\n```\n\n**Using Docker Compose:**\n\n```bash\n# 1. Copy environment template\ncp .env.example .env\n\n# 2. Edit .env with your API keys (optional)\nnano .env\n\n# 3. Start the server\ndocker-compose up -d\n\n# 4. Check health\ncurl http://localhost:8080/api/v1/health\n```\n\n**Available Images:**\n\n- `ghcr.io/agentstation/starmap:latest` - Latest stable release\n- `ghcr.io/agentstation/starmap:v0.0.17` - Specific version\n- `ghcr.io/agentstation/starmap:0.0.17` - Specific version (no v prefix)\n\n**Supported Platforms:**\n- `linux/amd64` (x86_64)\n- `linux/arm64` (ARM 64-bit)\n\nSee [docs/DOCKER.md](docs/DOCKER.md) for detailed deployment guides including Kubernetes, security hardening, and production best practices.\n\n## Quick Start\n\n### CLI: List Available Models\n\n```bash\n# List all models\nstarmap models list\n\n# Filter by provider\nstarmap models list --provider openai\n\n# Search by capability\nstarmap models list --capability vision\n\n# Export as JSON\nstarmap models list --format json \u003e models.json\n```\n\n### Go Package: Basic Usage\n\n```go\npackage main\n\nimport (\n    \"fmt\"\n    \"log\"\n    \n    \"github.com/agentstation/starmap\"\n)\n\nfunc main() {\n    // Create starmap with embedded catalog\n    sm, err := starmap.New()\n    if err != nil {\n        log.Fatal(err)\n    }\n    \n    // Get the catalog\n    catalog, err := sm.Catalog()\n    if err != nil {\n        log.Fatal(err)\n    }\n    \n    // Find GPT-4 model\n    model, err := catalog.Model(\"gpt-4o\")\n    if err == nil {\n        fmt.Printf(\"Model: %s\\n\", model.Name)\n        fmt.Printf(\"Context: %d tokens\\n\", model.ContextWindow)\n        fmt.Printf(\"Input Price: $%.2f/1M tokens\\n\", model.Pricing.Input)\n    }\n}\n```\n\n### Sync with Provider APIs\n\n```bash\n# Set up API keys\nexport OPENAI_API_KEY=sk-...\nexport ANTHROPIC_API_KEY=sk-ant-...\n\n# Update catalog from all providers\nstarmap update\n\n# Update specific provider with auto-approve\nstarmap update openai -y\n```\n\n## Architecture\n\nStarmap uses a layered architecture with clean separation of concerns:\n\n- **User Interfaces**: CLI, Go package, and HTTP Server (REST + WebSocket + SSE)\n- **Core System**: Catalog management, reconciliation engine, and event hooks\n- **Data Sources**: Provider APIs, models.dev, embedded catalog, and local files\n- **Storage Backends**: Memory, filesystem, embedded, or custom (S3, GCS, etc.)\n\nFor detailed architecture diagrams, design principles, and implementation details, see **[ARCHITECTURE.md](docs/ARCHITECTURE.md)**.\n\n## Core Concepts\n\nStarmap's core abstractions provide a clean separation of concerns:\n\n### 1. Catalog\nThe fundamental abstraction for model data storage and access. Provides CRUD operations, multiple storage backends, and thread-safe collections. See [Catalog Package Documentation](pkg/catalogs/README.md).\n\n### 2. Source\nAbstraction for fetching data from external systems (provider APIs, models.dev, local files). Each implements a common interface for consistent data access.\n\n### 3. Reconciliation\nIntelligent multi-source data merging with field-level authority, provenance tracking, and conflict resolution. See [Reconciliation Package Documentation](pkg/reconciler/README.md).\n\n### 4. Model\nComprehensive AI model specification including capabilities (chat, vision, audio), pricing (token costs), limits (context window, rate limits), and metadata. See [pkg/catalogs/README.md](pkg/catalogs/README.md) for the complete Model structure.\n\nFor detailed component design and interaction patterns, see **[ARCHITECTURE.md § System Components](docs/ARCHITECTURE.md#system-components)**.\n\n## Project Structure\n\nStarmap follows Go best practices with clear package separation:\n\n- **`pkg/`** - Public API packages ([catalogs](pkg/catalogs/), [reconciler](pkg/reconciler/), [sources](pkg/sources/), [errors](pkg/errors/), etc.)\n- **`internal/`** - Internal implementations (providers, embedded data, transport)\n- **`cmd/starmap/`** - CLI application\n\nSee [CONTRIBUTING.md § Project Structure](CONTRIBUTING.md#project-structure) for detailed directory layout and dependency rules.\n\n## Choosing Your Approach\n\nStarmap provides two levels of data management complexity:\n\n**Use [Catalog Package](pkg/catalogs/README.md) (Simple) When:**\n- ✅ Merging embedded catalog with local overrides\n- ✅ Combining two provider responses\n- ✅ Testing with mock data\n- ✅ Building simple tools\n\n**Use [Reconciliation Package](pkg/reconciler/README.md) (Complex) When:**\n- ✅ Syncing with multiple provider APIs\n- ✅ Integrating models.dev for pricing\n- ✅ Different sources own different fields\n- ✅ Need audit trail of data sources\n- ✅ Building production systems\n\nFor architecture details and reconciliation strategies, see **[ARCHITECTURE.md § Reconciliation System](docs/ARCHITECTURE.md#reconciliation-system)**.\n\n## CLI Usage\n\n### Core Commands\n\n```bash\n# Discovery\nstarmap models list              # List all models\nstarmap providers                # List all providers\nstarmap authors                  # List all authors\n\n# Model field history\nstarmap models history gpt-4o                    # View field provenance\nstarmap models history gpt-4o --fields=Name      # Filter to specific field\nstarmap models history gpt-4o --fields=Name,ID   # Multiple fields\n\n# Update catalog\nstarmap update                  # Update all providers\nstarmap update openai           # Update specific provider\nstarmap update --dry            # Preview changes\n\n# Development\nstarmap validate                # Validate configurations\nstarmap deps check              # Check dependency status\nstarmap completion bash         # Generate shell completion\n```\n\n### Advanced Update Workflows\n\n```bash\n# Development: Use file-based catalog\nstarmap update groq --input-dir ./catalog --dry\n\n# Production: Fresh update with auto-approval\nstarmap update --force -y\n\n# Custom directories\nstarmap update --input ./dev --output ./prod\n\n# Specific sources only\nstarmap update --sources \"Provider APIs,models.dev (git)\"\n```\n\n### Dependency Management\n\nSome data sources require external tools. Starmap handles missing dependencies gracefully:\n\n```bash\n# Interactive (default) - Prompts to install or skip\nstarmap update\n\n# CI/CD - Skip sources with missing dependencies\nstarmap update --skip-dep-prompts\n\n# Strict mode - Fail if dependencies missing\nstarmap update --require-all-sources --skip-dep-prompts\n\n# Auto-install - Install dependencies automatically\nstarmap update --auto-install-deps\n```\n\n**Available Flags:**\n- `--auto-install-deps` - Automatically install missing dependencies\n- `--skip-dep-prompts` - Skip sources with missing dependencies without prompting\n- `--require-all-sources` - Fail if any dependencies are missing (CI/CD mode)\n\n**Common Scenario:** The `models_dev_git` source requires `bun` for building. If missing, Starmap offers to install it or falls back to `models_dev_http` which provides the same data without dependencies.\n\n#### Checking Dependencies\n\nUse `starmap deps check` to verify dependency status before running updates:\n\n```bash\n# Check all dependencies\nstarmap deps check\n\n# JSON output for tooling\nstarmap deps check --format json\n\n# YAML output\nstarmap deps check --format yaml\n```\n\nThe command shows:\n- ✅ Available dependencies with version and path\n- ❌ Missing dependencies with installation instructions\n- ℹ️  Sources that don't require any dependencies\n\nExample output:\n```\nDependency Status:\n\n┌────────────────────────────┬────────────────────────┬──────────────────┬─────────┬───────────────────────┐\n│           SOURCE           │       DEPENDENCY       │      STATUS      │ VERSION │         PATH          │\n├────────────────────────────┼────────────────────────┼──────────────────┼─────────┼───────────────────────┤\n│ local_catalog (optional)   │ -                      │ ✅ None required │ -       │ -                     │\n│ providers                  │ -                      │ ✅ None required │ -       │ -                     │\n│ models_dev_git (optional)  │ Bun JavaScript runtime │ ✅ Available     │ 1.2.21  │ /opt/homebrew/bin/bun │\n│                            │ Git version control    │ ✅ Available     │ 2.51.0  │ /opt/homebrew/bin/git │\n│ models_dev_http (optional) │ -                      │ ✅ None required │ -       │ -                     │\n└────────────────────────────┴────────────────────────┴──────────────────┴─────────┴───────────────────────┘\n\nAdditional Information:\n\nBun JavaScript runtime (models_dev_git):\n  Description: Fast JavaScript runtime for building models.dev data\n  Why needed:  Builds api.json from models.dev TypeScript source\n\nSummary:\n┌────────────────────────────────┬───────┐\n│             STATUS             │ COUNT │\n├────────────────────────────────┼───────┤\n│ ✅ Available                   │ 2     │\n│ ℹ️ Sources without dependencies │ 3     │\n└────────────────────────────────┴───────┘\n✅ All required dependencies are available.\n```\n\n### Environment Setup\n\n```bash\n# Required for provider syncing\nexport OPENAI_API_KEY=sk-...\nexport ANTHROPIC_API_KEY=sk-ant-...\nexport GOOGLE_API_KEY=...\nexport GROQ_API_KEY=...\n\n# Optional for Google Vertex\nexport GOOGLE_VERTEX_PROJECT=my-project\nexport GOOGLE_VERTEX_LOCATION=us-central1\n```\n\n## Go Package\n\n### Installation and Setup\n\n```go\nimport (\n    \"github.com/agentstation/starmap\"\n    \"github.com/agentstation/starmap/pkg/catalogs\"\n    \"github.com/agentstation/starmap/pkg/reconciler\"\n)\n```\n\n### Basic Usage Patterns\n\n#### Simple Catalog Access\n```go\n// Default embedded catalog with auto-updates\nsm, _ := starmap.New()\ncatalog, _ := sm.Catalog()\n\n// Query models\nmodel, _ := catalog.Model(\"claude-3-opus\")\nfmt.Printf(\"Context: %d tokens\\n\", model.ContextWindow)\n```\n\n#### Event-Driven Updates\n```go\n// React to catalog changes\nsm.OnModelAdded(func(model catalogs.Model) {\n    log.Printf(\"New model: %s\", model.ID)\n})\n\nsm.OnModelUpdated(func(old, new catalogs.Model) {\n    if old.Pricing.Input != new.Pricing.Input {\n        log.Printf(\"Price changed for %s\", new.ID)\n    }\n})\n```\n\n#### Custom Storage Backend\n```go\n// Use filesystem for development\ncatalog, _ := catalogs.New(\n    catalogs.WithPath(\"./my-catalog\"),\n)\n\nsm, _ := starmap.New(\n    starmap.WithInitialCatalog(catalog),\n)\n```\n\n#### Syncing with Provider APIs\n```go\n// Sync with all configured provider APIs\nresult, err := sm.Sync(ctx,\n    sync.WithProviders(\"openai\", \"anthropic\"),\n    sync.WithDryRun(false),\n)\n\nif err != nil {\n    log.Fatal(err)\n}\n\nfmt.Printf(\"Added: %d models\\n\", result.Added)\nfmt.Printf(\"Updated: %d models\\n\", result.Updated)\nfmt.Printf(\"Removed: %d models\\n\", result.Removed)\n```\n\n### Advanced Patterns\n\n#### Automatic Updates with Custom Logic\n```go\nupdateFunc := func(current catalogs.Catalog) (catalogs.Catalog, error) {\n    // Custom sync logic\n    // Could call provider APIs, merge data, etc.\n    return updatedCatalog, nil\n}\n\nsm, _ := starmap.New(\n    starmap.WithAutoUpdateInterval(30 * time.Minute),\n    starmap.WithUpdateFunc(updateFunc),\n)\n```\n\n#### Filtering and Querying\n```go\n// Find vision-capable models under $10/M tokens\nmodels := catalog.Models()\nmodels.ForEach(func(id string, model *catalogs.Model) bool {\n    if model.Features.Vision \u0026\u0026 model.Pricing.Input \u003c 10 {\n        fmt.Printf(\"Vision model: %s ($%.2f/M)\\n\", \n            model.ID, model.Pricing.Input)\n    }\n    return true\n})\n```\n\n## Data Sources\n\nStarmap combines data from multiple sources:\n\n- **Provider APIs**: Real-time model availability (OpenAI, Anthropic, Google, etc.)\n- **models.dev**: Community-verified pricing and metadata ([models.dev](https://models.dev))\n- **Embedded Catalog**: Baseline data shipped with starmap\n- **Local Files**: User customizations and overrides\n\nFor detailed source hierarchy, authority rules, and how sources work together, see **[ARCHITECTURE.md § Data Sources](docs/ARCHITECTURE.md#data-sources)**.\n\n## Model Catalog\n\nStarmap includes 500+ models from 10+ providers (OpenAI, Anthropic, Google, Groq, DeepSeek, Cerebras, and more). Each package includes comprehensive documentation in its README.\n\n## HTTP Server\n\nStart a production-ready REST API server for programmatic catalog access:\n\n```bash\n# Start on default port 8080\nstarmap serve\n\n# Custom configuration\nstarmap serve --port 3000 --cors --auth --rate-limit 100\n\n# With specific CORS origins\nstarmap serve --cors-origins \"https://example.com,https://app.example.com\"\n```\n\n**Features:**\n- **RESTful API**: Models, providers, search endpoints with filtering\n- **Real-time Updates**: WebSocket (`/api/v1/updates/ws`) and SSE (`/api/v1/updates/stream`)\n- **Performance**: In-memory caching, rate limiting (per-IP)\n- **Security**: Optional API key authentication, CORS support\n- **Monitoring**: Health checks (`/health`, `/api/v1/ready`), metrics endpoint\n- **Documentation**: OpenAPI 3.1 specs at `/api/v1/openapi.json`\n\n**API Endpoints:**\n```bash\n# Models\nGET  /api/v1/models              # List with filtering\nGET  /api/v1/models/{id}         # Get specific model\nPOST /api/v1/models/search       # Advanced search\n\n# Providers\nGET  /api/v1/providers           # List providers\nGET  /api/v1/providers/{id}      # Get specific provider\nGET  /api/v1/providers/{id}/models  # Get provider's models\n\n# Admin\nPOST /api/v1/update              # Trigger catalog sync\nGET  /api/v1/stats               # Catalog statistics\n\n# Health\nGET  /health                     # Liveness probe\nGET  /api/v1/ready               # Readiness check\n```\n\n**Configuration Flags:**\n- `--port`: Server port (default: 8080)\n- `--host`: Bind address (default: localhost)\n- `--cors`: Enable CORS for all origins\n- `--cors-origins`: Specific CORS origins (comma-separated)\n- `--auth`: Enable API key authentication\n- `--rate-limit`: Requests per minute per IP (default: 100)\n- `--cache-ttl`: Cache TTL in seconds (default: 300)\n\n**Environment Variables:**\n```bash\nHTTP_PORT=8080\nHTTP_HOST=0.0.0.0\nSTARMAP_API_KEY=your-api-key  # If --auth enabled\n```\n\nFor full server documentation, see [internal/server/README.md](internal/server/README.md).\n\n## Configuration\n\n### Environment Variables\n\n```bash\n# Provider API Keys\nOPENAI_API_KEY=sk-...\nANTHROPIC_API_KEY=sk-ant-...\nGOOGLE_API_KEY=...\nGROQ_API_KEY=...\nDEEPSEEK_API_KEY=...\nCEREBRAS_API_KEY=...\n\n# Google Vertex (optional)\nGOOGLE_VERTEX_PROJECT=my-project\nGOOGLE_VERTEX_LOCATION=us-central1\nGOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json\n\n# Starmap Configuration\nSTARMAP_CONFIG=/path/to/config.yaml\nSTARMAP_CACHE_DIR=/var/cache/starmap\nSTARMAP_LOG_LEVEL=info\n```\n\n### Authentication Management\n\nCheck and verify your authentication setup:\n\n```bash\n# Check authentication status for all providers\nstarmap providers\n\n# Test credentials by making test API calls\nstarmap providers --test\n\n# Test specific provider\nstarmap providers openai --test\n\n# JSON output for automation\nstarmap providers --output json\n\n# Manage Google Cloud authentication\nstarmap auth gcloud\n```\n\nThe `providers` command shows:\n- Which providers have configured credentials\n- Authentication method (API key, ADC, OAuth)\n- Credential source (environment variable, config file, application default)\n- Missing credentials with setup instructions\n- Provider details (name, ID, location, type, models count)\n\n### Configuration File\n\n```yaml\n# ~/.starmap.yaml\nproviders:\n  openai:\n    api_key: ${OPENAI_API_KEY}\n    rate_limit: 100\n  \ncatalog:\n  type: embedded\n  auto_update: true\n  update_interval: 1h\n  \nsync:\n  sources:\n    - Provider APIs\n    - models.dev (git)\n  auto_approve: false\n  \nlogging:\n  level: info\n  format: json\n```\n\n## Development\n\nTo contribute or develop locally:\n\n```bash\ngit clone https://github.com/agentstation/starmap.git\ncd starmap\nmake all\n```\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for complete development setup, testing guidelines, and contribution process.\n\n## Contributing\n\nWe welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for:\n\n- Development setup and workflow\n- How to add new providers\n- Testing requirements\n- Pull request process\n- Code guidelines\n\nQuick links:\n- [Report Bug](https://github.com/agentstation/starmap/issues)\n- [Request Feature](https://github.com/agentstation/starmap/issues)\n- [Contributing Guide](CONTRIBUTING.md)\n\n## License\n\nThis project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).\n\nThe AGPL ensures that:\n- Source code remains open for any network use\n- Modifications must be shared with users\n- The community benefits from all improvements\n\nSee [LICENSE](LICENSE) file for full details.\n\n---\n\n\u003cdiv align=\"center\"\u003e\nBuilt with ❤️ by the Starmap Community\n\n[Report Bug](https://github.com/agentstation/starmap/issues) • [Request Feature](https://github.com/agentstation/starmap/issues) • [Join Discord](https://discord.gg/starmap)\n\u003c/div\u003e\n\n---\n\n## API Reference\n\nFor complete API documentation including all types, interfaces, and functions, see **[API.md](docs/API.md)**.\n\nQuick links:\n- [Client Interface](docs/API.md#client)\n- [Catalog Operations](docs/API.md#catalog)\n- [Sync and Updates](docs/API.md#updater)\n- [Event Hooks](docs/API.md#hooks)\n- [Configuration Options](docs/API.md#option)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagentstation%2Fstarmap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagentstation%2Fstarmap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagentstation%2Fstarmap/lists"}