The plan originally seemed simple enough: open the window, run the hose bundle through, done. That works. For a week. Maybe two. But I did not want to leave a window facing the street permanently open — and after a few days, the daily back-and-forth of feeding everything through became annoying enough that I started thinking about something different.
What makes the Midea PortaSplit interesting is that it combines the idea of a split AC with the setup and teardown flexibility of a regular portable unit. Outdoor unit outside, no thick exhaust hose eating back into your cooling efficiency — that actually makes a difference. The catch: the indoor and outdoor units cannot be separated, the refrigerant line is permanently connected. A simple core drill through the wall is not really an option either — or the hole would have to be as large as the outdoor unit itself. A window pass-through is actually ideal here: one larger opening to get the outdoor unit outside, and then just the small slot in the window frame when everything is closed.
Why I ended up cutting into the window at all
On my window, the improvised option stopped being a real option pretty fast. The window faces the street. Outside noise is a real factor, and leaving a ground-floor window open towards the street just does not feel right. Those common fabric or Velcro solutions for portable ACs only half-solve the problem — the window still ends up as a summer-only workaround, the kind you look at every evening and think: well, good enough I guess. I wanted something that stays installed, looks clean, and still lets the window close normally.
That also meant there was no magic clip-on answer with zero consequences. My version required a slot in the inner frame — not all the way through the entire window frame, but still a real intervention. I do not want to understate that.
For the actual cuts I used a hand metal saw for the vertical ones and a multitool with a saw blade for the horizontal ones. The multitool was the more important tool here: the horizontal cut sits right at the frame stop, where a regular saw barely has room to work. With the multitool, you can get in there. The actual challenge was not the tools but being as precise as possible — not because it is technically difficult, but because you really do not want to have to patch things up afterwards. Honestly, it was mostly a matter of hoping it would turn out fine.

The first version was built unapologetically for my window
The first model was perfectly adapted to my specific window — a heritage-approved plastic window with a fly screen and a transition edge to the windowsill that I cut into. Very specialized, barely transferable to other windows. The system ended up with three parts: a fixed frame insert that stays in the frame, a pass-through insert for the hose bundle during summer, and a blind insert for winter, when the AC is gone and the opening needs to be closed again.
In daily use that was exactly what I had been looking for. The AC stays put all summer. In autumn the blind insert goes back in, and the topic is basically parked for a few months. No daily setup and teardown.

What held up after roughly two years of real use
The most important thing first: on my window, the setup still works well. In exactly the uneventful way you want from a part like this. The adapter sits, the window closes normally, and there is no noticeable draft — the hose bundle is slim enough that the insert still seals reasonably well.
What I had not expected: how much this changes the overall feel of using the PortaSplit. The AC starts to behave more like a semi-permanent installation. Switch it on in the morning, off in the evening. No improvisation anymore.
One caveat I have to name: whether this works equally well on other window profiles, I genuinely do not know. My frame is a heritage-approved plastic window with a very specific profile. With different materials, different profiles, different installation situations, the result might look quite different. The model was never meant as a universal solution — the first version especially.

The uncomfortable but necessary disclaimer
Window Disclaimer
This is a personal maker project, not a universal building guide.
Anyone copying something like this may be modifying a window frame. That can affect sealing, structural behavior, warranty, rental agreements, moisture behavior, or break-in resistance. I cannot judge whether the same approach makes sense, or is even acceptable, on other windows.
Measure more than once, assess your own situation honestly, and when in doubt, do not cut.
Why this turned into an app
After publishing the first model, requests for the construction file came in fairly quickly. I shared it, but honestly a CadQuery file is not a useful starting point for someone who just wants to print a window adapter. Too window-specific, too much ramp-up required.
The real problem was: there was interest, but my model only fit my window. For everyone else it was inspiration at best. The next logical step was therefore not another fixed model but a generator. Measure the window, enter the values, generate matching parts — the annoying part should no longer be CAD work but getting the measurements right.
On top of that, I just wanted a vibe coding project. I already knew from first-hand experience what a generator like this needed — I had just built the problem, just brutally customized for my own window. So I put together the stack — Streamlit, Python, CadQuery — with OpenAI Codex.
What the generator currently does
The app is deliberately focused on this one problem: generating a printable window pass-through for the PortaSplit hose bundle from your own measurements. The workflow is direct:
- Record the relevant window dimensions in a structured way.
- Pre-visualize the geometry as a 2D cross-section — and check whether the numbers actually make sense.
- Generate 3D print files and documentation.
That 2D preview matters almost more than the form itself. A wrong number in an input field can look harmless. In the profile view, nonsense tends to reveal itself much faster.
The exports currently include:
- separate STL files for all parts
- one ZIP containing all STLs
- one JSON file with the full configuration
- one PDF with all relevant measurements — useful at the workbench or when you want to know six months later exactly what you measured
Before downloading, an export dialog shows a preview of all parts. Technically a developer feature I kept in — but it is satisfying to look at, and you immediately see whether all the configured options actually ended up on the parts.
Two newer features that mattered to me personally: First, there is now a recovery key. If a part needs reprinting — wear, a small change, just needing it again — you can load the complete configuration back directly without re-measuring everything. Second, configurations can now be submitted for the community. If you have window measurements that might be useful to others, you can submit them directly from within the app.


