A pocket deck you can print: an iPhone 12 mini and a Torima M7 mini Bluetooth keyboard in a 3D-printed shell, in two builds.
- Clamshell. The keyboard sits in the base, the phone in a lid that stays open at 112°. 138 × 81 × 24.5 mm closed.
- Slate. One flat piece, phone above the keyboard. 138 × 140.5 × 13.4 mm.
In both, the phone drops into an open pocket, and its own MagSafe magnets hold it to a steel ring sticker. There is nothing over the screen and no latch to break.
The earlier slide-in versions, where the phone slides into a frame and needs no ring sticker, are in stl/slide-in/.
They come from commit b10fc7d, whose scripts build them; their last revisions haven't been printed.
Turn the models in your browser and download them at cyberdeck.cobanov.dev.
- An iPhone 12 mini
- A Torima M7 mini Bluetooth keyboard (133 × 68 × 9.5 mm)
- A MagSafe steel ring sticker, about 56 mm across
- For the clamshell, 2 × M3×20 socket head screws as hinge pins
These times and weights are for a Creality K1 in PLA: 0.2 mm layers, 3 walls, 20 % gyroid, no brim or skirt.
./slice_k1.sh slices every part with the profiles in profiles/.
| File | Part | How | Time | PLA |
|---|---|---|---|---|
stl/slate.stl |
Slate | Back down, no supports | 1 h 32 min | 53 g |
stl/base.stl |
Clamshell base | Floor down, no supports | 57 min | 32 g |
stl/lid.stl |
Clamshell lid | Back down, supports under the two hinge knuckles | 1 h 4 min | 35 g |
stl/slide-in/lid.stl |
Slide-in clamshell lid, no ring sticker (the earlier design, with the same base) | Plate down, tree supports under the knuckles | 1 h 22 min | 37 g |
stl/slide-in/slate.stl |
Slide-in slate, no ring sticker (the earlier design) | Back down, tree supports from the bed; cut the skins out of the screen and camera windows | 2 h 2 min | 55 g |
stl/fit_keyboard.stl |
A slice of the keyboard pocket, to try the fit | Flat | 7 min | 3 g |
stl/radius_gauge*.stl |
A corner radius gauge and its case, for another phone or keyboard | Flat | 1 h 3 min | 28 g |
- Stick the ring sticker into the round recess in the phone pocket.
- Press the keyboard in, keys up. Friction holds it. To charge it, push it out through the window in the back.
- Drop the phone in screen out, camera on the left. To take it out, push it up through the window in the back.
- Clamshell only: close the lid on the base so each lid knuckle sits between two base knuckles. Drive an M3×20 in from each side; the screws are the hinge pins, and tightening them adds friction.
Every measurement is a named parameter. The shared ones are in deck.py: the keyboard, the phone, the fits and the
MagSafe pocket. cyberdeck.py and slate.py build the two shells and assert that everything fits: both pockets hold
their part, the phone lifts straight out, the lid swings clear and stays open on its own. radius_gauge.py builds
the gauge.
freecadcmd slate.py # or cyberdeck.py, radius_gauge.pyEach script rebuilds its .FCStd, STLs and render meshes. In FreeCAD's Python console, use
p = "<repo>/slate.py"; exec(open(p).read(), {"__file__": p}). You'll most likely change these:
RING_D, your ring sticker's diameter.MAG_DXandMAG_DYmove the ring off the phone's centre; leave them at 0 for the iPhone 12 mini, whose MagSafe sits at the centre on Apple's dimensional drawing.CORNER_R, the corner radius shared by the phone and keyboard. Print the radius gauge and find the tile whose arc touches all along.
render/scene.py renders the decks on an oak desk in Blender 5.2 (Cycles). The HDRI and wood in render/assets/
are CC0 from Poly Haven.
blender -b -P render/scene.py -- --render [--slate] [--color=mint|white|black] [shot ...]site/ holds cyberdeck.cobanov.dev, a static page with a three.js viewer.
site/deploy.sh publishes it with the models from the last commit.
The first clamshell and five slates printed in October and November 2026; the git log has what each one taught. The MagSafe slate printed on 1 November and fit well. Since then the side-key slot has moved to the button's place on Apple's dimensional drawing, the phone's clearance is 0.25 mm, and the slate's bed edge has a 1 mm chamfer so its camera corner doesn't lift. Those changes and the MagSafe lid haven't been printed yet. Nothing holds the clamshell's lid closed, and the keyboard has to come out of the slate to charge.
The phone runs DeckTerm, a landscape SSH terminal made for this deck.
The scripts, slicer profiles and site code are under the MIT License. The STL and FreeCAD models and the images are under CC BY 4.0: you can print, change, share and sell them if you credit Mert Cobanov and link to this repository. This covers the design files, not the iPhone or the Torima keyboard they fit. The site's JetBrains Mono font keeps its own OFL license.

