NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Go modules · #633 by repository stars
Last release today
01 Oct 2026
Ships on a steady schedule
a new release about every 9 days
Nearly every release is documented
notes for 57 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
11 months old
923 releases · first in 2025
One column per month.
Nothing published for this version
Chore(ci): migrate Docker publishing from GHCR to Docker Hub
Chore(ci): migrate Docker publishing from GHCR to Docker Hub (#133)
Change image path from ghcr.io/agent-field/agentfield-control-plane to agentfield/control-plane
Update login step to use Docker Hub credentials (DOCKERHUB_USERNAME, DOCKERHUB_TOKEN)
Remove unused OWNER env var from Docker metadata step
This enables Docker Hub analytics for image pulls. Requires adding DOCKERHUB_USERNAME and DOCKERHUB_TOKEN secrets to the repository.
🤖 Generated with Claude Code
Co-authored-by: Claude Opus 4.5 noreply@anthropic.com (e6abe54)
Add a Discord badge near the top of README.md to invite users to join the community. Uses Discord's official brand color (#5865F2) and matches the existing badge styling.
🤖 Generated with Claude Code
Co-authored-by: Claude noreply@anthropic.com (81fb1c5)
Nothing published for this version
Fix(control-plane): enforce lifecycle_status consistency with agent state
When agents go offline, the control plane was incorrectly keeping lifecycle_status as "ready" even though health_status correctly showed "inactive". This caused observability webhooks to receive inconsistent data where offline nodes appeared online based on lifecycle_status.
Changes:
The fix ensures both node_offline events and system_state_snapshot events (every 60s) correctly report lifecycle_status: "offline" for offline agents.
🤖 Generated with Claude Code
Co-authored-by: Claude noreply@anthropic.com (67c67c4)
Switch hot-reload dev setup from Docker to native Air
Removes Docker-based dev setup in favor of running Air directly in the host environment. This avoids networking issues between Docker and host (especially on WSL2 where host.docker.internal has limitations).
Changes:
Usage remains simple: ./dev.sh
🤖 Generated with Claude Code
Co-authored-by: Claude noreply@anthropic.com (670c0ba)
Hot reload controlplane local setup
Nothing published for this version
Ci: disable AI label workflow for fork compatibility
The AI label workflow fails on PRs from forked repositories because GITHUB_TOKEN lacks write permissions. Since many contributions come from forks, disabling the workflow until a proper solution (PAT or GitHub App) is implemented.
🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.5 noreply@anthropic.com (6dbc908)
Add explicit return type to useFilterState hook
fix(types): use Partial<ExecutionFilters> in UseFilterStateReturn
The convertTagsToApiFormat function returns Partial<ExecutionFilters>, so the return type interface must match to avoid TypeScript errors.
🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.5 noreply@anthropic.com
Co-authored-by: Abir Abbas abirabbas1998@gmail.com Co-authored-by: Claude Opus 4.5 noreply@anthropic.com (f2168e0)
Nothing published for this version
Feat(sdk/go, control-plane): Add Vector Memory Ops
chore(release): v0.1.26-rc.2
feat: added vector memory ops
test(handlers): add unit tests for GetVector and DeleteVector handlers
Add comprehensive test coverage for the new vector memory endpoints:
GetVectorHandler tests:
DeleteVectorHandler tests:
Also updated vectorStorageStub to track GetVector and DeleteVector parameters for assertion verification.
🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.5 noreply@anthropic.com
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Abir Abbas abirabbas1998@gmail.com Co-authored-by: Claude Opus 4.5 noreply@anthropic.com (0dd4e62)
The gh pr edit --add-label command requires issues: write permission
because labels are managed through the issues API in GitHub, even when
applied to pull requests. Without this permission, the workflow fails with:
"GraphQL: Resource not accessible by integration (addLabelsToLabelable)"
Added permissions:
issues: write - Required for adding labelscontents: read - Explicit permission for checkout🤖 Generated with Claude Code
Co-authored-by: Claude noreply@anthropic.com (26a71a4)
The PR body was being directly interpolated into a shell variable using
${{ github.event.pull_request.body }}, which caused shell parsing of
the content. When PR descriptions contained filenames like CHANGELOG.md
on their own lines, the shell would attempt to execute them as commands.
This fix passes the PR body via the env: block instead, which properly
escapes the content as an environment variable.
🤖 Generated with Claude Code
Co-authored-by: Claude noreply@anthropic.com (1e2225d)
Nothing published for this version
Feat(tests): add unit tests for vector memory handler functionality
Feat(tests): add unit tests for vector memory handler functionality (#123) (9df214d)
Feat: Add AI-assisted contribution guidelines, task issue template, AI labeling workflow, security, and support policies. (87c9297)
Nothing published for this version
Feat(observability): add webhook forwarding with dead letter queue
Add observability webhook system for forwarding events to external endpoints:
🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.5 noreply@anthropic.com
test fixes
fix(observability): node offline events now properly forwarded to webhook
Fixed a race condition where node offline events were not being forwarded to the observability webhook. The issue was in UpdateAgentStatus which called GetAgentStatus (performing a live health check) to get the "old" status. By the time the health check completed, oldStatus == newStatus, so no events were broadcast.
Changed to use GetAgentStatusSnapshot which returns cached/stored status without a live check, preserving the true "old" state for comparison.
Also added observability webhook documentation to ARCHITECTURE.md.
🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.5 noreply@anthropic.com
Add comprehensive tests to verify status change events are properly broadcast when nodes transition between active and inactive states:
These tests guard against the race condition where UpdateAgentStatus was calling GetAgentStatus (with live health check) instead of GetAgentStatusSnapshot, causing oldStatus == newStatus.
🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.5 noreply@anthropic.com
The observability webhook feature remains functional but will not be publicly documented at this time.
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com
bugfix on ts-sdk json schema return
webhook secret fix
refine webhook events
Co-authored-by: Claude Opus 4.5 noreply@anthropic.com (27cf1f7)
Fix link to AI Backend blog post (fa379c6)
Update links in README for IAM documentation (3a160de)
Update README.md (fa62719)
Nothing published for this version
Nothing published for this version
Feat(dashboard): add comprehensive observability enhancements
Added note() method for fire-and-forget execution logging
Added note() method for fire-and-forget execution logging (#100) (55fdcf1)
URL-encode badge endpoint and add cache control (8a4c970)
Fix shields.io badge: separate badge.json and stats.json files (7d08183)
Add workflow to update download stats (#87)
Adds a GitHub Actions workflow to automate the collection and updating of download statistics from GitHub releases, PyPI, and NPM.
This workflow:
Add push trigger for download stats workflow
Add permissions block to download stats workflow (d400e36)
Nothing published for this version
Nothing published for this version
Chore(rag-eval): update default model to GPT-4o
Chore(rag-eval): update default model to GPT-4o (#85)
Set GPT-4o as default (reliable JSON output)
Gemini 2.5 Flash as second option
Move DeepSeek to last (can timeout)
Remove old Gemini 2.0 Flash
🤖 Generated with Claude Code
Co-authored-by: Claude Opus 4.5 noreply@anthropic.com (f49959a)
Docs: Add cross-reference links to RAG evaluator documentation (#83)
Add docs link in examples/README.md table for rag_evaluation
Add documentation callout in rag_evaluation/README.md
🤖 Generated with Claude Code
Co-authored-by: Claude Opus 4.5 noreply@anthropic.com (e51b8d4)
Reference the full deployment guides at agentfield.ai for Kubernetes and Helm deployment options.
🤖 Generated with Claude Code
Co-authored-by: Claude Opus 4.5 noreply@anthropic.com (59eaf7f)
When reasoners registered via AgentRouter call other reasoners directly (as normal async functions), the parent-child relationship was not being captured in the workflow DAG. This happened because:
This fix implements lazy-binding in AgentRouter.reasoner():
Changes:
Nothing published for this version
Deployments: Docker/Helm/Kustomize quickstarts + demo agents
Refactors the Docker deployment documentation and configuration to improve clarity and flexibility for setting up control planes and agents.
Key changes include:
host.docker.internal for host-based agents and service names for agents within the same network.control-plane/internal/config/config.go to include mapstructure tags, improving the flexibility of configuration loading.TestLoadConfig_VCRequirementsFromConfigFile to verify loading VC requirements from a configuration file.Updates the README files for Docker, Helm, and Kubernetes deployments to improve clarity and provide more streamlined quick-start guides.
The changes include:
Adds instructions for waiting for demo agents to become ready and for building/loading the Go demo agent image with Minikube.
Also includes an example of how to use the API key when authentication is enabled.
Updates the control plane deployment configuration to default AGENTFIELD_CONFIG_FILE to /dev/null.
Adjusts the kustomization file for the postgres demo overlay to use the standard patches key. (b6b0cd3)
Feat(go-sdk): add ControlPlaneMemoryBackend for distributed memory
Add a new MemoryBackend implementation that delegates storage to the control plane's /api/v1/memory/* endpoints. This enables distributed, scope-aware memory across agents.
🤖 Generated with Claude Code
Co-authored-by: Claude Opus 4.5 noreply@anthropic.com (6cd445c)
Adds a comprehensive RAG evaluation agent demonstrating:
Features:
🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.5 noreply@anthropic.com
The detailed architecture documentation is now on the website at agentfield.dev/examples/complete-agents/rag-evaluator - no need to duplicate content in the repo.
🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.5 noreply@anthropic.com
Index of all examples across Python, TypeScript, and Go with:
🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.5 noreply@anthropic.com
Co-authored-by: Claude Opus 4.5 noreply@anthropic.com (862c41e)
Nothing published for this version
Fix: use executions table for notes storage instead of workflow_executions
The note handlers (AddExecutionNoteHandler, GetExecutionNotesHandler) were querying the workflow_executions table, but execution data is actually stored in the executions table. This caused "execution not found" errors when adding or retrieving notes via app.note().
Changes:
This fixes both the SDK app.note() functionality and the UI notes panel 404 errors.
🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.5 noreply@anthropic.com
Tests were using WorkflowExecution type and StoreWorkflowExecution() to set up test data, but the handlers now use Execution type and GetExecutionRecord()/ UpdateExecutionRecord() which query the executionRecords map.
🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.5 noreply@anthropic.com
Co-authored-by: Claude Opus 4.5 noreply@anthropic.com (5dd327e)
Nothing published for this version
Fix: wire up workflow notes SSE endpoint
The StreamWorkflowNodeNotesHandler existed but was never registered in the routes. This adds the missing route registration for: GET /api/ui/v1/workflows/:workflowId/notes/events
🤖 Generated with Claude Code
Co-authored-by: Claude Opus 4.5 noreply@anthropic.com (c6f31cb)
Feat(go-sdk): add per-request API key override for AI client
Add WithAPIKey option to override the client's configured API key on a per-request basis. This brings the Go SDK to parity with the Python SDK, which supports api_key overrides in individual calls.
Changes:
🤖 Generated with Claude Code
Co-authored-by: Claude Opus 4.5 noreply@anthropic.com (4dd8a70)
Feat(go-sdk): add Memory and Note APIs for agent state and progress tracking
Add two major new capabilities to the Go SDK:
Feat: allow external contributors to run functional tests without API…
Enable external contributors to run 92% of functional tests (24/26) without requiring access to OpenRouter API keys. This makes it easier for the community to contribute while maintaining full test coverage for maintainers.
Changes:
Test coverage for external contributors: ✅ Control plane health and APIs ✅ Agent registration and discovery ✅ Multi-agent communication ✅ Memory system (all scopes) ✅ Workflow orchestration ✅ Go/TypeScript SDK integration ✅ Serverless agents ✅ Verifiable credentials
Skipped for external contributors (maintainers still run these): ⏭️ test_hello_world_with_openrouter ⏭️ test_readme_quick_start_summarize_flow
This change addresses the challenge of running CI for external contributors without exposing repository secrets while maintaining comprehensive test coverage for the core AgentField platform functionality.
The workflow was failing on push events (to main/testing branches) because it relied on github.event.pull_request.head.repo.fork which is null for push events. This caused the workflow to incorrectly fall into the else branch and fail when OPENROUTER_API_KEY wasn't set.
Changes:
Now properly handles: ✅ Fork PRs: Skip 2 OpenRouter tests, run 24/26 tests ✅ Internal PRs: Run all 26 tests with API key ✅ Push to main/testing: Run all 26 tests with API key ✅ Manual workflow dispatch: Run all 26 tests with API key
🤖 Generated with Claude Code
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
The PYTEST_ARGS variable contained single quotes around '-m "not openrouter" -v' which would be included in the environment variable value. When passed to pytest in the Docker container shell command, this caused the entire string to be treated as a single argument instead of being properly split into separate arguments.
Changed from: '-m "not openrouter" -v' Changed to: -m not openrouter -v
This allows the shell's word splitting to correctly parse the arguments when pytest $$PYTEST_ARGS is evaluated in the docker-compose command.
🤖 Generated with Claude Code
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
The previous approach of embedding -m not openrouter inside PYTEST_ARGS was fragile because shell word-splitting doesn't guarantee "not openrouter" stays together as a single argument to the -m flag.
This change introduces PYTEST_MARK_EXPR as a dedicated variable for the marker expression, which is then properly quoted when passed to pytest: pytest -m "$PYTEST_MARK_EXPR" $PYTEST_ARGS ...
Benefits:
Changes:
🤖 Generated with Claude Code
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Prevent errors when workflow runs on push events by:
This prevents "Error: Cannot read properties of null (reading 'fork')" errors on push events.
🤖 Generated with Claude Code
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Co-authored-by: Claude Sonnet 4.5 noreply@anthropic.com (01668aa)
The serve() method had import os and import urllib.parse statements
inside conditional blocks. When an explicit port was passed, the first
conditional block was skipped, but Python's scoping still saw the later
conditional imports, causing an UnboundLocalError when trying to use
os.getenv() at line 1140.
Error seen in Docker containers:
UnboundLocalError: cannot access local variable 'os' where it is not
associated with a value
This worked locally because auto_port=True executed the first code path
which included import os, but failed in Docker when passing an explicit
port value.
Fix: Move all imports to module level where they belong.
🤖 Generated with Claude Code
Co-authored-by: Claude Opus 4.5 noreply@anthropic.com (a0d0538)
Nothing published for this version
Nothing published for this version
fix(cli): fix init command input handling issues
🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.5 noreply@anthropic.com
🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.5 noreply@anthropic.com
chore: trigger CI with secrets
chore: remove manual changelog entry (auto-generated on release)
Co-authored-by: fimbulwinter sanandsankalp@gmail.com Co-authored-by: Claude Opus 4.5 noreply@anthropic.com (55d0c61)
Fix: correct parent execution ID for sub-calls in app.call()
When a reasoner calls a skill via app.call(), the X-Parent-Execution-ID header was incorrectly set to the inherited parent instead of the current execution. This caused workflow graphs to show incorrect parent-child relationships.
The fix overrides X-Parent-Execution-ID to use the current execution's ID after to_headers() is called, ensuring sub-calls are correctly attributed as children of the calling execution.
Co-authored-by: Ivan Viljoen 8543825+ivanvza@users.noreply.github.com (762142e)
Removed early adopter section from README. (054fc22)
Update README.md (dae57c7)
Update README.md (06e5cee)
Update README.md (39c2da4)
Nothing published for this version
Nothing published for this version
Add serverless agent examples and functional tests
Add serverless agent examples and functional tests
Add CLI support for serverless node registration
Fix serverless execution payload initialization
Harden serverless functional test to use CLI registration
Broaden serverless CLI functional coverage
Persist serverless invocation URLs
Ensure serverless executions hit /execute
Fix serverless agent metadata loading
Derive serverless deployment for stored agents
Honor serverless metadata during execution
Backfill serverless invocation URLs on load
Stabilize serverless agent runtime
Harden serverless functional harness
Support serverless agents via reasoners endpoint
Log serverless reasoner responses for debugging
Allow custom serverless adapters across SDKs
Normalize serverless handler responses
Fix Python serverless adapter typing
Make serverless adapter typing py3.9-safe
Fix Python serverless execution context
Simplify Python serverless calls to sync
Mark serverless Python agents connected for cross-calls
Force sync execution path in serverless handler
Handle serverless execute responses without result key
Align serverless Python relay args with child signature
feat: Add workflow performance visualizations, including agent health heatmap and execution scatter plot, and enhance UI mobile responsiveness.
chore: Remove unused Badge import from ExecutionScatterPlot.tsx and add an empty line to .gitignore. (728e4e0)
Added docker (74f111b)
Update README.md (8b580cb)
Nothing published for this version
Fix(sdk/typescript): add DID registration to enable VC generation
Restore the check to skip updating example requirements for prerelease
versions. Even though prereleases are now published to PyPI, pip install
excludes them by default per PEP 440. Users running pip install -r requirements.txt would fail without the --pre flag.
Examples should always pin to stable versions so they work out of the box.
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com
The TypeScript SDK was not registering with the DID system, causing VC generation to fail with "failed to resolve caller DID: DID not found".
This change adds DID registration to match the Python SDK's behavior:
When didEnabled is true, the agent now:
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com
Add a complete VC example demonstrating:
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com
note property from workflow.progress calls🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com
Co-authored-by: Claude noreply@anthropic.com (bd097e1)
Restore the check to skip updating example requirements for prerelease
versions. Even though prereleases are now published to PyPI, pip install
excludes them by default per PEP 440. Users running pip install -r requirements.txt would fail without the --pre flag.
Examples should always pin to stable versions so they work out of the box.
🤖 Generated with Claude Code
Co-authored-by: Claude noreply@anthropic.com (1b7d9b8)
Nothing published for this version
Feat(release): unify PyPI publishing for all releases
Publish all Python SDK releases (both prerelease and stable) to PyPI instead of using TestPyPI for prereleases.
Per PEP 440, prerelease versions (e.g., 0.1.20rc1) are excluded by
default from pip install - users must explicitly use --pre flag.
This simplifies the release process and removes the need for the
TEST_PYPI_API_TOKEN secret.
Changes:
pip install --pre for staging🤖 Generated with Claude Code
Co-authored-by: Claude noreply@anthropic.com (ebf7020)
The staging release bumped example requirements to 0.1.20-rc.1, but RC versions are published to TestPyPI, not PyPI. This caused Railway deployments to fail because pip couldn't find the package.
Revert to the last stable version (0.1.19) which is available on PyPI.
Prerelease versions are published to TestPyPI, not PyPI. If we bump example requirements.txt files to require a prerelease version, Railway deployments will fail because pip looks at PyPI by default.
Now bump_version.py only updates example requirements for stable releases, ensuring deployed examples always use versions available on PyPI. (c86bec5)
Feat(release): add two-tier staging/production release system
Implement automatic staging releases and manual production releases:
Changes:
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com
Instead of separate install.sh and install-staging.sh scripts:
Usage: Production: curl -fsSL .../install.sh | bash Staging: curl -fsSL .../install.sh | bash -s -- --staging
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com
Co-authored-by: Claude noreply@anthropic.com (3bd748d)
Add 6 new AI providers to the TypeScript SDK:
Also add explicit handling for OpenRouter and Ollama with sensible defaults.
Changes:
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com (b06b5b5)
Fix(ui): add API key header to sidebar execution details fetch
The useNodeDetails hook was making a raw fetch() call without including the X-API-Key header, causing 401 errors in staging where API key authentication is enabled. Other API calls in the codebase use fetchWrapper functions that properly inject the key. (f0ec542)
Nothing published for this version
Fix(sdk): inject API key into all HTTP requests
The Python SDK was not including the X-API-Key header in HTTP requests made through AgentFieldClient._async_request(), causing 401 errors when the control plane has authentication enabled.
This fix injects the API key into request headers automatically when:
Fixes async status updates and memory operations (vector search, etc.) that were failing with 401 Unauthorized.
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com (97673bc)
Fix(control-plane): remove redundant WebSocket origin check
The WebSocket upgrader's CheckOrigin was rejecting server-to-server connections (like from Python SDK agents) that don't have an Origin header. This caused 403 errors when agents tried to connect to memory events WebSocket endpoint with auth enabled.
The origin check was redundant because:
Removes the origin checking logic and simplifies NewMemoryEventsHandler to just take the storage provider.
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com (44f05c4)
Fix(example): use IPv4 binding for documentation-chatbot
The documentation chatbot was binding to :: (IPv6 all interfaces) which
causes Railway internal networking to fail with "connection refused" since
Railway routes traffic over IPv4.
Removed explicit host parameter to use the SDK default of 0.0.0.0 which
binds to IPv4 all interfaces.
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com (2c1b205)
The MemoryEventClient was not including the X-API-Key header when connecting to the memory events WebSocket endpoint, causing 401 errors when the control plane has authentication enabled.
Changes:
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com (eda95fc)
This reverts commit 2c1b2053e37f4fcc968ad0805b71ef89cf9d6d9d. (576a96c)
Fix(python-sdk): update test mocks for api_key parameter
Update test helpers and mocks to accept the new api_key parameter:
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com (301e276)
Comprehensive fix for API key authentication across all SDK HTTP requests:
DID Manager (did_manager.py):
VC Generator (vc_generator.py):
Agent Field Handler (agent_field_handler.py):
Agent (agent.py):
All HTTP requests to AgentField control plane now properly include authentication headers when API key is configured.
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com (2517549)
Add authentication headers to register_node(), update_health(), and get_nodes() methods that were missing X-API-Key headers in requests.
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com (0c2977d)
Add Go SDK CallLocal workflow tracking (64c6217)
Fix Python SDK to include API key in register/heartbeat requests
The SDK's AgentFieldClient stored the api_key but several methods were not including it in their HTTP requests, causing 401 errors when authentication is enabled on the control plane:
Also updated documentation-chatbot example to pass AGENTFIELD_API_KEY from environment to the Agent constructor.
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com (1e6a095)
Feat: expose api_key at Agent level and fix test lint issues
Feat: expose api_key at Agent level and fix test lint issues
Add api_key parameter to Agent class constructor
Pass api_key to AgentFieldClient for authentication
Document api_key parameter in Agent docstring
Fix unused loop variable in ensure_event_loop test fixture
Addresses reviewer feedback that api_key should be exposed at Agent level since end users don't interact directly with AgentFieldClient.
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com (6567bd0)
This adds optional API key authentication to the AgentField control plane with support in all SDKs (Python, Go, TypeScript).
Nothing published for this version
Nothing published for this version
### Other - Release workflow fix (fde0309) - Update README.md
Release workflow fix (fde0309)
Update README.md (c3cfca4)
Nothing published for this version
Chore: trigger Railway deployment for PR #39 fix
Add search term mapping for SDK/language queries to improve RAG retrieval when users ask about supported languages or SDKs.
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com (87a4d90)
Update product context to include TypeScript alongside Python and Go:
This fixes the RAG chatbot returning only Python/Go when asked about supported languages.
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com (9510d74)
Fix(vector-store): fix PostgreSQL DeleteByPrefix and update namespace defaults
Fix DeleteByPrefix to use PostgreSQL || operator for LIKE pattern (the previous approach with prefix+"%" in Go wasn't working correctly with parameter binding)
Change default namespace from "documentation" to "website-docs" to match the frontend chat API expectations
Add scope: "global" to clear_namespace API call to ensure proper scope matching
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com (cbfdf7b)
Change start command from python -m agentfield.run (doesn't exist)
to python main.py (the actual entry point).
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com (b71507c)
The previous fix used buildCommand which runs AFTER pip install. This fix overrides the install phase itself:
The issue was that buildCommand runs after the default install phase, so pip had already failed before our script ran.
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com (f8bf14b)
Railway now uses Railpack instead of Nixpacks. Update config:
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com (8c22356)
Nothing published for this version
Fix(docs-chatbot): handle PyPI race condition in Railway deploys
Add install script that waits for agentfield package to be available on PyPI before installing. This fixes the race condition where Railway deployment triggers before the release workflow finishes uploading to PyPI.
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com (e45f41d)
Feat: add delete-namespace endpoint for RAG reindexing
Adds a new DELETE /api/v1/memory/vector/namespace endpoint that allows clearing all vectors with a given namespace prefix. This enables the documentation chatbot to wipe and reindex its RAG data when docs change.
Changes:
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com (bc1f41e)
Add a ctx property to the Agent class that provides direct access to
the current execution context during reasoner/skill execution. This
enables a more ergonomic API:
Before: from agentfield.execution_context import get_current_context ctx = get_current_context() workflow_id = ctx.workflow_id
After: workflow_id = app.ctx.workflow_id
The property returns None when accessed outside of an active execution (e.g., at module level or after a request completes), matching the behavior of app.memory. This prevents accidental use of stale or placeholder context data.
Also fixes integration test fixtures to support the current monorepo structure where control-plane lives at repo root instead of apps/platform/agentfield.
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com (e01dcea)
Feat(ts-sdk): add DID client and memory helpers (4b74998)
Feat(ts-sdk): add heartbeat and local call coverage (cf228ec)
Feat(ts-sdk): scaffold typescript sdk core (09dcc62)
Chore: ignore env files (3937821)
Chore(ts-sdk): align heartbeat and memory clients, improve example env loading (fee2a7e)
Chore(ts-sdk): load env config for simulation example (9715ac5)
Chore(ts-sdk): remove AI stubs from simulation example (7b94190)
Chore(ts-sdk): make simulation example runnable via build (9a87374)
Chore(ts-sdk): fix typings, add heartbeat config, lock deps (f9af207)
The integration tests should skip gracefully in CI when the control plane cannot be built. Reverting conftest changes that caused the tests to attempt building when they should skip.
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com (f86794c)
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com (5a975fa)
Fix flaky tests (bfb86cb)
Fix(ts-sdk): normalize router IDs to align with control plane (7c36c8b)
Fix(ts-sdk): register full reasoner definitions (e5cc44d)
Ts sdk (ce3b965)
Recover agent state on restart and speed up node status (7fa12ca)
Remove unused configuration variables
Audit of agentfield.yaml revealed many config options that were defined but never actually read or used by the codebase. This creates confusion for users who set these values expecting them to have an effect.
Removed from YAML config:
Removed from Go structs:
The remaining config options are all actively used:
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com (ee6e6e0)
Adds several new links to the README.md file that direct users to more detailed documentation pages. These links cover production-ready features, comparisons with agent frameworks, the full feature set, and the core architecture. (d5a9922)
Updates several external links within the README to point to the correct documentation paths.
This ensures that users can navigate to the relevant guides and information seamlessly. (ac6f777)
Updated arch (4ed9806)
Improve README Quick Start guide
Updates the README's quick start section to provide a more comprehensive and user-friendly guide.
This revision clarifies the installation process, introduces a dedicated step for agent creation with a default configuration option using af init --defaults, and specifies the necessary command-line instructions for each terminal in the control plane + agent node architecture.
It also refines the example API call to use a more descriptive agent endpoint (my-agent.demo_echo) and adds examples for Go and TypeScript, as well as detailing how to use interactive mode for agent initialization. (4e897f0)
Updates the README to provide a more detailed explanation of AgentField's purpose and features.
Key changes include:
Enhanced "What is AgentField?" section to emphasize its role as backend infrastructure for autonomous AI.
Improved "Quick Start" section with clearer steps and usage examples.
Expanded "Build Agents in Any Language" section to showcase Python, Go, TypeScript, and REST API examples.
Introduced new sections like "The Production Gap" and "Identity & Trust" to highlight AgentField's unique value proposition.
Refined "Who is this for?" and "Is AgentField for you?" sections for better audience targeting.
Updated navigation links and visual elements for improved readability and user experience. (f05cd95)
Typescript schema based formatting improvements (fcda991)
Typescript release and init (218326b)
Functional tests (99b6f9e)
Add TS SDK CI and functional TS agent coverage (857191d)
Add MCP integration (5bc36d7)
Separate example freom sdk (909dc8c)
Memory & Discovery (84ff093)
TS SDK simulation flow working (5cab496)
Add .env to git ignore (172e8a9)
Update README.md (4e0b2e6)
Fix MemoryEventClient init for sync contexts (1d246ec)
Fix memory event client concurrency and compatibility (2d28571)
Improve LLM prompt formatting and citations
Refactors the system and user prompts for the documentation chatbot to improve clarity and LLM performance. This includes:
Restructuring and clarifying the prompt instructions for citations, providing explicit guidance on how to use and format them.
Enhancing the citation key map format to be more descriptive and user-friendly for the LLM.
Explicitly stating that the citations array in the response should be left empty by the LLM, as it will be injected by the system.
Updating the Citation schema to correctly reflect that the key should not include brackets.
Adding a specific "REFINEMENT MODE" instruction to the refined prompt to guide the LLM's behavior in a second retrieval attempt.
Minor cleanup and adjustments to prompt text for better readability. (56246ad)
Update dependencies for improved compatibility
Updates several npm package dependencies, including browserslist, caniuse-lite, and electron-to-chromium, to their latest versions. This ensures better compatibility and incorporates recent improvements and bug fixes from these packages. (c72278c)
Improves the AgentRouter by implementing getattr to automatically delegate any unknown attribute or method access to the attached agent. This eliminates the need for explicit delegation methods for agent functionalities like ai(), call(), memory, note(), and discover().
This change simplifies the AgentRouter's interface and makes it more transparently proxy agent methods. Added tests to verify the automatic delegation for various agent methods and property access, as well as error handling when no agent is attached. (26c9288)
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →