← the quiet wire

Local AI · End-to-end case study

LOPO: A Podcast Before Breakfast

A technical case study: a scheduled LangFlow workflow, a local Qwen model run through Ollama, live Apple text-to-speech, and a finished daily artifact delivered through iCloud.

Watch 08 · Solution on YouTube

TL;DR

LOPO (LOcal POdcast) produces a short daily episode about historical events that occurred exactly one hundred years earlier. It searches for candidate events, checks and refines them, writes a narrative, and saves the finished text to iCloud. This happens locally, overnight, without a prompt being written or a workflow being launched each day.

In the morning, there is no generated audio file to find and no AI interface to revisit. The synchronized script is read aloud live by Apple’s native text-to-speech system using a Siri voice. A double-tap or a single keyboard action starts playback. The AI is not the destination; the finished artifact arrives inside a familiar consumption surface.

90 sactive execution
20 Waverage power
0.50 Whenergy per run

The measured setup is a fanless MacBook Air M4 with 16 GB of unified memory. The visual flow is built in LangFlow. Ollama runs a local Qwen 3.5 9B model, identified in the execution trace as qwen3.5:9b-nvfp4. In one representative run, the agent made five model turns and four successful search-tool calls before publishing the script.

The point is not that any one of these components is new. The point is their composition under a rigid user-experience constraint: the recurring cognitive cost must approach zero. This is a worked example of Lower Cognitive Footprint AI—a system designed from consumption backwards, with the implementation chosen to make the daily interaction nearly disappear.


1. Why build this?

Most generative-AI experiences begin by asking the user to become an operator. Open a destination. Choose a model. Write a prompt. Inspect an answer. Revise the prompt. Copy the result somewhere useful. That pattern is flexible, but flexibility has a cognitive cost: every session reopens the possibility space and asks the user to navigate it again.

A daily podcast is a poor match for that interaction model. Its value comes from regularity and immediacy. If listening requires a morning ritual of prompting, checking, exporting, converting, and transferring, the system has not removed work; it has merely moved the work into a chat window.

So the design was inverted. The user experience was fixed first:

Only after those constraints were established did the implementation become relevant. The use case is intentionally narrow: each day, create a compact historical podcast about events from exactly one century ago. A narrow use case is not a weakness here. It creates a stable contract that can be scheduled, evaluated, and improved without asking the user to redesign the task every morning.

In daily use: the artifact is already waiting

The system runs during the night. The workflow searches, reasons, writes, and saves the script. iCloud carries the text to the devices on which it may be consumed. In the morning, Apple’s system voice reads that text on demand. The recurring human sequence is therefore not prompt → wait → export → play. It is simply:

Wake up. Press Play.

That difference is the product. The podcast content matters, but the defining design achievement is the removal of the production process from the user’s attention.


2. Descended from the Quiet Wire vision

The Quiet Wire perspective begins from a simple concern: the possibility space opened by AI can create overload, fragmentation, and decision fatigue. More capability does not automatically produce more utility if the user must continually decide how to direct it.

The response is a design gate ordered from foundational constraint to lived experience: Hardware → Model → Interaction → Consumption. The podcast generator is an end-to-end test of whether all four can coexist within one coherent local system.

Hardware: a practical physical envelope

The workload runs on a fanless MacBook Air M4 with 16 GB of memory. It does not require a discrete GPU, an always-on workstation, or a dedicated server. During the measured run, average system power was 20 watts for 90 seconds. The hardware is not treated as an abstract benchmark platform; it is everyday equipment that can return to being an ordinary computer as soon as the task is finished.

Model: sufficient capability, not maximum capability

The model is selected to satisfy the bounded task within that hardware envelope. Qwen 3.5 9B is run locally through Ollama. It is not chosen because it is the largest available model, but because it can coordinate retrieval, compare candidate events, verify a selected subject, and write the final narrative within the machine’s available memory and power budget.

Interaction: one recurring action

The scheduler and visual workflow operate before the user arrives. There is no daily prompt, no model choice, no progress window, and no approval step between research and publication. The recurring interaction is playback—and playback itself is one action.

