# ContextWire
## UWAGA: this README.md is a placeholder and meant (for now) as a rough draft
### A Gloriously Over-Engineered Hardware Automation Framework
> Probably a huge mistake.
> But like, a powerful, scripted, glorious mistake.
ContextWire is your new hardware automation overlord.
It aims to talk to **Saleae**, **Bus Pirate**,
**Simplicity Commander**, and even your dusty **LXI o-scope**,
all from one place. No more juggling 17 terminals and making
ritual sacrifices to the demo gods โ just a single,
unified interface to script, control, and automate your lab gear.
## โ ๏ธ Current Status: Alpha AF
This project is in the very early stages of development.
Expect bugs, breaking changes, and moments of existential dread.
If it works, it's a miracle. If it breaks, you get to keep both pieces.
## โจ Core Features
* **๐ฌ Unified Control:** Access all your tools through a REST API,
WebSockets, or the Model Context Protocol (MCP)
for agentic AI interactions.
* **๐ Modular Drivers:** A plug-and-play architecture makes it
easy to add new hardware. If it has a port, we can probably talk to it.
Eventually.
* **๐งช Built for Embedded Devs:** Perfect for anyone who is sick
of vendor-specific GUIs and wants to script their hardware interactions.
* **๐ง Built with Python:** Because I hate myself just enough.
## ๐ Getting Started
*(This section is a placeholder for when things actually work.)*
**1. Installation (Theoretically):**
```
git clone https://github.com/skakri/contextwire.git
cd contextwire
# ???
cd ..
rm -rf contextwire
```
**2. Configuration:**
Copy the example environment file and pretend to fill it out.
```
cp .env.example .env
```
**3. Run It:**
Launch the server and pray (we use Python 3.x as default here,
don't be a caveman).
```
python -m contextwire.main --run-api --run-ws
```
## ๐ฆ Run Modes
ContextWire can be launched in several modes, simultaneously if you're
feeling brave:
* **Stateful MCP Server:** A server implementing the
Model Context Protocol, allowing agentic AI systems to maintain and
interact with hardware state and context.
* **REST API Server:** For stateless, command-based control.
Perfect for integration with scripts and CI/CD pipelines.
* **WebSocket Server:** For real-time, bidirectional communication.
Stream live data or build interactive remote shells.
## ๐ฆ Planned Device Support
| **Device / Interface** | **Status** | **Notes** |
| --- | --- | --- |
| Saleae Logic Analyzer | ๐ `WIP` | `logic2-automation` library |
| Simplicity Commander | โก๏ธ `Up Next` | Wrapping the `commander` CLI |
| Bus Pirate | โ `Planned` | Binary bitbang mode |
| LXI Instruments | ๐คฏ `Maybe` | via `lxi-tools` or similar |
| Sigrok-Supported Devices | ๐คฏ `Maybe` | The holy grail of driver support |
## ๐ค How to Contribute
Found a bug? Have a brilliant idea?
Want to add support for a new device? Excellent.
1. Fork the repository.
2. Create a new branch (`git checkout -b feature/your-awesome-idea`).
3. Make your changes.
4. Submit a pull request and tell me what you broke.
## ๐ License
Licensed under the **Apache 2.0 License**.
> Made with poor life choices.
> Also yes, I wrote parts of this README by wasting tokens
because I couldn't be bothered to write it myself.
> ~~No regrets~~ Some regrets.
Raw data
{
"_id": null,
"home_page": null,
"name": "contextwire",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.12",
"maintainer_email": null,
"keywords": "mcp, llm, agentic-ai, fastapi, rest, websocket, hardware, automation, hil, embedded, arm, cli, instrumentation, saleae, bus-pirate, lxi, sigrok",
"author": null,
"author_email": "Kristaps Karlsons <kristaps.karlsons@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/2f/56/2e52ca36d8c630bb606a8d53cf1765421565a85e69152ce97e8ff0df73b1/contextwire-0.0.1.tar.gz",
"platform": null,
"description": "# ContextWire\n\n## UWAGA: this README.md is a placeholder and meant (for now) as a rough draft\n\n### A Gloriously Over-Engineered Hardware Automation Framework\n\n> Probably a huge mistake.\n> But like, a powerful, scripted, glorious mistake.\n\nContextWire is your new hardware automation overlord. \nIt aims to talk to **Saleae**, **Bus Pirate**, \n**Simplicity Commander**, and even your dusty **LXI o-scope**, \nall from one place. No more juggling 17 terminals and making \nritual sacrifices to the demo gods \u2014 just a single, \nunified interface to script, control, and automate your lab gear.\n\n## \u26a0\ufe0f Current Status: Alpha AF\n\nThis project is in the very early stages of development. \nExpect bugs, breaking changes, and moments of existential dread. \nIf it works, it's a miracle. If it breaks, you get to keep both pieces.\n\n## \u2728 Core Features\n\n* **\ud83d\udcac Unified Control:** Access all your tools through a REST API, \nWebSockets, or the Model Context Protocol (MCP) \nfor agentic AI interactions.\n* **\ud83d\udd0c Modular Drivers:** A plug-and-play architecture makes it \neasy to add new hardware. If it has a port, we can probably talk to it. \nEventually.\n* **\ud83e\uddea Built for Embedded Devs:** Perfect for anyone who is sick \nof vendor-specific GUIs and wants to script their hardware interactions.\n* **\ud83d\udd27 Built with Python:** Because I hate myself just enough.\n\n## \ud83d\ude80 Getting Started\n\n*(This section is a placeholder for when things actually work.)*\n\n**1. Installation (Theoretically):**\n\n```\ngit clone https://github.com/skakri/contextwire.git\ncd contextwire\n# ???\ncd ..\nrm -rf contextwire\n```\n\n**2. Configuration:**\n\nCopy the example environment file and pretend to fill it out.\n\n```\ncp .env.example .env\n```\n\n**3. Run It:**\n\nLaunch the server and pray (we use Python 3.x as default here, \ndon't be a caveman).\n\n```\npython -m contextwire.main --run-api --run-ws\n```\n\n## \ud83d\udea6 Run Modes\n\nContextWire can be launched in several modes, simultaneously if you're \nfeeling brave:\n\n* **Stateful MCP Server:** A server implementing the \nModel Context Protocol, allowing agentic AI systems to maintain and \ninteract with hardware state and context.\n* **REST API Server:** For stateless, command-based control. \nPerfect for integration with scripts and CI/CD pipelines.\n* **WebSocket Server:** For real-time, bidirectional communication. \nStream live data or build interactive remote shells.\n\n## \ud83d\udce6 Planned Device Support\n\n| **Device / Interface** | **Status** | **Notes** |\n| --- | --- | --- |\n| Saleae Logic Analyzer | \ud83d\udd1c `WIP` | `logic2-automation` library |\n| Simplicity Commander | \u27a1\ufe0f `Up Next` | Wrapping the `commander` CLI |\n| Bus Pirate | \u2753 `Planned` | Binary bitbang mode |\n| LXI Instruments | \ud83e\udd2f `Maybe` | via `lxi-tools` or similar |\n| Sigrok-Supported Devices | \ud83e\udd2f `Maybe` | The holy grail of driver support |\n\n## \ud83e\udd1d How to Contribute\n\nFound a bug? Have a brilliant idea? \nWant to add support for a new device? Excellent.\n\n1. Fork the repository.\n2. Create a new branch (`git checkout -b feature/your-awesome-idea`).\n3. Make your changes.\n4. Submit a pull request and tell me what you broke.\n\n## \ud83d\udcdc License\n\nLicensed under the **Apache 2.0 License**.\n\n> Made with poor life choices.\n> Also yes, I wrote parts of this README by wasting tokens \nbecause I couldn't be bothered to write it myself.\n> ~~No regrets~~ Some regrets.\n",
"bugtrack_url": null,
"license": "Apache License (2.0)",
"summary": "A framework for automating hardware lab tools, featuring a Model Context Protocol (MCP) server for agentic AI interaction.",
"version": "0.0.1",
"project_urls": {
"Issues": "https://github.com/skakri/contextwire/issues",
"Repository": "https://github.com/skakri/contextwire"
},
"split_keywords": [
"mcp",
" llm",
" agentic-ai",
" fastapi",
" rest",
" websocket",
" hardware",
" automation",
" hil",
" embedded",
" arm",
" cli",
" instrumentation",
" saleae",
" bus-pirate",
" lxi",
" sigrok"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "eee17b5524c29894f7431ea4582e367833730ed2f350ecb0a2df5ba5b5b7a85c",
"md5": "04d31995ad467249c5c4512295a18771",
"sha256": "b301dc705f0ad2e2ae7ce86b4303fdb2f57691380c9004cea66351260809235c"
},
"downloads": -1,
"filename": "contextwire-0.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "04d31995ad467249c5c4512295a18771",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.12",
"size": 11371,
"upload_time": "2025-07-21T22:15:51",
"upload_time_iso_8601": "2025-07-21T22:15:51.549183Z",
"url": "https://files.pythonhosted.org/packages/ee/e1/7b5524c29894f7431ea4582e367833730ed2f350ecb0a2df5ba5b5b7a85c/contextwire-0.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2f562e52ca36d8c630bb606a8d53cf1765421565a85e69152ce97e8ff0df73b1",
"md5": "138758cfb96c7340260fa475d71a89ac",
"sha256": "f8030e1b258f0389efb76c0d2a927d5d4581b5d65f77a11547aeb3aae4bfbddb"
},
"downloads": -1,
"filename": "contextwire-0.0.1.tar.gz",
"has_sig": false,
"md5_digest": "138758cfb96c7340260fa475d71a89ac",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.12",
"size": 11162,
"upload_time": "2025-07-21T22:15:52",
"upload_time_iso_8601": "2025-07-21T22:15:52.801548Z",
"url": "https://files.pythonhosted.org/packages/2f/56/2e52ca36d8c630bb606a8d53cf1765421565a85e69152ce97e8ff0df73b1/contextwire-0.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-21 22:15:52",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "skakri",
"github_project": "contextwire",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "contextwire"
}