Build an Internal Ops Copilot
This tutorial shows a narrower, safer Talon pattern: an internal agent with bounded operational tools.
Before you begin, clone the repository, create .env from .env.example, and set OPENAI_API_KEY so the example agent uses a real model provider:
git clone https://github.com/impalasys/talon.git
cd talon
cp .env.example .env
Start the local stack if it is not already running:
docker compose up --build -d
What you are building
You will create:
- an
internal-opsnamespace - an
ops-copilotagent - a namespace-local
talon-opsMCP server - a small read-oriented tool allowlist
1. Apply the example manifests
cargo run --bin talon-cli -- --gateway http://localhost:50051 apply -f manifests/examples/internal-ops-copilot/namespace.yaml
cargo run --bin talon-cli -- --gateway http://localhost:50051 apply -f manifests/examples/internal-ops-copilot/ops-copilot-template.yaml
cargo run --bin talon-cli -- --gateway http://localhost:50051 apply -f manifests/examples/internal-ops-copilot/ops-copilot.yaml
cargo run --bin talon-cli -- --gateway http://localhost:50051 apply -f manifests/examples/internal-ops-copilot/talon-ops.mcp-server.yaml
This creates:
- the
internal-opsnamespace - the
ops-copilot-templatetemplate - the
ops-copilotagent - the namespace-local
talon-opsMCP server
2. Load the runbook
cargo run --bin talon-cli -- --gateway http://localhost:50051 knowledge sync \
--namespace internal-ops \
--dir manifests/examples/internal-ops-copilot/knowledge
3. Verify the MCP server
cargo run --bin talon-cli -- --gateway http://localhost:50051 get mcpserver talon-ops --namespace internal-ops
The server should expose only:
list_schedulesget_schedulelist_channelsget_channellist_channel_messagesget_channel_messagelist_mcp_serversget_mcp_server
4. Start an operator session
Create a session and ask an ops question:
cargo run --bin talon-cli -- --gateway http://localhost:50051 session prompt \
--namespace internal-ops \
--agent ops-copilot \
--stream \
"List the schedules in this namespace and summarize anything unusual."
5. Inspect tool use in Sightline
In Sightline, open the session and confirm:
- the agent stayed inside the intended namespace
- only the allowed
talon-opstools were exposed - the session transcript makes the tool usage legible
That is the core ops-copilot pattern in Talon: narrow namespace-local MCP servers, explicit visibility, and no broad ambient tool access.
Why this tutorial matters
Internal assistants get risky when every tool is globally available. Talon’s namespace-scoped MCP servers and embedded policy let you keep the exposure legible and reviewable.