Consumption: an existing surface, not another destination

The workflow publishes text into iCloud. Apple’s native text-to-speech renders it when requested. The user consumes the result through the device and applications already present in daily life. This avoids creating another AI inbox, dashboard, or media library whose existence must be remembered and managed.

Specification → delegation → reduced exposure

The implementation follows the same progression used in the LETO case study:

  1. Specification. The objective and output form are defined once in the LangFlow graph and prompt: find events from exactly one hundred years ago and produce a compact spoken narrative.
  2. Delegation. A local scheduler invokes the flow overnight. The agent can call search repeatedly, decide when the evidence is sufficient, and publish the result without daily steering.
  3. Reduced exposure. The user encounters neither the graph nor the model. Only the synchronized text and the Play action remain visible.

The podcast generator is therefore not “no-code” as a slogan. Its deeper property is that the visual workflow is the executable specification. The architecture diagram and the running process are substantially the same artifact.


3. Why this is an end-to-end local AI case study

This project is small enough to understand in one sitting, but complete enough to expose the decisions that demos usually omit. It includes scheduling, retrieval, agent behavior, local inference, file publication, cross-device delivery, speech rendering, measurement, and the final interaction. The “last mile” is not outside the project; it is where the project’s thesis becomes testable.

The project also makes a deliberate architectural claim: an LLM should not absorb every responsibility merely because it can. Search retrieves. Qwen reasons and writes. LangFlow coordinates. The scheduler invokes. iCloud distributes. Apple’s native speech system speaks. Each component is used for the narrow job it already performs well.


4. Architecture

The system has two paths that meet at a plain text file. The production path runs overnight: schedule, search, reasoning, writing, and synchronization. The consumption path runs later: open the synchronized script and ask the operating system to read it aloud. There is no pre-rendered audio artifact between them.

Production happens before attention is required. Consumption begins with one action.

4.1 The local scheduler: activity only when needed

A local scheduler invokes the workflow at 02:00 each night. The active AI window is approximately ninety seconds. Outside that window, the Mac can remain asleep or idle and returns toward that state once the flow has completed. This duty cycle matters more than peak throughput for the use case: the system is not intended to serve interactive requests throughout the day.

The schedule converts a general-purpose computer into a temporary publishing node. For a brief interval it becomes a search-and-reasoning system; after publication it returns to its primary role. There is no always-on AI service and no need to keep a dedicated inference machine running.

4.2 LangFlow: a small visual workflow

The visual workflow is built in LangFlow. It contains four responsibilities: define the task, give the agent access to search, write the completed script, and publish that text to iCloud.

LangFlow’s agent model allows tools to be connected directly to an agent, with the agent deciding when a tool is useful. Search is therefore not a fixed single lookup in this flow. It remains available as a capability the model can call again whenever the evidence is insufficient.

No handwritten imperative orchestration is required for the daily process. The saved flow defines the components, their connections, the objective, and the destination; the scheduler simply invokes it. The practical value of LangFlow here is direct: the architecture remains visible and editable while the runtime handles the orchestration.

4.3 Ollama and Qwen: local reasoning inside the hardware envelope

Ollama provides the local model runtime on macOS. The run uses Qwen 3.5 9B; the captured model identifier is qwen3.5:9b-nvfp4. The article deliberately does not infer an undocumented backend from the trace. What is measured is simpler and more useful: the model runs locally on the M4 system, uses the GPU heavily, fits in 16 GB of unified memory, and completes the bounded task.

The model is responsible for the work that benefits from flexible judgment: deciding which searches to make, comparing possible subjects, judging when a candidate is well supported, and turning the selected evidence into a coherent spoken script. It is not responsible for the schedule, storage, synchronization, or voice rendering.

4.4 The agent trace: search → refine → broaden → verify → synthesize

The representative execution is a compact ReAct-style loop. The agent does not accept the first candidate. It makes four search calls across successive model turns, changing the scope of the investigation before committing to the final subject.

