This release is a pre-release and may not be stable for production use.
Grok Gadgets gateway
The connection point between your Grok Bot and your gadgets: a built-in simulated light,
Linux gadgets and ESP32 devices. It serves six MCP tools. The owner tested USB and Wi-Fi hardware through the gateway.
Grok Bot ran local rehearse commands; native MCP access remains unverified (project status).
Independent project, not affiliated with SpaceXSI or xAI.
Writing style: ASD-STE100-inspired English. Use short sentences, active verbs and one instruction per step. This is not certified compliance.
Quick start
Needs Git and uv.
git clone https://github.com/adidshaft/grok-gadgets-gateway.git
cd grok-gadgets-gateway
uv sync --locked
uv run grok-gadgets-gateway init
uv run grok-gadgets-gateway serve --simulator
uv run grok-gadgets-gateway rehearse
Run rehearse in a second terminal while serve keeps running. It calls the six tools in the
order Grok Bot will: list the gadgets, set the simulated light blue, read its state. See
first success in five minutes.
Install with pip
The package is not on PyPI yet. Each GitHub release
has a wheel and SHA256SUMS. Install the wheel into a virtual environment with Python 3.11+:
python3 -m venv .venv
.venv/bin/python -m pip install https://github.com/adidshaft/grok-gadgets-gateway/releases/download/v0.1.0-alpha.10/grok_gadgets_gateway-0.1.0a10-py3-none-any.whl
.venv/bin/grok-gadgets-gateway --help
On an Intel Mac, cryptography has no prebuilt wheel and needs a Rust toolchain to build.
How it works
flowchart LR
B["Grok Bot"] -->|Local command| R["rehearse"]
R --> G["Gateway<br>Tested Mac setup"]
G --> S["Simulated light"]
G --> D["Linux / ESP32 gadgets"]
The gateway gives Grok Bot six tools:
| Tool | What it does |
|---|---|
gadgets_list_devices |
Lists gadgets, their commands and what each one does. Call it first. |
gadgets_get_state |
Reads a gadget's last reported state and how fresh it is. |
gadgets_command |
Sends a command and waits up to 3 seconds for the result. |
gadgets_command_status |
Reads the result of a slower command later. |
gadgets_read_events |
Reads button presses and other events in order. |
gadgets_diagnostics |
A support report with no tokens, state or arguments. |
A result is the gadget's own report, not proof of a physical effect.
Connect a gadget
init prints two settings blocks with absolute paths. Use the first when the connector starts the gateway itself (stdio). Use the second for a running serve at http://127.0.0.1:8766/mcp, with the bearer token from ~/.config/grok-gadgets/mcp-token. init --client http prints just one.
Gadgets connect to 127.0.0.1:8765 with their own token:
uv run grok-gadgets-gateway enroll desk-lamp --token-file desk-lamp.token
enroll desk-lamp --rotate issues a new token for the same gadget. Write gadgets with the
Linux SDK or the
ESP32 SDK; the Linux SDK's dev
command needs no token at all. Both ports are loopback only.
A Wi-Fi gadget on your home network can use the opt-in TLS listener on one private
address, serve --lan-listen; see Wi-Fi devices.
Grok Bot today
The owner tested Grok Bot local commands on 12 October 2026. Grok Bot ran rehearse on the Mac.
Read the connection evidence.
Native MCP calls and the public tunnel test remain open (tracking issue).
The Mac must keep the gateway running, including for Wi-Fi devices. serve is not an
OAuth server, and a tunnel does not replace the bearer token. Never expose port 8765. Read
remote access and security first.
Troubleshooting
| Symptom | Next step |
|---|---|
| Not sure which command | Run grok-gadgets-gateway --help. Use serve for a long-running process; stdio is for a connector that starts the gateway itself. |
| No simulated light | Start with --simulator. |
401 from rehearse |
Send Authorization: Bearer <token> with the exact contents of the token file. |
| Config rejected | Use strict v1 JSON within the documented bounds. |
Command still accepted or dispatched |
The gadget is slow. Poll gadgets_command_status; never resend with a new command ID. |
Learn more
- First success and the simulator guide
- Keep the gateway running as a background service.
- Local operation, architecture and protocol 0.1.0
- Demo without HTTP:
uv run python -m grok_gadgets_gateway.demo(uses test-only controls) - Shared docs and the website: hub repository and https://grok-gadgets.pages.dev/
Community
Questions, build photos and ideas are welcome on
r/GrokGadgets. Report bugs and request features in
GitHub Issues. New here? Pick a
good first issue
and read CONTRIBUTING. Get help: SUPPORT.
Contribute on the dev branch; main holds tagged stable releases (branches).
License and affiliation
Apache-2.0; see LICENSE and NOTICE. Grok Gadgets is an independent open-source project. It is not affiliated with, endorsed by or sponsored by SpaceXSI or xAI, which make Grok and Grok Bot. We reconstructed the pre-publication commit dates; see the history record.
Metadata
Release files for grok-gadgets-gateway 0.1.0a10
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| grok_gadgets_gateway-0.1.0a10.tar.gz | 185.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| grok_gadgets_gateway-0.1.0a10-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 252.2 kB
Release files / grok_gadgets_gateway-0.1.0a10.tar.gz
| Download URL | grok_gadgets_gateway-0.1.0a10.tar.gz |
|---|---|
| Size | 185.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c1b264c6abf6c814234e348bbd05bfc66a1fc301dab1350c2a98822f777b6fbe
|
|
BLAKE2b-256 checksum How to use checksums |
092c0802ec84951f58ecbac2eba2a94919dc71babf3382bcd699fb8c0dd5f383
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / grok_gadgets_gateway-0.1.0a10-py3-none-any.whl
| Download URL | grok_gadgets_gateway-0.1.0a10-py3-none-any.whl |
|---|---|
| Size | 67.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
99b68ee19299ee472111b5ea317e281e4eeb3f4dae7d22cc90a36f524ffece93
|
|
BLAKE2b-256 checksum How to use checksums |
a69caac14eaaea25de25eb52acf34b2eeb7a762b7ff8d7acbc99fd51ac62cea2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency log