Skip to content

Commit 3e72dbc

Browse files
committed
Merge branch 'development'
2 parents c0a2b15 + 54ed7fe commit 3e72dbc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+3449
-1043
lines changed

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ More details in the [**Quickstart Guide**](https://docs.bytebot.ai/quickstart).
103103
| 💬 Chat UI | `http://localhost:9992` | Agent UI |
104104
| 🤖 Agent API | `http://localhost:9991` | REST API |
105105
| 🌐 noVNC | `http://localhost:9990/vnc` | open in any browser |
106-
| 🖥️ VNC Client | `localhost:5900` | password‑less by default |
107106

108107

109108

docs/core-concepts/desktop-environment.mdx

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,6 @@ The desktop environment is configured with automation in mind:
4747

4848
## Remote Access
4949

50-
### VNC Server
51-
52-
The container runs a VNC server that allows direct access to the desktop:
53-
54-
- Accessible on port 5900 (default VNC port)
55-
- Compatible with standard VNC clients (RealVNC, TightVNC, etc.)
56-
- Supports standard VNC authentication
57-
5850
### noVNC
5951

6052
For browser-based access, noVNC is included:
@@ -76,10 +68,9 @@ Bytebot uses Xvfb (X Virtual Framebuffer) as its display server:
7668

7769
### Manual Interaction
7870

79-
You can directly interact with the desktop environment using:
71+
You can interact with the desktop environment using your web browser:
8072

81-
1. **VNC client** connected to `localhost:5900`
82-
2. **Web browser** navigated to `http://localhost:9990/vnc`
73+
1. Navigate to `http://localhost:9990/vnc`
8374

8475
### Programmatic Interaction
8576

docs/quickstart.mdx

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,8 @@ Getting started with Bytebot is simple and straightforward. You can run it as a
2626
docker-compose -f infrastructure/docker/docker-compose.core.yml up -d --no-build # start container
2727
```
2828

29-
This will start Bytebot with default settings. The container exposes several ports:
29+
This will start Bytebot with default settings. The container exposes one port:
3030
- `9990`: REST API and noVNC web access
31-
- `5900`: VNC server
32-
- `6080`: noVNC direct
33-
- `6081`: noVNC HTTP proxy
3431
</Accordion>
3532

3633
<Accordion icon="cube" title="Building the Docker Image (Alternative)">
@@ -52,10 +49,6 @@ Getting started with Bytebot is simple and straightforward. You can run it as a
5249
<Accordion icon="display" title="Accessing the Desktop">
5350
You can access the Bytebot desktop environment in two ways:
5451

55-
**Using a VNC Client**:
56-
Connect to `localhost:5900` with any VNC client.
57-
58-
**Using a Web Browser**:
5952
Navigate to `http://localhost:9990/vnc` in your web browser for noVNC access.
6053
</Accordion>
6154
</AccordionGroup>

docs/rest-api/input-tracking.mdx

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
---
2+
title: "Input Tracking"
3+
openapi: "POST /input-tracking/start"
4+
description: "Start and stop input tracking on the Bytebot desktop"
5+
---
6+
7+
The Bytebot daemon can monitor mouse and keyboard events through the
8+
`InputTracking` module. Tracking is disabled by default and can be toggled
9+
via the REST API. Tracked actions are streamed over WebSockets so that the
10+
agent can store them as messages.
11+
12+
## Start Tracking
13+
14+
`POST /input-tracking/start`
15+
16+
Begins capturing input events. The endpoint returns a simple status object:
17+
18+
```json
19+
{
20+
"status": "started"
21+
}
22+
```
23+
24+
## Stop Tracking
25+
26+
`POST /input-tracking/stop`
27+
28+
Stops capturing events and clears any internal buffers. The response is
29+
similar to the start endpoint:
30+
31+
```json
32+
{
33+
"status": "stopped"
34+
}
35+
```
36+
37+
## WebSocket Stream
38+
39+
When tracking is active, actions are emitted on the `input_action` channel of
40+
the WebSocket server running on the daemon. Clients can connect to the daemon
41+
and listen for these events to persist them as needed.

docs/rest-api/introduction.mdx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ Common HTTP status codes:
6464
Execute desktop automation actions like mouse movements, clicks, keyboard
6565
input, and screenshots
6666
</Card>
67+
<Card title="Input Tracking" icon="eye" href="/rest-api/input-tracking">
68+
Control and stream keyboard and mouse events from the desktop
69+
</Card>
6770
<Card title="Usage Examples" icon="code" href="/rest-api/examples">
6871
Code examples and snippets for common automation scenarios
6972
</Card>

infrastructure/docker/Dockerfile

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -203,17 +203,28 @@ RUN git clone https://github.com/novnc/noVNC.git /opt/noVNC \
203203
# -----------------------------------------------------------------------------
204204
# Copy package files first to leverage Docker cache
205205

206-
# Install dependencies required to build libnut-core
206+
# Install dependencies required to build libnut-core and uiohook-napi
207207
RUN apt-get update && \
208-
apt-get install -y cmake libx11-dev libxtst-dev libxinerama-dev libxi-dev libxrandr-dev git build-essential && \
208+
apt-get install -y \
209+
cmake \
210+
libx11-dev \
211+
libxtst-dev \
212+
libxinerama-dev \
213+
libxi-dev \
214+
libxt-dev \
215+
libxrandr-dev \
216+
libxkbcommon-dev \
217+
libxkbcommon-x11-dev \
218+
git build-essential && \
209219
rm -rf /var/lib/apt/lists/*
210220

211221

212222
COPY ./packages/bytebotd/ /bytebotd/
213223
WORKDIR /bytebotd
214224
RUN npm install --build-from-source
225+
RUN npm rebuild uiohook-napi --build-from-source
215226

216-
RUN npm run build
227+
RUN npm run build
217228

218229
WORKDIR /compile
219230

@@ -387,11 +398,8 @@ WORKDIR /home/bytebot
387398
# -----------------------------------------------------------------------------
388399
# 8. Port configuration and runtime
389400
# -----------------------------------------------------------------------------
390-
# - Port 9990: bytebotd
391-
# - Port 5900: VNC display for the Ubuntu VM
392-
# - Port 6080: noVNC client
393-
# - Port 6081: noVNC HTTP proxy
394-
EXPOSE 9990 5900 6080 6081
401+
# - Port 9990: bytebotd and external noVNC websocket
402+
EXPOSE 9990
395403

396404
# Start supervisor to manage all services
397405
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf", "-n"]

infrastructure/docker/docker-compose.core.yml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,6 @@ services:
1414
hostname: computer
1515
privileged: true
1616
ports:
17-
- "9990:9990" # bytebotd service
18-
- "5900:5900" # VNC display
19-
- "6080:6080" # noVNC client
20-
- "6081:6081" # noVNC HTTP proxy
17+
- "9990:9990" # bytebotd service & noVNC
2118
environment:
2219
- DISPLAY=:0

infrastructure/docker/docker-compose.yml

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,7 @@ services:
1414
hostname: computer
1515
privileged: true
1616
ports:
17-
- "9990:9990" # bytebotd service
18-
- "5900:5900" # VNC display
19-
- "6080:6080" # noVNC client
20-
- "6081:6081" # noVNC HTTP proxy
17+
- "9990:9990" # bytebotd service & noVNC
2118
environment:
2219
- DISPLAY=:0
2320
networks:
@@ -60,14 +57,16 @@ services:
6057
context: ../../packages/
6158
dockerfile: bytebot-ui/Dockerfile
6259
args:
63-
- NEXT_PUBLIC_BYTEBOT_AGENT_BASE_URL=${BYTEBOT_AGENT_BASE_URL:-http://localhost:9991}
64-
- NEXT_PUBLIC_BYTEBOT_DESKTOP_VNC_URL=${BYTEBOT_DESKTOP_VNC_URL:-ws://localhost:6080}
60+
- BYTEBOT_AGENT_BASE_URL=${BYTEBOT_AGENT_BASE_URL:-http://bytebot-agent:9991}
61+
- BYTEBOT_DESKTOP_VNC_URL=${BYTEBOT_DESKTOP_VNC_URL:-http://bytebot-desktop:9990/websockify}
6562
container_name: bytebot-ui
6663
restart: unless-stopped
6764
ports:
6865
- "9992:9992"
6966
environment:
7067
- NODE_ENV=production
68+
- BYTEBOT_AGENT_BASE_URL=${BYTEBOT_AGENT_BASE_URL:-http://bytebot-agent:9991}
69+
- BYTEBOT_DESKTOP_VNC_URL=${BYTEBOT_DESKTOP_VNC_URL:-http://bytebot-desktop:9990/websockify}
7170
depends_on:
7271
- bytebot-agent
7372
networks:

infrastructure/docker/supervisord.conf

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -68,17 +68,6 @@ stdout_logfile_maxbytes=0
6868
redirect_stderr=true
6969
depends_on=x11vnc
7070

71-
[program:novnc-http]
72-
command=python3 -m http.server 6081 --directory /opt/noVNC
73-
autostart=true
74-
autorestart=true
75-
startsecs=5
76-
priority=50
77-
stdout_logfile=/dev/stdout
78-
stdout_logfile_maxbytes=0
79-
redirect_stderr=true
80-
depends_on=websockify
81-
8271
[program:bytebotd]
8372
command=node /bytebotd/dist/main.js
8473
directory=/bytebotd
@@ -90,7 +79,7 @@ environment=DISPLAY=":0"
9079
stdout_logfile=/dev/stdout
9180
stdout_logfile_maxbytes=0
9281
redirect_stderr=true
93-
depends_on=novnc-http
82+
depends_on=websockify
9483

9584
[eventlistener:startup]
9685
command=echo "All services started successfully"

packages/bytebot-agent/package-lock.json

Lines changed: 92 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)