{"name":"Declarative Agents: Profile-Driven LLM Agent Runtime in Go","description":"Declarative Agents by Nokia Bell Labs offers a profile-driven runtime and design patterns for building tool-augmented LLM agents. It allows defining agents, their tools, states, and transitions via YAML profiles, eliminating the need for code changes for workflow alterations. This Go-based framework promotes flexible and dependable agent development.","github":"https://github.com/Nokia-Bell-Labs/declarative-agents","url":"https://osrepos.com/repo/nokia-bell-labs-declarative-agents","source":"osrepos.com","sourceDescription":"This repository profile is provided by osrepos.com, an open source repository discovery platform.","repositoryProfile":"https://osrepos.com/repo/nokia-bell-labs-declarative-agents","generatedFor":"open source discovery and AI-assisted research","markdown":"https://osrepos.com/repo/nokia-bell-labs-declarative-agents.md","json":"https://osrepos.com/repo/nokia-bell-labs-declarative-agents.json","topics":["Go","LLM Agents","Declarative Programming","AI","Agent Framework","YAML","Nokia Bell Labs"],"keywords":["Go","LLM Agents","Declarative Programming","AI","Agent Framework","YAML","Nokia Bell Labs"],"stars":null,"summary":"Declarative Agents by Nokia Bell Labs offers a profile-driven runtime and design patterns for building tool-augmented LLM agents. It allows defining agents, their tools, states, and transitions via YAML profiles, eliminating the need for code changes for workflow alterations. This Go-based framework promotes flexible and dependable agent development.","content":"## Introduction\n\nDeclarative Agents is a project from Nokia Bell Labs providing a profile-driven runtime and design patterns for declarative, tool-augmented LLM agents. At its core, an agent is defined by a YAML profile, which is then interpreted and executed by a single Go runtime. This approach aims to simplify the development and modification of complex agent workflows.\n\n## Why Use It and Key Benefits\n\nTraditional agent frameworks often couple workflow logic tightly with code, meaning any change to an agent's loop or behavior necessitates a binary rebuild. Declarative Agents addresses this by externalizing the agent's definition into a YAML profile. This profile specifies the agent's tools, states, transitions, signals, and budgets.\n\nThe primary benefit is flexibility: altering an agent's workflow becomes a simple configuration edit, and creating a new agent does not require compiling new binaries. This significantly speeds up iteration and deployment. The project also includes a companion white paper, *Design Patterns for Declarative Agents*, which outlines eleven patterns for building reliable agents using this declarative methodology. The modular structure, with components like `agent-core` for the runtime engine and `applications/catalog` for reusable blocks, further enhances its utility.\n\n## Installation\n\nTo get started quickly, you'll need Go and Mage installed. Navigate to one of the packaged applications and run it:\n\nbash\ncd applications/agent-architecture\nmage run\n\n\nThis command starts the canonical documentation-curator and serves its UI.\n\n## Examples\n\nYou can validate and run an agent directly from its YAML profile. First, build the core binaries and set the catalog root:\n\nbash\ncd agent-core\nmage build      # compiles cmd/ binaries into bin/\nexport AGENT_CATALOG_ROOT=../applications/catalog\nbin/agent --profile \"$AGENT_CATALOG_ROOT/agents/executor/profile.yaml\" --validate-config\nbin/agent --profile \"$AGENT_CATALOG_ROOT/agents/executor/profile.yaml\" --core-root .\n\n\nThe `--validate-config` flag reads the profile, machine, and tool definitions, then exits, performing a quick boot smoke test. You can swap `executor` for any other profile found under `applications/catalog/agents/`.\n\n## Links\n\n*   **GitHub Repository:** [Nokia-Bell-Labs/declarative-agents](https://github.com/Nokia-Bell-Labs/declarative-agents){:target=\"_blank\"}\n*   **Contact:** [Petar Djukic](https://github.com/petar-djukic){:target=\"_blank\"}","metrics":{"detailViews":1,"githubClicks":0},"dates":{"published":null,"modified":"2026-09-13T16:41:00.000Z"}}