---
title: Console usage
description: "Serial REPL: session, Q&A, cap, skills, and automation debug commands."
---

import { Aside, LinkCard } from '@astrojs/starlight/components';

Connect the board over USB, use `idf.py monitor`, `minicom`, or the [web flasher](@lang/flash) Console to reach the `edge_agent` prompt (default `app> `).

<Aside type="tip">
  Logs scroll but you cannot type commands?
  - Boards with both UART and USB-Serial JTAG: try the other port.
  - Single-USB devices: try a firmware build with `Serial JTAG` in the name, or [build from source](@lang/reference-project/build-from-source) and adjust `Channel for console output` in menuconfig.
</Aside>

## Session and Q&A

### Switch session

Each `session` uses its own history file (see [Memory](@lang/reference-project/memory)). Long-term memory data is managed in the shared `memory/` directory.

```sh
session demo
session
```

### Chat with the LLM

`ask` starts a multi-turn chat with history. `ask_once` is single-turn and does **not** append to session history.

```sh
ask list what you can do for me
ask_once one-off question, do not use history
```

<Aside type="tip">
  If the LLM was not fully configured at boot (missing key / model / profile), `claw_core` never starts and `ask` fails.
  See [Configuration](@lang/reference-project/configuration) for required LLM fields.
</Aside>

## cap

### List capabilities

```sh
cap list
```

### Invoke a capability

The second argument must be valid JSON (mind quoting/escaping).

```sh
cap call get_current_time '{}'
cap call list_dir '{"keyword":"scripts"}'
```

### Group management

A capability may expose many tools. They are grouped so you can enable/disable/unload whole sets at once.

```sh
cap groups
cap enable <group_id>
cap disable <group_id>
cap unload <group_id>
```

## skill

<Aside type="note" title="skill console command is not registered by default">
  `edge_agent` does **not** call `register_cap_skill()` by default, so the `skill` command does not appear on the serial console. To enable it, call `register_cap_skill()` inside `app_claw_cli_start` in `components/common/app_claw/app_claw_cli.c` and rebuild.

  Alternatively, use `cap call activate_skill '{"skill_id":"your_skill"}'` from the console to manage Skills.
</Aside>

On the model side: `activate_skill` / `deactivate_skill`. On serial: the `skill` command (registered by `cmd_cap_skill`) can manage Skills, e.g.:

```sh
skill --catalog
skill --list --session default
skill --activate weather --session default
skill --deactivate weather --session default
skill --clear --session default
```

Keep `--session` aligned with the active `session` id, otherwise it looks “activated but not in context”.

## auto

```sh
auto reload
auto rules
auto last
...
```

<LinkCard
  href="@lang/reference-project/dataflow-and-automation#event-router-console-commands"
  title="Dataflow and automation"
  description="More commands and details in this doc"
/>


## Other registered cap commands

`edge_agent` registers `help`, `cap`, `auto`, `time`, `web_search`, `mcp_client`, `mcp_server`, `llm_inspect`, `event_router`, etc.
Type `help` in the Console for the full list.

Besides the usual `cap` subcommands (`list`, `call`, `groups`, `enable`, `disable`, `unload`), `cap load qq` dynamically registers the `cap_im_qq` group implemented by `cap_im_platform`.

## System configuration

For runtime Wi‑Fi / LLM edits, Web is often easier:

<LinkCard href="@lang/tutorial/web-config" title="Web configuration" icon="laptop" description="Change settings and files from the LAN" />
<LinkCard href="@lang/reference-project/configuration" title="Configuration" icon="settings" description="NVS keys and how values apply" />
