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.
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,843 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository297 other files it gives its agents.
- AGENTS.mdAGENTS.md
- ai-nvrAGENTS.md
- allxon-ota-updateAGENTS.md
- allxon-setupAGENTS.md
- alwaysai-setupAGENTS.md
- backup-restoreAGENTS.md
- bsp-source-buildAGENTS.md
- clawdbot-developmentAGENTS.md
- cochl-sense-setupAGENTS.md
- cvedia-setupAGENTS.md
- dashcamnet-xavier-nx-multicameraAGENTS.md
- deciai-setupAGENTS.md
- deepseek-quick-deployAGENTS.md
- deploy-deepseek-mlcAGENTS.md
- deploy-depth-anything-v3AGENTS.md
- deploy-diaAGENTS.md
- deploy-efficient-vision-engineAGENTS.md
- deploy-frigateAGENTS.md
- deploy-live-vlm-webuiAGENTS.md
- deploy-nvbloxAGENTS.md
- deploy-ollama-anythingllmAGENTS.md
- deploy-riva-llama2AGENTS.md
- developtool-deviceAGENTS.md
- disk-encryptionAGENTS.md
- diy-bsp-buildAGENTS.md
- ethercat-communicationAGENTS.md
- ethercat-setupAGENTS.md
- finetune-llm-llama-factoryAGENTS.md
- fix-browser-snap-jetsonAGENTS.md
- gapi-setupAGENTS.md
- generative-ai-introAGENTS.md
- gpt-oss-liveAGENTS.md
- gr00t-n1-5-deploy-thorAGENTS.md
- gr00t-n1-6-deploy-agxAGENTS.md
- hardhat-setupAGENTS.md
- hybrid-bsp-dk-to-recomputerAGENTS.md
- imx477-a603-setupAGENTS.md
- j501-viola-fruit-sortingAGENTS.md
- jetpack5-ssd-boot-fixAGENTS.md
- jetpack-flash-wsl2AGENTS.md
- jetpack-jetson-overviewAGENTS.md
- jetpack-ota-updateAGENTS.md
- jetson-ai-toolsAGENTS.md
- jetson-docker-setupAGENTS.md
- jetson-faqAGENTS.md
- jetson-pc-wired-shareAGENTS.md
- jetson-project-galleryAGENTS.md
- jetson-resource-indexAGENTS.md
- jetson-tutorial-exercisesAGENTS.md
- ko-module-buildAGENTS.md
- l4t-differencesAGENTS.md
- langchain-output-formattingAGENTS.md
- lerobot-env-setupAGENTS.md
- llama-cpp-rpc-distributedAGENTS.md
- llm-interface-controlAGENTS.md
- local-chatbot-physicalAGENTS.md
- local-llm-text-to-imageAGENTS.md
- local-rag-llamaindexAGENTS.md
- lumeo-setupAGENTS.md
- maskcam-nanoAGENTS.md
- The first 60 shown.
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
- Distinctive: line 14
Run one phase at a time. After each phase:
- Very specific: line 16
If output contains [STOP] → stop, consult the failure decision tree.
- Very specific: line 17
If output ends with [OK] → tell the user "Phase N complete" and proceed.
- Distinctive: line 40
Run Ollama and pull a model:
- Distinctive: line 143
Start the chatbot with your audio devices:
≈ “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.
Files
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
| Requirement | Detail |
| Hardware | NVIDIA Jetson (AGX Orin recommended for larger models) |
| JetPack | 6.0+ |
| Docker | Installed with NVIDIA runtime |
| NGC Account | API key from catalog.ngc.nvidia.com |
| Audio | Microphone 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.shRun Ollama and pull a model:
jetson-containers run --name ollama $(autotag ollama)Inside the container:
ollama run llama3.2:1bType /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 setEnter 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.0Edit 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.shConfigure 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 dockerInitialize 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.txtList audio devices:
python3 app.py --list-input-devices
python3 app.py --list-output-devicesStart 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
| Symptom | Action |
| Ollama container won't start | Check NVIDIA runtime: docker info | grep -i runtime. Install nvidia-container-runtime if missing. |
| NGC download fails | Verify API key: ngc config current. Check network connectivity. |
| Riva init fails with disk space error | Riva models need ~15 GB. Free space or use external storage. |
| Riva init fails with JetPack mismatch | Check Riva support matrix at docs.nvidia.com/deeplearning/riva. |
| No audio input detected | Check arecord -l for recording devices. Verify microphone is connected. |
| No audio output | Check aplay -l for playback devices. Test with speaker-test -t wav. |
| LLM response too slow | Use a smaller model (llama3.2:1b). Check GPU utilization with jtop. |
| Docker permission denied | Add 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)
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.

