Local dev starter - #56
Merged
Merged
Conversation
`make up` builds the image and runs the Enterprise Knowledge Assistant in containers, so a new developer needs only Docker and one API key. make up engine -> http://localhost:8090 make up-ui chat UI -> http://localhost:8100/demo make down All services run the same `extra:local` image and differ only in the command, so local runs use the same artifact the release build ships. They share one network, which keeps `http://127.0.0.1:8765/mcp` in the example config true inside containers exactly as it is on a laptop. The example no longer reaches the network: the knowledge agents use the local mock MCP that already ships with it instead of DeepWiki and Context7, and CONTEXT7_API_KEY is gone. The full graph is unchanged — three routers, five agents, five hook points, two local tools, four resolvers, one protected agent — it just runs offline now. `make up` validates the config inside the image before starting, and `make check` fails if `agentctl generate` would write anything, so committed stubs cannot go stale. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A bank concierge with fake data: two accounts, five transactions, no
database and no internet. It uses every part of the platform with logic
simple enough that nothing distracts from the wiring, so it can be the
first example someone reads.
concierge routes, never answers
├── support_router
│ ├── faq_agent auto: true, answers from its prompt
│ └── card_agent local tool, requires approval
└── accounts_router
├── balance_agent get_accounts (bundled MCP)
└── transactions_agent get_transactions (bundled MCP)
Three levels of routing, a local Python tool, a bundled MCP server over
the real Streamable HTTP transport, shared resolvers, and four hook
lifecycle points that only log so the sequence is visible.
The model is declared once in `defaults`, so switching provider is a
single edit plus the matching key — the YAML names no vendor anywhere
else.
Read-only agents set `auto: true`; card_agent changes state and so
pauses for approval, which shows both behaviours in one system.
Runs with `make up EXAMPLE=examples/starter` or directly with
`agentctl chat --config`.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The local-dev work had rewritten the flagship example to drop its remote MCPs, rename a hook and relax its credential check. That was never the goal — examples/starter now covers the "runs with one key, no internet" case, so the flagship goes back to demonstrating remote and authenticated MCPs as before. Restored to origin/main: examples/enterprise-knowledge-assistant/agents.yaml examples/enterprise-knowledge-assistant/plugins/hooks/research_hooks.py tests/cli/test_validate_command.py tests/runtime/hooks/test_enterprise_knowledge_assistant_research_hooks.py `make up` now defaults to examples/starter, which needs one API key and no network; the flagship still runs with EXAMPLE=examples/enterprise-knowledge-assistant. `make validate` and the generate drift check now cover every example rather than just one, so neither can rot. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ments The example now runs with no paid API key: provider `openai` pointed at a local Ollama server through the OpenAI-compatible API. `.env.example` ships working defaults, including host.docker.internal so the containers reach Ollama on the host. Comments in agents.yaml are cut back to the places where the config does something a reader cannot infer: * what `auto: true` costs — it skips the human approval prompt * what the MCP block becomes in production, and where the credential goes (a before_mcp_request hook, never the YAML) * when a local tool is the right choice instead of an MCP * that `failure_policy: warn` is the exception, not the default * that graph indentation is what a node is allowed to reach Everything that merely restated the key names is gone. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Asaf-prog
approved these changes
Jul 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.