Sequential interaction reconstructed from the captured execution trace.
Step Agent intent Observed duration
1 Search for significant events on the target date, beginning with a US and California scope. 23.64 s
2 Test and refine an alternative interpretation rather than accepting the first result. 8.67 s
3 Broaden the investigation worldwide to find a stronger candidate. 9.50 s
4 Verify the selected Picatinny Arsenal explosion before writing. 9.40 s
5 Synthesize the verified material into the final podcast script. 35.42 s
Trace-accounted active time 86.63 s
Observed end-to-end execution ≈90 s

The small difference between trace-accounted activity and the observed end-to-end runtime is consistent with startup, context preparation, orchestration, and file handling outside the five timed model turns. The trace records five model calls, four successful search-tool invocations, and no execution error.

4.5 Publication: a text artifact, not an audio pipeline

The agent’s final output is written as text into iCloud. This is an intentionally modest interface between production and consumption. Text is inspectable, portable, searchable, small, and easy to correct. The workflow does not need to encode audio, manage audio metadata, or duplicate voice assets.

According to Apple’s iCloud documentation, files stored in iCloud Drive remain up to date across devices. That platform service becomes the distribution layer: the publisher writes once, and the artifact appears where the user already expects personal files to appear.

4.6 Playback: live native text-to-speech

The script is not converted into a podcast audio file overnight. At playback time, Apple’s native text-to-speech system reads the synchronized text aloud using a selected Siri voice. Apple exposes system voices and speech settings directly in macOS; the operating system therefore provides the last-mile rendering instead of the AI workflow recreating it.

This separation produces a useful division of responsibility:

The voice can change without regenerating the content. The text can be reviewed without decoding audio. Storage remains tiny. Most importantly, the user experiences a native playback action rather than an AI production process.

4.7 The boundary of “no code”

The system is not code-free in the metaphysical sense—LangFlow, Ollama, macOS, and iCloud are all software. The relevant claim is precise: the user did not need to write imperative orchestration code to express this workflow. The graph captures the task, the agent, its tool, and the publication destination. Scheduling is configuration. Speech is a native platform capability.

That distinction matters because “no code” is not the user-facing value. The user never sees whether the implementation contains zero lines or ten thousand. The value is the result of the abstraction: the system can be understood and changed at the level of intent, while the daily experience remains one action.


5. Performance

The workload was observed at both the software and hardware layers. The execution trace explains what the agent did; system telemetry explains how the M4 responded physically. Together they form a workload signature rather than a conventional single-number benchmark.

Measured signature of one complete local podcast-generation run.
Dimension Measurement Interpretation
Platform MacBook Air M4, 16 GB unified memory, fanless Everyday general-purpose hardware; no dedicated accelerator.
End-to-end runtime ≈90 s Acceptable because the run is unattended and off the user’s critical path.
Average / peak power 20 W / 23 W A short, bounded compute burst rather than an always-on service.
GPU ≈99% average; 100% observed peak The active inference phase strongly utilizes the available GPU.
Temperature 40°C baseline; ≈73°C after ~10 s; ≈80°C under sustained load Fast thermal rise on a fanless chassis, followed by cooldown after completion.
Memory 14% baseline; approximately 72–77% under load The model and execution context occupy a substantial but workable share of 16 GB.
Recovery GPU, power, and memory near idle within ≈20 s; temperature follows shortly after The compute resources are released promptly; heat naturally lags activity.
Agent activity 5 model turns; 4 successful search calls; no errors Multi-pass retrieval and verification, not a single-shot generation.

The first visible resource transition occurs within roughly ten seconds: GPU usage rises from about 3% to 100%, power from about 2 watts to 23 watts, temperature from about 40°C to 73°C, and memory from about 14% toward its active range. This is the signature of model loading, working-memory allocation, and sustained local inference.

Tokens per second was captured during diagnosis, but it is intentionally not the product’s primary performance metric. The user is asleep while generation happens. For this use case, the meaningful performance questions are: Did the complete task finish before it was needed? How much energy did the task consume? Did the system return cleanly to its normal state? On the measured run, the answers are yes, half a watt-hour, and yes.