Technically it is half web app, half CAD tool
The interface runs in Streamlit because that was the pragmatic way to build a guided configurator for this. I did not want to turn it into a frontend project before it was even clear whether the generator would actually be useful for other windows in practice.
Underneath sits CadQuery. The parts are not made by stretching a prepared STL — they are rebuilt from the input parameters. That was the whole point. Once window profiles start differing, simple scaling stops being a serious answer.
The project was also very clearly built with vibe coding — iteratively built, rebuilt, tested, and thrown out again with OpenAI Codex. That worked surprisingly well for this mix of UI, geometry, and export logic. The direction, though, did not come from a prompt window. It came from a real window, a real AC unit, and some very specific constraints.
Frequently asked questions
How did you actually cut the frame?
For the vertical cuts I used a hand metal saw, for the horizontal ones a multitool with a saw blade. The multitool was the more important tool here because the horizontal cut sits right at the frame stop, where a regular saw barely has room to work.
One thing worth keeping in mind: work slowly and measure more than once. The slot does not have to look pretty — it disappears under the adapter — but it has to be in the right place.
Did cutting into the frame cause any problems?
On my window, not so far. The frame was not cut all the way through, just fitted with a slot wide enough for the hose bundle. I also screwed the insert in place rather than relying purely on friction.
That does not mean it is unproblematic on other windows. Frame profiles vary considerably. Do not transfer this approach blindly.
Does cold air come in during winter?
For me, no noticeable draft — in winter the blind insert goes in and the opening is closed again. My building is an older apartment block; airtightness is not going to be determined by the adapter alone in any case.
Why not just get a proper split AC?
Mainly cost and installation effort. A fixed split unit would be the cleaner technical solution, but in my situation it would probably have meant longer refrigerant lines, cable trunking, and considerably more disruption to the apartment. The PortaSplit was a good compromise: much more efficient than a classic portable AC with an exhaust hose, but less invasive than a fixed installation.
Why not just lay the hose bundle through an open window?
I wanted a solution that stays in place all summer. The daily routine of opening the window, feeding the bundle through, and improvising some kind of seal was already annoying after a few days. And a permanently open window was out of the question for noise, cooling efficiency, and general peace of mind.
Why not use a Styrofoam or acrylic panel in the window?
That can absolutely work — especially in quieter locations, upper floors, or when you do not want to touch the window frame at all. For my street-facing window I did not want a solution that looks from outside like a permanently blocked-up window. That mattered to me.
Would you build it again?
Yes. After two summers the setup still works exactly as I had hoped. No daily setup and teardown, the window closes normally, and the PortaSplit feels more like a semi-permanent installation than a portable AC that demands a new workaround every summer.
Started as a solution for exactly one window
This started as a very specific solution for a very specific problem: my window, my PortaSplit. The first model was so specialized that it was barely usable by anyone else directly. And yet, after publishing, there were requests, downloads, Reddit discussions. I had not expected that.
Now, after two summers with the pass-through and a generator that actually works: it feels good. Not as a finished product — it is not that — but as something that is genuinely useful and not just for exactly my window.
If you try it out: I am happy to hear back. Bugs, feature requests, reports from other installation situations — all welcome as issues in the GitHub repository. I can test a lot at my desk, but not every window.