Skip to content

CoreWorxLab/caal-tools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

174 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CAAL Tool Registry

Community-driven voice tools for CAAL - the voice assistant that actually does things. Part of the CAAL Tool API.


🚧 Under Active Development This registry is under active development. Core functionality works, but not all bugs have been worked out. Expect rough edges. Contributions and bug reports welcome!


What is this?

This registry contains voice-first n8n workflows that extend CAAL's capabilities. Unlike generic n8n templates, these are optimized for:

  • Voice triggers (how you'd actually say it)
  • Low latency (< 5 second responses)
  • Conversational responses (not raw JSON)
  • One-click installation

Browse Tools

Have CAAL installed? Browse and install tools directly in your CAAL web interface.

Exploring before installing CAAL? Browse by category below:

Category Tools
Smart Home Home Assistant, lights, climate, security
Media Plex, Jellyfin, Jellyseerr, Sonarr, Radarr
Homelab TrueNAS, Docker, Proxmox, Unraid, PiHole
Productivity Calendar, tasks, email, notes
Developer GitHub, GitLab, CI/CD, code tools
Utilities Weather, timers, reminders
Sports ESPN, fantasy sports, scores, standings
Social Discord, Slack, Reddit, Telegram
Other Everything else

Install a Tool

Quick Install

curl -s https://raw.githubusercontent.com/CoreWorxLab/caal-tools/main/scripts/install.sh | bash -s <tool-name>

Example:

curl -s https://raw.githubusercontent.com/CoreWorxLab/caal-tools/main/scripts/install.sh | bash -s truenas-get-status

Manual Install

  1. Download the workflow.json from the tool's folder
  2. Import into n8n (Settings > Import from File)
  3. Create required credentials (listed in the tool's README)
  4. Update any service URLs
  5. Activate the workflow
  6. Tell CAAL to refresh: curl -X POST http://localhost:8889/reload-tools

Tool Types

Individual Tools

Single-purpose tools that do one thing well.

  • Named: service_action_object (e.g., truenas_get_status)
  • One workflow, one action

Tool Suites

Multi-action tools that group related functionality.

  • Named: service (e.g., google_tasks, truenas)
  • One workflow, multiple actions via Switch node
  • Actions like: get, add, complete, delete, control

Example: google_tasks suite handles:

  • "What's on my task list?" → action: get
  • "Add task buy groceries" → action: add
  • "Mark done the groceries task" → action: complete

Manifest Schema

Each tool has a manifest.json:

{
  "id": "unique-registry-id",
  "name": "google_tasks",
  "friendlyName": "Google Tasks",
  "version": "1.0.0",
  "description": "Manage Google Tasks - get, add, complete, and delete tasks.",
  "category": "productivity",
  "toolSuite": true,
  "actions": ["get", "add", "complete", "delete"],
  "icon": "google_tasks.svg",
  "voice_triggers": [
    "What's on my task list?",
    "Add task buy groceries"
  ],
  "required_services": ["google tasks"],
  "required_credentials": [...],
  "required_variables": [...],
  "author": { "github": "username" },
  "tier": "community",
  "tags": ["productivity", "google"]
}

Suite-specific fields:

  • toolSuite: true for suites, false for individual tools
  • actions: Array of available actions (suites only)
  • friendlyName: Human-readable display name
  • icon: Optional icon filename (see /icons/)

Contribute

We need tools! See CONTRIBUTING.md for how to submit your own.

Want a tool that doesn't exist? Request it!

Tool Quality Tiers

Tier Badge Meaning
Verified Gold Reviewed + tested + proven
Community Silver Passed automated review
Experimental Warning New submission

For CAAL Developers

CAAL can query this registry directly:

import httpx

REGISTRY_INDEX = "https://registry.caal.io/index.json"

async def search_registry(query: str) -> list[dict]:
    async with httpx.AsyncClient() as client:
        resp = await client.get(REGISTRY_INDEX)
        tools = resp.json()

    query_lower = query.lower()
    return [t for t in tools if query_lower in t['name'] or query_lower in t['description'].lower()]

License

MIT - Build what you want, share what you can.

About

No description, website, or topics provided.

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published