agentleFS
Seeed-ProjectsSeeed-Projects/Seeed-Jetson-DevelopTool/skills/codex/local-chatbot-multimodal/AGENTS.md

Seeed-Jetson-DevelopTool / local-chatbot-multimodal

AGENTS.md57 starsChanged 4 months agoMITView on GitHub

Build a voice-interactive AI chatbot on Jetson using Ollama (LLM), NVIDIA Riva (STT/TTS), and Docker. Supports real-time speech-to-text, local LLM inference, and text-to-speech — fully offline with no cloud dependencies. Requires JetPack 6.0+ and NGC API key.

The file

We split this AGENTS.md into the rules it gives an agent

5 rules. About 0 are common, 3 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈3

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Run one phase at a time. After each phase:

    line 14
  2. Very specific:

    If output contains [STOP] → stop, consult the failure decision tree.

    line 16
  3. Very specific:

    If output ends with [OK] → tell the user "Phase N complete" and proceed.

    line 17
  4. Distinctive:

    Run Ollama and pull a model:

    line 40
  5. Distinctive:

    Start the chatbot with your audio devices:

    line 143

≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
AGENTS.md

Voice-Interactive Chatbot on Jetson (Multimodal)

Deploy a fully local voice chatbot that listens, thinks, and talks back. Combines NVIDIA Riva for speech recognition and synthesis with Ollama for local LLM inference. Everything runs in Docker containers on Jetson — no cloud required.


Execution model

Run one phase at a time. After each phase:

  • Relay all output to the user.
  • If output contains [STOP] → stop, consult the failure decision tree.
  • If output ends with [OK] → tell the user "Phase N complete" and proceed.

Prerequisites

RequirementDetail
HardwareNVIDIA Jetson (AGX Orin recommended for larger models)
JetPack6.0+
DockerInstalled with NVIDIA runtime
NGC AccountAPI key from catalog.ngc.nvidia.com
AudioMicrophone and speaker connected to Jetson

Phase 1 — Install Jetson Containers and Ollama (~5 min)

git clone https://github.com/dusty-nv/jetson-containers
bash jetson-containers/install.sh

Run Ollama and pull a model:

jetson-containers run --name ollama $(autotag ollama)

Inside the container:

ollama run llama3.2:1b

Type /bye to exit after confirming the model loads.

Verify from host:

curl http://localhost:11434/api/tags

[OK] when curl returns JSON listing the model. [STOP] if Ollama container fails to start — check Docker and NVIDIA runtime.


Phase 2 — Install and configure NGC CLI (~3 min)

mkdir -p ~/ngc_setup && cd ~/ngc_setup
wget --content-disposition https://api.ngc.nvidia.com/v2/resources/nvidia/ngc-apps/ngc_cli/versions/3.36.0/files/ngccli_arm64.zip
unzip ngccli_arm64.zip
chmod u+x ngc-cli/ngc
echo "export PATH=\"\$PATH:$(pwd)/ngc-cli\"" >> ~/.bash_profile
source ~/.bash_profile
ngc config set

Enter your NGC API key when prompted.

[OK] when ngc config current shows your org/team. [STOP] if API key is rejected — regenerate at catalog.ngc.nvidia.com.


Phase 3 — Install NVIDIA Riva (~15–30 min)

mkdir -p ~/riva_setup && cd ~/riva_setup
ngc registry resource download-version nvidia/riva/riva_quickstart_arm64:2.16.0
cd riva_quickstart_arm64_v2.16.0

Edit config.sh to disable unused services:

sed -i 's/service_enabled_nlp=.*/service_enabled_nlp=false/' config.sh
sed -i 's/service_enabled_nmt=.*/service_enabled_nmt=false/' config.sh

Configure Docker NVIDIA runtime (if not already set):

sudo tee /etc/docker/daemon.json > /dev/null << 'EOF'
{
  "default-runtime": "nvidia",
  "runtimes": {
    "nvidia": {
      "path": "nvidia-container-runtime",
      "runtimeArgs": []
    }
  }
}
EOF
sudo systemctl restart docker

Initialize and start Riva:

sudo bash riva_init.sh
sudo bash riva_start.sh

[OK] when Riva services start without error (check docker ps for riva containers). [STOP] if init fails — check disk space (Riva models are large) and JetPack compatibility.


Phase 4 — Clone and run the chatbot (~2 min)

git clone https://github.com/kouroshkarimi/local_chatbot_jetson.git
cd local_chatbot_jetson
pip3 install -r requirements.txt

List audio devices:

python3 app.py --list-input-devices
python3 app.py --list-output-devices

Start the chatbot with your audio devices:

python3 app.py --input-device <input_id> --output-device <output_id>

[OK] when the chatbot starts listening and responds to voice input. [STOP] if audio devices not found — check connections and ALSA config.


Failure decision tree

SymptomAction
Ollama container won't startCheck NVIDIA runtime: docker info | grep -i runtime. Install nvidia-container-runtime if missing.
NGC download failsVerify API key: ngc config current. Check network connectivity.
Riva init fails with disk space errorRiva models need ~15 GB. Free space or use external storage.
Riva init fails with JetPack mismatchCheck Riva support matrix at docs.nvidia.com/deeplearning/riva.
No audio input detectedCheck arecord -l for recording devices. Verify microphone is connected.
No audio outputCheck aplay -l for playback devices. Test with speaker-test -t wav.
LLM response too slowUse a smaller model (llama3.2:1b). Check GPU utilization with jtop.
Docker permission deniedAdd user to docker group: sudo usermod -aG docker $USER. Log out and back in.

Reference files

  • references/source.body.md — Full project documentation with system architecture, Ollama model table, Riva setup details, and usage examples (reference only)

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.