{
  "schema": "agency.parts/catalog/v1",
  "source": "https://agency.parts",
  "categories": [
    {
      "name": "Identity",
      "question": "Who is acting?"
    },
    {
      "name": "Goals",
      "question": "What is the objective?"
    },
    {
      "name": "Perception",
      "question": "What is happening?"
    },
    {
      "name": "Intelligence",
      "question": "How do we reason?"
    },
    {
      "name": "Memory",
      "question": "What can be recalled?"
    },
    {
      "name": "World Model",
      "question": "How does the world work?"
    },
    {
      "name": "Planning",
      "question": "What comes next?"
    },
    {
      "name": "Tools",
      "question": "Which capabilities are available?"
    },
    {
      "name": "Authority",
      "question": "What is permitted?"
    },
    {
      "name": "Resources",
      "question": "What can we afford?"
    },
    {
      "name": "Action",
      "question": "What changes in the world?"
    },
    {
      "name": "Feedback",
      "question": "Did it work?"
    }
  ],
  "components": [
    {
      "id": "keycloak",
      "name": "Keycloak",
      "category": "Identity",
      "type": "Identity management",
      "description": "Self-hosted identity and access management.",
      "tags": [
        "Authentication",
        "SSO",
        "OIDC"
      ],
      "url": "https://www.keycloak.org/",
      "level": "starter"
    },
    {
      "id": "authentik",
      "name": "Authentik",
      "category": "Identity",
      "type": "Identity platform",
      "description": "Authentication, user directories, and application access.",
      "tags": [
        "SSO",
        "OIDC",
        "Access"
      ],
      "url": "https://goauthentik.io/",
      "level": "starter"
    },
    {
      "id": "zitadel",
      "name": "ZITADEL",
      "category": "Identity",
      "type": "Identity platform",
      "description": "Identity infrastructure for applications and services.",
      "tags": [
        "OAuth",
        "OIDC",
        "API"
      ],
      "url": "https://zitadel.com/",
      "level": "advanced"
    },
    {
      "id": "spiffe",
      "name": "SPIFFE",
      "category": "Identity",
      "type": "Workload identity",
      "description": "Portable identities for software workloads.",
      "tags": [
        "mTLS",
        "Workloads",
        "Identity"
      ],
      "url": "https://spiffe.io/",
      "level": "advanced"
    },
    {
      "id": "pydantic",
      "name": "Pydantic",
      "category": "Goals",
      "type": "Schema validation",
      "description": "Typed structures for goals, tasks, and constraints.",
      "tags": [
        "Python",
        "Schemas",
        "Validation"
      ],
      "url": "https://pydantic.dev/docs/validation/latest/get-started/",
      "level": "starter"
    },
    {
      "id": "json-schema",
      "name": "JSON Schema",
      "category": "Goals",
      "type": "Data contracts",
      "description": "Standardized descriptions of objectives and inputs.",
      "tags": [
        "Schema",
        "Validation",
        "Portable"
      ],
      "url": "https://json-schema.org/",
      "level": "starter"
    },
    {
      "id": "guardrails-ai",
      "name": "Guardrails AI",
      "category": "Goals",
      "type": "Output validation",
      "description": "Validate structured model outputs against requirements.",
      "tags": [
        "Validation",
        "Constraints",
        "Python"
      ],
      "url": "https://www.guardrailsai.com/",
      "level": "advanced"
    },
    {
      "id": "instructor",
      "name": "Instructor",
      "category": "Goals",
      "type": "Structured extraction",
      "description": "Get structured responses from model calls.",
      "tags": [
        "Schemas",
        "LLM",
        "Python"
      ],
      "url": "https://python.useinstructor.com/",
      "level": "starter"
    },
    {
      "id": "opencv",
      "name": "OpenCV",
      "category": "Perception",
      "type": "Computer vision",
      "description": "Build image and video perception pipelines.",
      "tags": [
        "Vision",
        "Images",
        "Python"
      ],
      "url": "https://opencv.org/",
      "level": "starter"
    },
    {
      "id": "whisper-cpp",
      "name": "whisper.cpp",
      "category": "Perception",
      "type": "Speech processing",
      "description": "Local speech recognition with optimized runtimes.",
      "tags": [
        "Audio",
        "Local",
        "Speech"
      ],
      "url": "https://github.com/ggml-org/whisper.cpp",
      "level": "starter"
    },
    {
      "id": "gstreamer",
      "name": "GStreamer",
      "category": "Perception",
      "type": "Media pipeline",
      "description": "Process real-time audio and video streams.",
      "tags": [
        "Streams",
        "Audio",
        "Video"
      ],
      "url": "https://gstreamer.freedesktop.org/",
      "level": "advanced"
    },
    {
      "id": "tesseract",
      "name": "Tesseract",
      "category": "Perception",
      "type": "Document OCR",
      "description": "Extract text from image-based documents.",
      "tags": [
        "OCR",
        "Documents",
        "Local"
      ],
      "url": "https://github.com/tesseract-ocr/tesseract",
      "level": "starter"
    },
    {
      "id": "ollama",
      "name": "Ollama",
      "category": "Intelligence",
      "type": "Model runtime",
      "description": "Run supported language models locally.",
      "tags": [
        "Local",
        "Models",
        "Inference"
      ],
      "url": "https://ollama.com/",
      "level": "starter"
    },
    {
      "id": "llama-cpp",
      "name": "llama.cpp",
      "category": "Intelligence",
      "type": "Inference engine",
      "description": "Efficient on-device language model inference.",
      "tags": [
        "Local",
        "Inference",
        "CPU"
      ],
      "url": "https://github.com/ggml-org/llama.cpp",
      "level": "advanced"
    },
    {
      "id": "vllm",
      "name": "vLLM",
      "category": "Intelligence",
      "type": "Model serving",
      "description": "High-throughput serving for compatible models.",
      "tags": [
        "GPU",
        "Inference",
        "Serving"
      ],
      "url": "https://docs.vllm.ai/",
      "level": "advanced"
    },
    {
      "id": "litellm",
      "name": "LiteLLM",
      "category": "Intelligence",
      "type": "Model gateway",
      "description": "Unified interface across model providers.",
      "tags": [
        "Gateway",
        "API",
        "Models"
      ],
      "url": "https://docs.litellm.ai/",
      "level": "starter"
    },
    {
      "id": "pgvector",
      "name": "pgvector",
      "category": "Memory",
      "type": "Vector extension",
      "description": "Store and query embeddings inside PostgreSQL.",
      "tags": [
        "Postgres",
        "Vectors",
        "SQL"
      ],
      "url": "https://github.com/pgvector/pgvector",
      "level": "starter"
    },
    {
      "id": "qdrant",
      "name": "Qdrant",
      "category": "Memory",
      "type": "Vector database",
      "description": "Semantic retrieval with vector search.",
      "tags": [
        "Retrieval",
        "Vectors",
        "Search"
      ],
      "url": "https://qdrant.tech/",
      "level": "starter"
    },
    {
      "id": "chroma",
      "name": "Chroma",
      "category": "Memory",
      "type": "Embedding store",
      "description": "Build embedding retrieval into applications.",
      "tags": [
        "Embeddings",
        "RAG",
        "Python"
      ],
      "url": "https://www.trychroma.com/",
      "level": "starter"
    },
    {
      "id": "redis",
      "name": "Redis",
      "category": "Memory",
      "type": "Fast data store",
      "description": "Low-latency state, caching, and data structures.",
      "tags": [
        "Cache",
        "State",
        "Realtime"
      ],
      "url": "https://redis.io/",
      "level": "starter"
    },
    {
      "id": "neo4j",
      "name": "Neo4j",
      "category": "World Model",
      "type": "Knowledge graph",
      "description": "Model entities, relationships, and connected facts.",
      "tags": [
        "Graph",
        "Relationships",
        "Knowledge"
      ],
      "url": "https://neo4j.com/",
      "level": "advanced"
    },
    {
      "id": "networkx",
      "name": "NetworkX",
      "category": "World Model",
      "type": "Graph analytics",
      "description": "Explore structured networks and their relationships.",
      "tags": [
        "Graphs",
        "Python",
        "Analysis"
      ],
      "url": "https://networkx.org/",
      "level": "starter"
    },
    {
      "id": "rdflib",
      "name": "RDFLib",
      "category": "World Model",
      "type": "Semantic data",
      "description": "Represent and query linked data in Python.",
      "tags": [
        "RDF",
        "Knowledge",
        "Python"
      ],
      "url": "https://rdflib.readthedocs.io/",
      "level": "advanced"
    },
    {
      "id": "apache-jena",
      "name": "Apache Jena",
      "category": "World Model",
      "type": "Semantic framework",
      "description": "Build systems around RDF graphs and SPARQL.",
      "tags": [
        "RDF",
        "SPARQL",
        "Knowledge"
      ],
      "url": "https://jena.apache.org/",
      "level": "advanced"
    },
    {
      "id": "langgraph",
      "name": "LangGraph",
      "category": "Planning",
      "type": "Agent orchestration",
      "description": "Build stateful workflows and agent graphs.",
      "tags": [
        "Workflows",
        "State",
        "Python"
      ],
      "url": "https://www.langchain.com/langgraph",
      "level": "starter"
    },
    {
      "id": "autogen",
      "name": "AutoGen",
      "category": "Planning",
      "type": "Multi-agent framework",
      "description": "Coordinate conversations among software agents.",
      "tags": [
        "Multi-agent",
        "Workflows",
        "Python"
      ],
      "url": "https://microsoft.github.io/autogen/stable/",
      "level": "advanced"
    },
    {
      "id": "crewai",
      "name": "CrewAI",
      "category": "Planning",
      "type": "Multi-agent framework",
      "description": "Define agent teams, tasks, and orchestrations.",
      "tags": [
        "Teams",
        "Agents",
        "Python"
      ],
      "url": "https://www.crewai.com/",
      "level": "starter"
    },
    {
      "id": "haystack",
      "name": "Haystack",
      "category": "Planning",
      "type": "Pipeline framework",
      "description": "Compose retrieval and model processing pipelines.",
      "tags": [
        "RAG",
        "Pipelines",
        "Python"
      ],
      "url": "https://haystack.deepset.ai/",
      "level": "starter"
    },
    {
      "id": "fastmcp",
      "name": "FastMCP",
      "category": "Tools",
      "type": "MCP framework",
      "description": "Build interfaces that expose tools to agents.",
      "tags": [
        "MCP",
        "Tools",
        "Python"
      ],
      "url": "https://gofastmcp.com/",
      "level": "starter"
    },
    {
      "id": "playwright",
      "name": "Playwright",
      "category": "Tools",
      "type": "Browser automation",
      "description": "Programmatically interact with and test browsers.",
      "tags": [
        "Browser",
        "Automation",
        "Testing"
      ],
      "url": "https://playwright.dev/",
      "level": "starter"
    },
    {
      "id": "n8n",
      "name": "n8n",
      "category": "Tools",
      "type": "Workflow automation",
      "description": "Connect external services and automate workflows.",
      "tags": [
        "Integrations",
        "Workflows",
        "API"
      ],
      "url": "https://n8n.io/",
      "level": "starter"
    },
    {
      "id": "temporal",
      "name": "Temporal",
      "category": "Tools",
      "type": "Durable execution",
      "description": "Coordinate long-running, fault-tolerant workflows.",
      "tags": [
        "Reliability",
        "Workflows",
        "Execution"
      ],
      "url": "https://temporal.io/",
      "level": "advanced"
    },
    {
      "id": "open-policy-agent",
      "name": "Open Policy Agent",
      "category": "Authority",
      "type": "Policy engine",
      "description": "Evaluate authorization decisions using declarative policies.",
      "tags": [
        "Policies",
        "Rego",
        "Guardrails"
      ],
      "url": "https://www.openpolicyagent.org/",
      "level": "advanced"
    },
    {
      "id": "casbin",
      "name": "Casbin",
      "category": "Authority",
      "type": "Authorization library",
      "description": "Role- and attribute-based permissions for applications.",
      "tags": [
        "RBAC",
        "Permissions",
        "Policies"
      ],
      "url": "https://casbin.apache.org/",
      "level": "starter"
    },
    {
      "id": "hashicorp-vault",
      "name": "HashiCorp Vault",
      "category": "Authority",
      "type": "Secrets management",
      "description": "Secure access to sensitive credentials and keys.",
      "tags": [
        "Secrets",
        "Credentials",
        "Security"
      ],
      "url": "https://developer.hashicorp.com/vault",
      "level": "advanced"
    },
    {
      "id": "openfga",
      "name": "OpenFGA",
      "category": "Authority",
      "type": "Authorization system",
      "description": "Fine-grained authorization based on relationships.",
      "tags": [
        "Permissions",
        "Relationships",
        "Access"
      ],
      "url": "https://openfga.dev/",
      "level": "advanced"
    },
    {
      "id": "docker",
      "name": "Docker",
      "category": "Resources",
      "type": "Container runtime",
      "description": "Package and run reproducible application environments.",
      "tags": [
        "Containers",
        "Deployment",
        "Local"
      ],
      "url": "https://www.docker.com/",
      "level": "starter"
    },
    {
      "id": "kubernetes",
      "name": "Kubernetes",
      "category": "Resources",
      "type": "Orchestration",
      "description": "Operate container workloads across infrastructure.",
      "tags": [
        "Scaling",
        "Containers",
        "Cloud"
      ],
      "url": "https://kubernetes.io/",
      "level": "advanced"
    },
    {
      "id": "ray",
      "name": "Ray",
      "category": "Resources",
      "type": "Distributed compute",
      "description": "Scale Python tasks and distributed AI workloads.",
      "tags": [
        "Python",
        "Distributed",
        "Compute"
      ],
      "url": "https://www.ray.io/",
      "level": "advanced"
    },
    {
      "id": "opentofu",
      "name": "OpenTofu",
      "category": "Resources",
      "type": "Infrastructure as code",
      "description": "Declare and manage infrastructure configuration.",
      "tags": [
        "IaC",
        "Deployment",
        "Cloud"
      ],
      "url": "https://opentofu.org/",
      "level": "advanced"
    },
    {
      "id": "ros-2",
      "name": "ROS 2",
      "category": "Action",
      "type": "Robotics framework",
      "description": "Connect software to robotic capabilities and control.",
      "tags": [
        "Robotics",
        "Hardware",
        "Control"
      ],
      "url": "https://docs.ros.org/",
      "level": "advanced"
    },
    {
      "id": "node-red",
      "name": "Node-RED",
      "category": "Action",
      "type": "Event automation",
      "description": "Visually connect events, services, and devices.",
      "tags": [
        "IoT",
        "Events",
        "Automation"
      ],
      "url": "https://nodered.org/",
      "level": "starter"
    },
    {
      "id": "mosquitto",
      "name": "Mosquitto",
      "category": "Action",
      "type": "MQTT broker",
      "description": "Transport device and sensor messages via MQTT.",
      "tags": [
        "MQTT",
        "IoT",
        "Devices"
      ],
      "url": "https://mosquitto.org/",
      "level": "starter"
    },
    {
      "id": "home-assistant",
      "name": "Home Assistant",
      "category": "Action",
      "type": "Device automation",
      "description": "Coordinate supported connected devices and automations.",
      "tags": [
        "IoT",
        "Automation",
        "Local"
      ],
      "url": "https://www.home-assistant.io/",
      "level": "starter"
    },
    {
      "id": "opentelemetry",
      "name": "OpenTelemetry",
      "category": "Feedback",
      "type": "Observability",
      "description": "Collect traces, metrics, and logs across systems.",
      "tags": [
        "Traces",
        "Metrics",
        "Logs"
      ],
      "url": "https://opentelemetry.io/",
      "level": "advanced"
    },
    {
      "id": "langfuse",
      "name": "Langfuse",
      "category": "Feedback",
      "type": "LLM observability",
      "description": "Trace and evaluate language-model applications.",
      "tags": [
        "Traces",
        "Evaluations",
        "LLM"
      ],
      "url": "https://langfuse.com/",
      "level": "starter"
    },
    {
      "id": "arize-phoenix",
      "name": "Arize Phoenix",
      "category": "Feedback",
      "type": "AI observability",
      "description": "Inspect and evaluate AI application behavior.",
      "tags": [
        "Evaluation",
        "Traces",
        "Quality"
      ],
      "url": "https://arize.com/phoenix/",
      "level": "starter"
    },
    {
      "id": "promptfoo",
      "name": "Promptfoo",
      "category": "Feedback",
      "type": "Model evaluation",
      "description": "Run evaluation cases and red-team test prompts.",
      "tags": [
        "Testing",
        "Evaluations",
        "Security"
      ],
      "url": "https://www.promptfoo.dev/",
      "level": "starter"
    }
  ]
}
