From sundial-org-awesome-openclaw-skills-4
Controls Tesla vehicles from macOS via the Tesla Owner API: auth, list cars, status, lock/unlock, climate, charging, location. Useful for checking car state or running safe remote commands with confirmation gates for disruptive actions.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sundial-org-awesome-openclaw-skills-4:my-teslaThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Author:** Parth Maniar — [@officialpm](https://github.com/officialpm)
CHANGELOG.mdREADME.mdVERSION.txtscripts/run_tests.shscripts/tesla.pytests/__init__.pytests/test_charge_port_status.pytests/test_charge_status_json.pytests/test_cmd_climate_defrost.pytests/test_cmd_climate_status.pytests/test_cmd_mileage_record.pytests/test_cmd_seats.pytests/test_cmd_status_summary.pytests/test_cmd_windows.pytests/test_defaults_permissions.pytests/test_formatting.pytests/test_location_rounding.pytests/test_mileage_db.pytests/test_mileage_export_filter.pytests/test_no_wake.pyAuthor: Parth Maniar — @officialpm
A practical Tesla control skill for Clawdbot built on teslapy.
TESLA_EMAIL env var set (your Tesla account email)TESLA_EMAIL="[email protected]" python3 {baseDir}/scripts/tesla.py auth
This opens a Tesla login URL. Log in, then paste the callback URL back into the CLI.
~/.tesla_cache.json (local only; best-effort chmod 0600)MY_TESLA_DEFAULT_CAR to a vehicle display name to pick a default car via env varpython3 {baseDir}/scripts/tesla.py default-car "Name" (writes ~/.my_tesla.json; best-effort chmod 0600)# List vehicles
python3 {baseDir}/scripts/tesla.py list
python3 {baseDir}/scripts/tesla.py list --json # machine-readable, privacy-safe
# Version
python3 {baseDir}/scripts/tesla.py version
python3 {baseDir}/scripts/tesla.py --version
# Debugging
# If something fails unexpectedly, add --debug for a full traceback
# (or set MY_TESLA_DEBUG=1)
python3 {baseDir}/scripts/tesla.py --debug status --no-wake
# Pick a car (optional)
# --car accepts: exact name, partial name (substring match), or a 1-based index from `list`
python3 {baseDir}/scripts/tesla.py --car "Model" status
python3 {baseDir}/scripts/tesla.py --car 1 report
# Set a default car (used when --car is not passed)
python3 {baseDir}/scripts/tesla.py default-car "My Model 3"
# One-line summary (best for chat)
python3 {baseDir}/scripts/tesla.py summary
python3 {baseDir}/scripts/tesla.py summary --no-wake # don't wake a sleeping car
# Summary as JSON (privacy-safe)
# Unlike `status --json`, this emits a small sanitized object (no location).
# Includes `usable_level_percent` when the vehicle reports it.
python3 {baseDir}/scripts/tesla.py summary --json
python3 {baseDir}/scripts/tesla.py summary --json --raw-json # raw vehicle_data (may include location)
# One-screen report (chat friendly, more detail)
# Includes battery/charging/climate + (when available) TPMS tire pressures.
# Includes "Usable battery" when the vehicle reports it (helpful for health/degradation).
# Also includes a quick openings summary (doors/trunk/frunk/windows) when available.
# When available, includes a compact seat heater summary line.
# When the vehicle reports it, includes scheduled departure / preconditioning / off-peak charging status.
python3 {baseDir}/scripts/tesla.py report
python3 {baseDir}/scripts/tesla.py report --no-wake
# Detailed status
python3 {baseDir}/scripts/tesla.py status
python3 {baseDir}/scripts/tesla.py status --no-wake
python3 {baseDir}/scripts/tesla.py status --summary # include one-line summary + detailed output
python3 {baseDir}/scripts/tesla.py --car "My Model 3" status
# JSON output (prints ONLY JSON; good for piping/parsing)
# NOTE: `status --json` outputs *raw* `vehicle_data`, which may include location/drive_state.
# Prefer `summary --json` (sanitized) or `report --json` (sanitized) unless you explicitly need the raw payload.
python3 {baseDir}/scripts/tesla.py summary --json # sanitized summary object (no location)
python3 {baseDir}/scripts/tesla.py report --json # sanitized report object (no location; includes scheduled charging + charge port state)
python3 {baseDir}/scripts/tesla.py status --json # raw vehicle_data (may include location)
python3 {baseDir}/scripts/tesla.py report --json --raw-json # raw vehicle_data (may include location)
python3 {baseDir}/scripts/tesla.py summary --json --raw-json # raw vehicle_data (may include location)
python3 {baseDir}/scripts/tesla.py charge status --json # includes usable battery + (when charging) power details (kW/V/A)
# Lock / unlock
python3 {baseDir}/scripts/tesla.py lock
python3 {baseDir}/scripts/tesla.py unlock
# Climate (status is read-only)
python3 {baseDir}/scripts/tesla.py climate status
python3 {baseDir}/scripts/tesla.py climate status --no-wake
python3 {baseDir}/scripts/tesla.py climate on
python3 {baseDir}/scripts/tesla.py climate off
python3 {baseDir}/scripts/tesla.py climate defrost on
python3 {baseDir}/scripts/tesla.py climate defrost off
python3 {baseDir}/scripts/tesla.py climate temp 72 # default: °F
python3 {baseDir}/scripts/tesla.py climate temp 22 --celsius
# Charging
python3 {baseDir}/scripts/tesla.py charge status
python3 {baseDir}/scripts/tesla.py charge status --no-wake
python3 {baseDir}/scripts/tesla.py charge start --yes
python3 {baseDir}/scripts/tesla.py charge stop --yes
python3 {baseDir}/scripts/tesla.py charge limit 80 --yes # 50–100
python3 {baseDir}/scripts/tesla.py charge amps 16 --yes # 1–48 (conservative guardrail)
# Scheduled charging (set/off are safety gated)
python3 {baseDir}/scripts/tesla.py scheduled-charging status
python3 {baseDir}/scripts/tesla.py scheduled-charging status --no-wake
python3 {baseDir}/scripts/tesla.py scheduled-charging set 23:30 --yes
python3 {baseDir}/scripts/tesla.py scheduled-charging off --yes
# Scheduled departure (read-only)
# Shows scheduled departure, preconditioning, and off-peak charging flags (when the vehicle reports them).
python3 {baseDir}/scripts/tesla.py scheduled-departure status
python3 {baseDir}/scripts/tesla.py scheduled-departure status --no-wake
python3 {baseDir}/scripts/tesla.py --json scheduled-departure status
# Location (approx by default; use --yes for precise coordinates)
python3 {baseDir}/scripts/tesla.py location
python3 {baseDir}/scripts/tesla.py location --no-wake
python3 {baseDir}/scripts/tesla.py location --digits 1 # coarser rounding
python3 {baseDir}/scripts/tesla.py location --digits 3 # a bit more precise (still approximate)
python3 {baseDir}/scripts/tesla.py location --yes
# Tire pressures (TPMS)
python3 {baseDir}/scripts/tesla.py tires
python3 {baseDir}/scripts/tesla.py tires --no-wake
# Openings (doors/trunks/windows)
python3 {baseDir}/scripts/tesla.py openings
python3 {baseDir}/scripts/tesla.py openings --no-wake
python3 {baseDir}/scripts/tesla.py openings --json
# Trunk / frunk (safety gated)
python3 {baseDir}/scripts/tesla.py trunk trunk --yes
python3 {baseDir}/scripts/tesla.py trunk frunk --yes
# Windows
python3 {baseDir}/scripts/tesla.py windows status
python3 {baseDir}/scripts/tesla.py windows status --no-wake
python3 {baseDir}/scripts/tesla.py windows status --json
# Windows (safety gated)
python3 {baseDir}/scripts/tesla.py windows vent --yes
python3 {baseDir}/scripts/tesla.py windows close --yes
# Seat heaters
python3 {baseDir}/scripts/tesla.py seats status
python3 {baseDir}/scripts/tesla.py seats status --no-wake
python3 {baseDir}/scripts/tesla.py seats status --json
# Seat heaters (safety gated)
# seat: driver|passenger|rear-left|rear-center|rear-right|3rd-left|3rd-right (or 0–6)
# level: 0–3 (0=off)
python3 {baseDir}/scripts/tesla.py seats set driver 3 --yes
# Sentry Mode (status is read-only; on/off safety gated)
python3 {baseDir}/scripts/tesla.py sentry status
python3 {baseDir}/scripts/tesla.py sentry status --no-wake
python3 {baseDir}/scripts/tesla.py sentry on --yes
python3 {baseDir}/scripts/tesla.py sentry off --yes
# Charge port door
python3 {baseDir}/scripts/tesla.py charge-port status
python3 {baseDir}/scripts/tesla.py charge-port status --no-wake
python3 {baseDir}/scripts/tesla.py charge-port status --json
# Mileage tracking (odometer) — local SQLite
python3 {baseDir}/scripts/tesla.py mileage init
python3 {baseDir}/scripts/tesla.py mileage record --no-wake --auto-wake-after-hours 24
python3 {baseDir}/scripts/tesla.py mileage status
python3 {baseDir}/scripts/tesla.py mileage export --format csv
python3 {baseDir}/scripts/tesla.py mileage export --format csv --since-days 7
python3 {baseDir}/scripts/tesla.py mileage export --format json
python3 {baseDir}/scripts/tesla.py mileage export --format json --since-ts 1738195200
# Charge port door open/close (safety gated)
python3 {baseDir}/scripts/tesla.py charge-port open --yes
python3 {baseDir}/scripts/tesla.py charge-port close --yes
# Fun / attention-grabbing
python3 {baseDir}/scripts/tesla.py honk --yes
python3 {baseDir}/scripts/tesla.py flash --yes
Some actions require an explicit confirmation flag:
unlock, charge start|stop|limit|amps, trunk, windows, seats set, sentry on|off, honk, flash, charge-port open|close, and scheduled-charging set|off require --yeslocation is approximate by default; add --yes for precise coordinates (or --digits N to control rounding)~/.tesla_cache.json).npx claudepluginhub joshuarweaver/cascade-ai-ml-agents-misc-2 --plugin sundial-org-awesome-openclaw-skills-4Control your Tesla vehicles - lock/unlock, climate, location, charge status, and more. Supports multiple vehicles.
Measures tread depth, interprets wear patterns, calculates remaining safe life, and determines tire replacement based on NHTSA safety thresholds and vehicle regulations.
Queries public CarJam NZ vehicle info (plate, VIN, chassis) via a no-login CLI. Returns make/model/year/colour/odometer snippets with structured JSON output.