Proposed sequence of short videos that both:
- demonstrate HAL's documented capabilities;
- work as a practical onboarding path from "what is this?" to "I can use and extend it."
The sequence is intentionally progressive:
- first value and setup;
- daily usage;
- advanced power-user features;
- contributor/operator workflows.
- Format: short product/onboarding videos
- Style: one concrete outcome per video
- Target length: 60 to 180 seconds each
- Recurring setup: one local machine, one Telegram phone, one or two sample projects
- Title: HAL In One Minute
- Description: Show the core promise of HAL: run your AI coding agent from your phone while the real tooling stays on your machine.
- Expected length: 60-75 seconds
- Woohoo moment: A Telegram message triggers a real coding-agent response from a local project and streams the result back to the phone.
- Demonstrational goal: Make the value proposition instantly obvious before any setup detail.
- Preconditions:
- HAL already configured for one sample project
- One supported engine installed and authenticated
- Telegram bot already connected
- What will be learned:
- What HAL is
- Why Telegram is the control surface
- That HAL keeps the real project and agent local
- Script:
- Open on the README promise: "Run Claude Code, Copilot, and Codex from your phone."
- Show a local project and terminal with HAL running.
- Send a simple Telegram prompt like "Summarize the last commit and tell me what to fix next."
- Show streaming progress in Telegram.
- Show the final answer landing back on the phone.
- Close with the architecture in one line: Telegram -> HAL -> local coding CLI -> response back to Telegram.
- Title: Create Your Bot And Let Yourself In
- Description: Walk through the minimum Telegram setup: bot token plus your user ID and access control.
- Expected length: 90-120 seconds
- Woohoo moment: The viewer understands that each project gets its own bot and that only allowed users can talk to it.
- Demonstrational goal: Remove the biggest "how do I even start?" blocker.
- Preconditions:
- Telegram app available
- BotFather and @userinfobot accessible
- What will be learned:
- How to create a Telegram bot
- How to get a Telegram user ID
- Why
allowedUserIdsmatters
- Script:
- Open BotFather and create a bot with
/newbot. - Copy the token and explain why it should live in
.env, not committed config. - Open @userinfobot and retrieve the numeric Telegram user ID.
- Show
allowedUserIdsin config. - Mention one bot per project and why that keeps things clean.
- Open BotFather and create a bot with
- Title: Wizard To First Working Project
- Description: Use the setup wizard to go from an empty folder to a working HAL project with minimal friction.
- Expected length: 120-150 seconds
- Woohoo moment: The wizard produces a real config and the bot is ready without manual YAML authoring.
- Demonstrational goal: Teach the fastest official onboarding path.
- Preconditions:
- Bot token and Telegram user ID already available
- One engine installed
- What will be learned:
- How to run
wiz - How HAL writes config and env-backed placeholders
- What the minimum project setup looks like
- How to run
- Script:
- Start in an empty directory.
- Run
npx @marcopeg/hal wiz. - Show the wizard collecting project name, cwd, engine, bot token, and user ID.
- Show the generated config file and env placeholder style.
- Start HAL.
- Send a first Telegram message and show the response.
- Title: One HAL, Multiple Projects
- Description: Show how HAL maps multiple bots/projects from one config and lets each project keep its own cwd and engine.
- Expected length: 90-120 seconds
- Woohoo moment: Two separate project bots are live, each pointing at a different folder and behaving differently.
- Demonstrational goal: Demonstrate the multi-project model clearly.
- Preconditions:
- Basic HAL setup already working
- Two sample projects available
- Two Telegram bot tokens available
- What will be learned:
- How the
projectsmap works - That each project has its own bot, cwd, and engine settings
- Why HAL is useful for people juggling multiple repos
- How the
- Script:
- Open a config with two projects.
- Highlight each project's
cwd,telegram.botToken, andengine. - Start HAL once.
- Send one message to the backend bot and one to the frontend bot.
- Show that the answers come from different project contexts.
- Title: Choose Engines, Models, And Session Behavior
- Description: Demonstrate HAL's multi-engine support,
/engine,/model, and the session differences between adapters. - Expected length: 120-180 seconds
- Woohoo moment: The same project switches engines from Telegram, and the behavior changes without changing the repo.
- Demonstrational goal: Show HAL as a router over multiple coding CLIs, not a single-engine wrapper.
- Preconditions:
- More than one supported engine available
providersconfigured for engine/model switching
- What will be learned:
- Which engines HAL supports
- How
/engineand/modelwork - Why session mode matters (
false,shared,user)
- Script:
- Show the supported engines list in docs.
- Open config and highlight
engine.name,engine.model, andproviders. - Use
/engineto switch to another engine. - Use
/modelto change the model. - Briefly explain which engines stream progress and which buffer.
- Briefly explain session behavior differences across engines.
- Title: Built-In Commands For Daily Control
- Description: Tour the system commands that make HAL practical in day-to-day use: help, info, clear, reset, engine/model, and optional git/npm surfaces.
- Expected length: 120-150 seconds
- Woohoo moment: HAL feels like an operator console, not just a chat box.
- Demonstrational goal: Teach command-driven control early in the onboarding flow.
- Preconditions:
- HAL already running
- One project with command defaults enabled
- What will be learned:
- What the built-in commands are for
- The difference between visibility and routing
- How
/clearand/resetdiffer
- Script:
- Open the Telegram slash-command menu.
- Run
/helpand/info. - Show
/clearresetting the session. - Show
/resetas the stronger destructive option. - Show
/engineor/modelif configured. - Mention optional git and npm command families.
- Title: Add Your Own Commands And Skills
- Description: Show how HAL becomes project-specific through
.hal/commands/*.mjsand skill folders. - Expected length: 120-180 seconds
- Woohoo moment: A custom slash command appears in Telegram after dropping in one file, and a skill can expose prompt-based behavior with
telegram: true. - Demonstrational goal: Demonstrate HAL's extensibility and hot reload loop.
- Preconditions:
- Existing HAL project
- Access to the project filesystem
- What will be learned:
- Difference between project commands and skills
- Routing order and precedence
- Hot-reload behavior
- Script:
- Create or reveal a simple
.hal/commands/status.mjs. - Show it appearing as
/status. - Trigger it from Telegram.
- Open a
SKILL.mdexample withtelegram: true. - Explain that same-name
.mjscommands override skills. - Close by showing how this turns HAL into a project-specific assistant.
- Create or reveal a simple
- Title: Beyond Text: Voice, Images, Documents, And Files
- Description: Demonstrate HAL's multimodal Telegram workflow: voice transcription, image/document analysis, and file return from the engine.
- Expected length: 120-180 seconds
- Woohoo moment: A voice note becomes a prompt, an image gets analyzed, and a generated file comes back to Telegram.
- Demonstrational goal: Show that HAL uses Telegram as a rich interface, not only plain chat.
- Preconditions:
ffmpeginstalled- Voice transcription configured
- One sample image or document available
- Engine able to generate a downloadable file
- What will be learned:
- Voice transcription modes
- That images/documents can be sent for analysis
- How HAL sends generated files back through the
downloads/folder
- Script:
- Send a short voice message and show the transcript UX.
- Mention local Whisper and the current local-only privacy model.
- Send an image and ask for analysis.
- Send a document and ask for summary or extraction.
- Show the engine writing a file into
downloads/. - Show the file arriving back in Telegram.
- Title: Give The Agent Better Context
- Description: Show how HAL injects system/project metadata and lets you extend context with config values and hooks.
- Expected length: 120-150 seconds
- Woohoo moment: The agent starts reasoning with real timestamps, user metadata, project cwd, and custom context without extra prompt boilerplate.
- Demonstrational goal: Explain one of HAL's most distinctive features for reliable remote operation.
- Preconditions:
- Working project config
- One example context value or hook ready
- What will be learned:
- What implicit context HAL injects
${},#{}, and@{}patterns- Context hooks and the cwd boundary instruction
- Script:
- Open the context docs and point to implicit keys like
sys.*,bot.*, andproject.*. - Show a custom
context:value in config. - Show a
context.mjshook example. - Send a Telegram message that depends on current time/project data.
- Explain why the cwd boundary instruction matters for safe file operations.
- Open the context docs and point to implicit keys like
- Title: Schedule Work With Cron Jobs
- Description: Show HAL running scheduled prompts and programmatic jobs from
.hal/crons/. - Expected length: 120-180 seconds
- Woohoo moment: A scheduled job fires automatically and sends useful output back through Telegram.
- Demonstrational goal: Introduce automation as a built-in feature, not an afterthought.
- Preconditions:
- A running HAL project
- One example cron file prepared
- What will be learned:
- Difference between
.mdand.mjscrons - Project vs system cron scope
- Hot reload and cron logs
- Difference between
- Script:
- Open the cron docs and show the two file types.
- Show a simple project cron under
.hal/crons/. - Explain
enabled: true,schedule, andrunAt. - Save or edit the cron and mention hot reload.
- Show the cron firing and delivering its output.
- Point to cron logs for observability.
- Title: Operate HAL Safely
- Description: Cover access control, env files, rate limiting, logging, and the security boundaries of different engines.
- Expected length: 120-150 seconds
- Woohoo moment: The viewer realizes HAL is usable in real life because safety and operator controls are built in.
- Demonstrational goal: Build trust and prevent bad first deployments.
- Preconditions:
- Basic config file available
- What will be learned:
- Why
allowedUserIdsmatters - How env files are loaded
- What logging/rate limiting provide
- Why engine filesystem boundaries differ
- Why
- Script:
- Show
allowedUserIdsand explain why open access is dangerous. - Show
.envand.env.localplacement. - Open the logging and rate-limit docs briefly.
- Compare one safer engine boundary and one looser one.
- End on the security notice: Telegram is not end-to-end encrypted for bots.
- Show
- Title: Contribute, Extend, And Release
- Description: Finish the series with the contributor/operator path: local dev setup, examples config, and release workflow.
- Expected length: 120-180 seconds
- Woohoo moment: HAL is not a black box; you can run it locally, extend it, and ship improvements.
- Demonstrational goal: Turn advanced users into contributors.
- Preconditions:
- Node.js installed
- Repo cloned locally
- What will be learned:
- How to run HAL from the repo
- How the
examples/folder works - High-level release flow
- Script:
- Clone the repo and run
npm install. - Show the
examples/folder and its.envpattern. - Start the bot locally with the development setup.
- Mention where commands, skills, crons, and docs live in the repo.
- Show the release scripts at a high level.
- Close by pointing viewers back to the docs index.
- Clone the repo and run
This sequence covers the currently documented feature set:
- product overview and quick start
- Telegram bot creation and user ID setup
- setup wizard
- config structure, env files, and project map
- multi-project support
- multi-engine support, model switching, and session modes
- built-in commands
- custom project commands and skills
- voice, images, documents, and returned files
- context injection and hooks
- cron jobs and scheduling
- access control, logging, rate limit, and security boundaries
- contributor/development workflow
- Reuse the same two sample projects across the whole series so the audience builds familiarity.
- Use one phone capture style and one terminal theme across all videos.
- Keep every video centered on one user-visible outcome, not on exhaustive explanation.
- End each video with the next video's setup dependency so the sequence doubles as onboarding.