Skip to content

Phase 3: Community & Ecosystem (v0.3.0) #29

@jkbennitt

Description

@jkbennitt

Phase 3 roadmap for the Felix Agent SDK. Builds on v0.2.1 (824 tests, 34 exports, 10 examples).


Confirmed

MCP Server (feat/mcp-server)

Wrap Felix workflows as MCP tools so Claude Desktop, Cursor, Windsurf, and other MCP clients can invoke them natively.

Three tools:

  • run_workflow — accepts task description + template name or full config JSON → runs workflow → returns synthesis, confidence, metadata
  • list_templates — returns available workflow templates (research, analysis, review) with descriptions and default configs
  • validate_config — validates a workflow config without running it, returns errors/warnings

Uses the official Anthropic mcp SDK. Reuses the existing CLI yaml_loader for config parsing and run_command provider resolution. Adds felix-mcp console script entry point.

Community Infrastructure (feat/community)

  • Expanded CONTRIBUTING.md: how to add memory backends, observability adapters, MCP tools. Code style guide.
  • .github/ISSUE_TEMPLATE/: bug report + feature request templates
  • .github/PULL_REQUEST_TEMPLATE.md: PR checklist
  • New examples: 11_mcp_server.py, 12_vector_search.py, 13_observability.py
  • CHANGELOG.md v0.3.0 section, version bump

Under Discussion — Feedback Requested

Vector DB Backends (feat/vector-backends)

Add semantic similarity search to KnowledgeStore via pluggable vector backends (ChromaDB, Pinecone).

What it adds:

  • ChromaBackend(BaseBackend) and PineconeBackend(BaseBackend) implementing the existing 11-method backend interface
  • BaseEmbeddingProvider interface with embed(text) → list[float] for provider-agnostic embeddings
  • search_vector(table, embedding, limit) method on BaseBackend (optional, default NotImplementedError)
  • Wires into KnowledgeStore.semantic_search() which currently raises NotImplementedError

Open question: Is this the right direction? The current BaseBackend.search_text() with FTS5 handles keyword search well. Adding vector search means users need an embedding model (OpenAI, local sentence-transformers) just to use the memory system. Is the complexity worth it at this stage, or should we focus on making the existing FTS5 search smarter first?

Observability Adapters (feat/observability)

Bridge EventBus events to production monitoring: OpenTelemetry spans/metrics, DataDog custom events/StatsD, Prometheus counters/histograms.

What it adds:

  • BaseObservabilityAdapter(ABC) following the EventLogBridge pattern (subscribe to EventBus, transform events, provide detach())
  • OpenTelemetryAdapter — workflow = parent span, rounds = child spans, tasks = leaf spans. Counters for rounds/tokens/confidence.
  • DataDogAdapter — DogStatsD metrics + custom events with agent_type/phase tags
  • PrometheusAdapterfelix_workflow_rounds_total, felix_task_confidence, felix_tokens_total gauges/counters

Open question: Are three adapters too many for a v0.3.0? Should we ship just OpenTelemetry (most universal) and let DataDog/Prometheus be community contributions? Or is there a different monitoring approach (structured JSON logs piped to any backend) that would be more practical?


Branching Strategy

Same as Phase 2: dev/phase-3 integration branch, feature PRs merge into it, final PR to main.

Stats Target

  • Tests: 900+
  • Public exports: ~42
  • Examples: 13

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions