
Docker is showcasing a practical way to automate tech news briefings without leaning on expensive cloud AI models. In a recent walkthrough on the Docker Blog, Principal Solutions Architect Philippe Charrière details how he built a local IT news roundup workflow using Docker Agent, a custom skill, Docker Model Runner, and the Qwen3.5-4B language model.
The goal was straightforward: generate structured, Markdown tech news reports on demand, while keeping everything running locally and preserving paid AI credits from services like Claude.
Building a local-first news agent
Charrière’s setup centres on Docker Agent, extended with a custom skill and backed by a lightweight local model. The workflow starts with Brave’s Search API for fresh coverage, then moves into local analysis and summarization.
The pipeline works as follows:
- Search and retrieval: A Docker Agent skill calls the Brave News Search API to fetch recent articles on a topic.
- Enrichment: For each article, the skill issues additional Brave web search queries to pull more context.
- Local reasoning and writing: A Qwen3.5-4B model, running via Docker Model Runner, analyses the results and produces a structured Markdown report tailored to IT readers.
The agent can be prompted with a natural instruction such as use news roundup skill with tiny language models, then proceeds to orchestrate search calls, enrichment, and report generation. The tradeoff, Charrière notes, is that this local workflow is slower than using a hosted model like Claude Code, but it avoids burning hosted-model credits and keeps execution on the user’s own machine.
Inside the Docker setup: models, skills, and search
At the core of the design is the choice of model. Charrière initially tested qwen3.5-9B but found it too slow on his MacBook Air. He settled on qwen3.5-4B (using the Unsloth version), a 4-billion-parameter model optimized for text understanding and generation, with native support for up to 262,144 context tokens. In the Docker Agent configuration, this model is aliased as brain and configured to run through Docker Model Runner with llama.cpp-style runtime flags, including a 65,536-token context size.
The Docker image itself is built on ubuntu:22.04, with curl installed for HTTP calls to Brave’s APIs. The docker-agent binary is copied from the docker/docker-agent:1.32.5 image into the container, and a non-root user is created to run the agent. The working directory is set to the user’s home, with appropriate ownership adjustments.
The agent configuration describes a single root agent:
- Model:
brain, pointing to the Qwen3.5-4B model via Docker Model Runner. - Skills: Enabled, so the agent can invoke custom skills.
- Instruction: The agent is told to behave like an expert IT journalist, with deep knowledge of software engineering, cloud infrastructure, AI, cybersecurity, and open source. It is instructed to gather, analyse, and summarize the latest tech news with context and trend analysis for a technical audience.
- Toolsets: Instead of depending on predefined tools, Charrière uses a script-type toolset that exposes an
execute_commandentry. This lets the agent run arbitrary shell commands and capture stdout and stderr, which is enough to drive the Brave Search API viacurlwithout building specialized tooling.
The model is configured with a temperature of 0.0, top_p of 0.95, and a presence penalty of 1.5, emphasizing deterministic, concise outputs while still allowing some variation.
The news retrieval and reporting logic lives in a dedicated skill. Under the project’s .agents/skills directory, Charrière defines a news-roundup skill in a SKILL.md file. The skill is explicitly described as a way to “search the news using Brave News Search API with a query as argument” and is intended for user requests about recent news or current events.
The skill lays out a three-step process:
- Step 1 — Search for recent news: The agent runs a
curlcommand againsthttps://api.search.brave.com/res/v1/news/search, with the user’s query encoded into theqparameter. It limits results to three articles and uses a freshness parameter for recent coverage. The request includes anX-Subscription-Tokenheader populated from aBRAVEenvironment variable holding the Brave Search API key. - Step 2 — Enrich each article: For each article URL returned, the skill runs another
curlcall againsthttps://api.search.brave.com/res/v1/web/search, this time querying by the article URL and retrieving up to 10 results. This provides extra context and details around each story. - Step 3 — Generate the Markdown report: Using all collected information, the agent composes a well-structured report and saves it under
/workspace/dataasnews-report-{YYYYMMDD-HHMMSS}.md. The skill specifies a fixed structure, including a title with the topic and generation date, a summary of main trends, per-article sections with source, URL, publish date, and a short significance-focused summary, plus a “Key Trends” bullet list.
To determine the timestamped filename, the skill uses the shell command date +"%Y%m%d-%H%M%S" and relies on a write_file tool to persist the final Markdown to disk. The default topic, when none is provided, is “small ai local models.”
Launching the agent hinges on a compose.yml file and a simple environment configuration. A .env file must supply the Brave Search API key as BRAVE=.... The Docker Compose service mounts three things into the /workspace directory in the container: the main agent config.yaml, the .agents folder containing skills, and a local data directory where reports are saved. The container runs docker-agent run /workspace/config.yaml interactively, with TTY enabled.
A separate models configuration maps the qwen3.5-4b identifier to the Unsloth GGUF model on Hugging Face, again with a 65,536-token context size.
Once everything is in place, the agent can be started with:
docker compose run --rm --build news-roundup
From there, a prompt like use news roundup skill with tiny language models kicks off the flow. The agent recognizes that it needs to invoke tools — in this case, the curl commands defined in the news-roundup skill — and the user can choose to validate each command manually or allow automatic execution. The process can take a while, depending on hardware and network conditions, but at the end, the agent returns the path to the generated report in the data folder.
Charrière points to sample outputs in the project’s repository on Codeberg, under the data directory, as references for what the generated IT news reports look like.
In combination, the Docker Agent skill system, Brave’s search APIs, and Docker Model Runner with Qwen3.5-4B provide a fully local workflow for structured tech news briefings. It is one of several use cases Charrière has explored around local models, including techniques like context packaging to make small LLMs more effective.
Discover more from TechBooky
Subscribe to get the latest posts sent to your email.







