lcnc-suite — web UI for LinuxCNC
- Sandro
- Offline
- Senior Member
-
Less
More
- Posts: 77
- Thank you received: 37
17 Apr 2026 19:01 #345649
by Sandro
lcnc-suite — web UI for LinuxCNC was created by Sandro
Hello everyone
I've been working on a web UI for LinuxCNC for my own use and thought I'd share it in case anyone finds it useful. Note that I'm not a professional programmer and this was largely AI-assisted, so take it for what it is.
Greetings
github.com/bildobodo/lcnc-suite.git
I've been working on a web UI for LinuxCNC for my own use and thought I'd share it in case anyone finds it useful. Note that I'm not a professional programmer and this was largely AI-assisted, so take it for what it is.
Greetings
github.com/bildobodo/lcnc-suite.git
Attachments:
The following user(s) said Thank You: Bari, tommylight, 0x2102, MX_Master, yrsiddhapura, roland, COFHAL, onceloved, Rookie0, NWE
Please Log in or Create an account to join the conversation.
- andypugh
-
- Offline
- Moderator
-
Less
More
- Posts: 19854
- Thank you received: 4635
17 Apr 2026 19:42 #345653
by andypugh
Replied by andypugh on topic lcnc-suite — web UI for LinuxCNC
Looks impressive.
Please Log in or Create an account to join the conversation.
- tommylight
-
- Away
- Moderator
-
Less
More
- Posts: 21578
- Thank you received: 7365
17 Apr 2026 19:44 #345654
by tommylight
Replied by tommylight on topic lcnc-suite — web UI for LinuxCNC
+1Looks impressive.
Please Log in or Create an account to join the conversation.
- Steve303
- Offline
- New Member
-
Less
More
- Posts: 9
- Thank you received: 0
22 Apr 2026 13:51 #345840
by Steve303
Replied by Steve303 on topic lcnc-suite — web UI for LinuxCNC
I really like this. Are you running your router/mill on your web UI?
Please Log in or Create an account to join the conversation.
- Sandro
- Offline
- Senior Member
-
Less
More
- Posts: 77
- Thank you received: 37
25 Apr 2026 13:03 #345917
by Sandro
Replied by Sandro on topic lcnc-suite — web UI for LinuxCNC
Thank you all 
Currently I am only running first tests on my machine. But mostly in sim. Still a lot of bug fixing to do. I was recently working on some performance improvements on the development branch which I will merge to main soon.
Currently I am only running first tests on my machine. But mostly in sim. Still a lot of bug fixing to do. I was recently working on some performance improvements on the development branch which I will merge to main soon.
Please Log in or Create an account to join the conversation.
- rhscdn
- Offline
- Junior Member
-
Less
More
- Posts: 32
- Thank you received: 3
25 Apr 2026 20:47 - 25 Apr 2026 20:49 #345925
by rhscdn
Replied by rhscdn on topic lcnc-suite — web UI for LinuxCNC
Looks fantastic. Its great seeing more UI options beyond Qt. Just curious, is the display optimized for touch or keyboard input?
Being more of a C/C++ person, I’ve been building a similar pet project focused on a C++ interface layer for LinuxCNC. The idea was to wrap both the NML and HAL polling sides in a clean, multi-client-safe bridge so the same core can support a WebSocket interface for remote clients and a Node.js addon for local UIs. The main goal is to decouple machine access from the frontend layer, making it possible to run multiple displays and control interfaces against a single machine. It's proving to be about as much work as I anticipated
Being more of a C/C++ person, I’ve been building a similar pet project focused on a C++ interface layer for LinuxCNC. The idea was to wrap both the NML and HAL polling sides in a clean, multi-client-safe bridge so the same core can support a WebSocket interface for remote clients and a Node.js addon for local UIs. The main goal is to decouple machine access from the frontend layer, making it possible to run multiple displays and control interfaces against a single machine. It's proving to be about as much work as I anticipated
Last edit: 25 Apr 2026 20:49 by rhscdn.
The following user(s) said Thank You: NWE
Please Log in or Create an account to join the conversation.
- rodw
-
- Offline
- Platinum Member
-
Less
More
- Posts: 11897
- Thank you received: 4047
25 Apr 2026 23:12 #345929
by rodw
Don't stop this project.
Replied by rodw on topic lcnc-suite — web UI for LinuxCNC
Looks fantastic. Its great seeing more UI options beyond Qt. Just curious, is the display optimized for touch or keyboard input?
Being more of a C/C++ person, I’ve been building a similar pet project focused on a C++ interface layer for LinuxCNC. The idea was to wrap both the NML and HAL polling sides in a clean, multi-client-safe bridge so the same core can support a WebSocket interface for remote clients and a Node.js addon for local UIs. The main goal is to decouple machine access from the frontend layer, making it possible to run multiple displays and control interfaces against a single machine. It's proving to be about as much work as I anticipated
Don't stop this project.
Please Log in or Create an account to join the conversation.
- grandixximo
-
- Offline
- Elite Member
-
Less
More
- Posts: 293
- Thank you received: 359
26 Apr 2026 00:57 #345933
by grandixximo
Replied by grandixximo on topic lcnc-suite — web UI for LinuxCNC
Looks very nice, good job, keep it up
Please Log in or Create an account to join the conversation.
- avive
- Offline
- New Member
-
Less
More
- Posts: 17
- Thank you received: 2
20 May 2026 10:01 #346510
by avive
Replied by avive on topic lcnc-suite — web UI for LinuxCNC
The trajectory of what gcode file of the maximum size can be visualized with acceptable performance? Or I’ll ask differently: how many segments are the maximum?
I was making a similar interface and ran into browser limitations in terms of memory, etc.
I was making a similar interface and ran into browser limitations in terms of memory, etc.
The following user(s) said Thank You: rhscdn
Please Log in or Create an account to join the conversation.
- Okojo
- Offline
- New Member
-
Less
More
- Posts: 2
- Thank you received: 3
21 May 2026 15:08 #346537
by Okojo
Replied by Okojo on topic lcnc-suite — web UI for LinuxCNC
Hello Sandro,
Thank you for sharing lcnc-suite — it's a genuinely impressive piece of work, and the 3D toolpath preview alone saved me weeks of development time.
I'd like to report that I've successfully used lcnc-suite as the frontend for a **non-LinuxCNC** CNC system, in case it's useful to you or others here.
---
**My Setup**
- SBC: Arduino UNO Q (Qualcomm QRB2210, Debian 13, Python 3.13)
- Motion controller: STM32U585 running grblHAL, connected via internal UART (ttyHS1)
- G-code interpreter: rs274ngc (from the linuxcnc-uspace package — the C extension only, no linuxcnc task/HAL)
- Machine: CoreXY pen plotter with CNC Shield V3
The key idea: instead of `import linuxcnc`, I wrote a custom FastAPI/asyncio gateway in Python that speaks the lcnc-suite WebSocket protocol on one side and rs274ngc + grblHAL on the other. This means lcnc-suite can work with backends other than LinuxCNC.
---
**What works**
File upload, 3D toolpath preview, program execution (rs274ngc → grblHAL streaming), step execution, jog (continuous + incremental + diagonal), E-STOP/pause/resume/abort, WCS switching (G54–G59), spindle and coolant control, file browser — everything I've tried works well.
---
**Undocumented requirements I found**
While building the gateway I hit a few things not covered in the README. Posting them here in case they help someone else attempting the same:
1. **`heartbeat` must return `{"type": "pong"}`** — any other response causes the WebSocket to disconnect after ~20 seconds.
2. **`GET /settings` is required on startup** — without it the UI enters a reload loop.
3. **`save_settings` WebSocket command must be handled** — sent frequently for jog speed etc., causes visible errors otherwise.
4. **`GET /gcode?path=...` is needed after upload** — the UI fetches file content via this endpoint to display in the editor.
5. **`GET /files` must return `FilesResponse` format** (`{ok, nc_dir, subdir, entries[]}`) — a plain array causes "No program files found".
6. **`status` broadcast must include `armed` field** — needed for the ON button to activate after ARM.
I've opened a GitHub issue with full details:
github.com/bildobodo/lcnc-suite/issues
The gateway source is here if anyone wants to look:
github.com/hoshigarasu/canon-grbl-bridge
Thanks again for building and sharing lcnc-suite.
Thank you for sharing lcnc-suite — it's a genuinely impressive piece of work, and the 3D toolpath preview alone saved me weeks of development time.
I'd like to report that I've successfully used lcnc-suite as the frontend for a **non-LinuxCNC** CNC system, in case it's useful to you or others here.
---
**My Setup**
- SBC: Arduino UNO Q (Qualcomm QRB2210, Debian 13, Python 3.13)
- Motion controller: STM32U585 running grblHAL, connected via internal UART (ttyHS1)
- G-code interpreter: rs274ngc (from the linuxcnc-uspace package — the C extension only, no linuxcnc task/HAL)
- Machine: CoreXY pen plotter with CNC Shield V3
The key idea: instead of `import linuxcnc`, I wrote a custom FastAPI/asyncio gateway in Python that speaks the lcnc-suite WebSocket protocol on one side and rs274ngc + grblHAL on the other. This means lcnc-suite can work with backends other than LinuxCNC.
---
**What works**
File upload, 3D toolpath preview, program execution (rs274ngc → grblHAL streaming), step execution, jog (continuous + incremental + diagonal), E-STOP/pause/resume/abort, WCS switching (G54–G59), spindle and coolant control, file browser — everything I've tried works well.
---
**Undocumented requirements I found**
While building the gateway I hit a few things not covered in the README. Posting them here in case they help someone else attempting the same:
1. **`heartbeat` must return `{"type": "pong"}`** — any other response causes the WebSocket to disconnect after ~20 seconds.
2. **`GET /settings` is required on startup** — without it the UI enters a reload loop.
3. **`save_settings` WebSocket command must be handled** — sent frequently for jog speed etc., causes visible errors otherwise.
4. **`GET /gcode?path=...` is needed after upload** — the UI fetches file content via this endpoint to display in the editor.
5. **`GET /files` must return `FilesResponse` format** (`{ok, nc_dir, subdir, entries[]}`) — a plain array causes "No program files found".
6. **`status` broadcast must include `armed` field** — needed for the ON button to activate after ARM.
I've opened a GitHub issue with full details:
github.com/bildobodo/lcnc-suite/issues
The gateway source is here if anyone wants to look:
github.com/hoshigarasu/canon-grbl-bridge
Thanks again for building and sharing lcnc-suite.
The following user(s) said Thank You: NWE
Please Log in or Create an account to join the conversation.
Time to create page: 0.531 seconds