Performance principle

Move latency away from attention. Ninety seconds is noticeable in a chat window. Overnight, it is simply a completed artifact waiting in the morning.


6. Cost: energy and total ownership

This project does not claim a universal performance-per-dollar comparison against cloud instances or discrete-GPU systems. Such a comparison would require the same model, quantization, context, tools, output, and quality target. Instead, it reports the measured local system directly and keeps the arithmetic auditable.

6.1 Energy per completed run

The active execution averaged 20 watts for 90 seconds:

20 W × (90 s ÷ 3,600 s/hour) = 0.50 Wh

That is the energy of the measured generation phase: one complete multi-step agent run including retrieval, refinement, verification, synthesis, and publication. It does not include the many hours when the Mac is asleep, nor later listening time, because those belong to different operating phases.

6.2 A daily and annual duty cycle

At one run per day, the measured active inference phase represents:

Period Active AI time Measured-phase energy
One day 90 s 0.50 Wh
30 days 45 min 15 Wh
365 days 9 h 7 min 30 s 182.5 Wh = 0.1825 kWh

This annual figure is a projection of the measured active phase, not a whole-device electricity audit. Wake overhead, sleep draw, synchronization, and playback would need a timestamp-aligned external power measurement to produce a complete wall-energy total. The projection is still useful because it isolates the energy attributable to the AI generation workload itself.

6.3 Total cost of ownership

The test platform was reported as a sub-$1,000 MacBook Air configuration. It is also the user’s general-purpose computer, so the workflow does not require purchasing and operating a dedicated AI workstation. The recurring model path has no cloud-inference token charge: LangFlow and Ollama run locally, and the Qwen model is stored on the device.

The remaining services are capabilities already present in the user’s environment: a local scheduler, iCloud synchronization, and Apple’s system text-to-speech. That does not make them economically “free” in every accounting model—hardware, storage plans, and electricity still have costs—but it makes the marginal cost of one more daily episode very small and easy to understand.

6.4 The deliberate trade: duration for low duty-cycle power

A larger or dedicated GPU system might complete the same workload more quickly. That is not automatically better for this product. The episode has a deadline measured in hours, not milliseconds. Once the task finishes comfortably before the morning, further speed has diminishing user value, while higher idle draw, cost, noise, and operational complexity would remain.

The relevant optimization target is therefore not raw throughput. It is useful artifact per scheduled energy event, inside an affordable and portable hardware envelope, with no recurring attention cost.


7. The last mile: a live voice, not another generated file

The equivalent section in many AI systems would describe an audio-generation service. This system deliberately stops one step earlier. It publishes text and lets the operating system render speech when the user actually listens.

That decision matters in four ways:

The separation also reveals the project’s engineering philosophy. The LLM is used only for the work that benefits from language-model judgment. Mature platform services handle the rest. This is not a monolithic “AI does everything” design; it is a composition of narrow responsibilities.

The local workflow produces knowledge. iCloud places it where it belongs. The operating system turns it into an experience.

The result is portable in two senses. The machine itself is portable: the complete inference workload fits on a fanless laptop. The artifact is portable: it moves across the user’s devices as ordinary text and is rendered by the device at the point of use.


8. Roadmap: what would strengthen the evidence

The end-to-end system is complete for personal use. The next steps are less about adding features than about making the evaluation more reproducible and the operation more resilient.

None of these additions should change the daily experience. The user should still wake, press Play, and remain unaware of everything that happened upstream.


9. What the project demonstrates

Stripped to essentials, LOPO is a worked answer to one question: can a useful local AI system satisfy practical hardware, model, interaction, and consumption constraints at the same time? This implementation suggests that it can.

90 seconds · 20 watts average · 0.50 watt-hours · one action to consume

Taken individually, none of the components is remarkable. Their composition under one rigid set of constraints is. The result is a complete local AI system whose most important behavior is not what it asks the user to do, but what it quietly removes from the user’s day.


Sources

System measurements, trace timings, and workflow details are taken from the documented local execution described in this case study. Product capabilities are referenced from primary documentation: