Download the PHP package chevere/xr-server without Composer
On this page you can find all versions of the php package chevere/xr-server. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download chevere/xr-server
More information about chevere/xr-server
Files in chevere/xr-server
Package xr-server
Short Description Lightweight debug utility
License Apache-2.0
Homepage https://docs.xrdebug.com
Informations about the package xr-server
xrDebug
xrDebug is a lightweight web-based debug software. Play video
Installation
xrDebug is available for Windows, macOS, Linux and FreeBSD. Download the latest xrdebug binary from the releases page.
From binary
- Go to the releases page.
- Download the appropriate binary for your operating system.
- Extract the downloaded file.
- Move the binary to a directory included in your
PATH
.
Optionally, you can run this command to install the latest version:
From source
Ensure you have Go installed.
Docker
Container images are available at ghcr.io/xrdebug/xrdebug.
Run the following command to start the server at port 27420
:
Usage
Run the server with the following command. Use a HTTP API to send messages to the server.
See the run documentation for examples.
Options
-a
: IP address to listen on (default: ``)-p
: Port to listen on (use0
for random, default:27420
)-c
: Path to TLS certificate file-z
: Path to TLS private key-e
: Enable end-to-end encryption (default:false
)-k
: (for-e
option) Path to symmetric key (AES-GCM AE)-s
: Enable sign verification (default:false
)-x
: (for-s
option) Path to private key (ed25519)-n
: Session name (default:xrDebug
)-i
: Editor to use (default:vscode
, options:atom
,bracket
,emacs
,espresso
,fleet
,idea
,macvim
,netbeans
,nova
,phpstorm
,sublime
,textmate
,vscode
,zed
)
Client libraries
The following clients are available:
- PHP client: xrdebug/php
- WordPress plugin: xrdebug/wordpress
(Contributions for other clients are welcome!)
Screens
Documentation
Documentation available at docs.xrdebug.com.
Features
Security & privacy
- Zero-persistence architecture - no data storage or logging
- Ed25519 signed requests
- End-to-end encryption using AES-GCM AE
Real-time collaboration
- Automatic broadcast of debug messages to all connected peers
- Multiple developers can watch the same debug session simultaneously
- Real-time updates without page refresh
- Share debugging sessions across your team
Advanced debugging
- Message filtering by Topics and Emotes
- Interactive debugging controls (Resume, Pause, Stop, Clear)
- Code execution flow control with pause/resume capabilities
- Customizable session naming for multiple debug instances
Developer experience
- Intuitive keyboard shortcuts for rapid debugging (R, P, S, C)
- One-click export to clipboard or PNG format
- Seamless integration with popular code editors
- FiraCode font rendering
Modern interface
- System-aware dark/light theme switching
- Fully responsive design for any screen size
- Portable HTML-based interface
- Clean, distraction-free debugging environment
System architecture
xrDebug follows a modular architecture with the following key components:
Core Components
The system consists of these main components:
-
Server
- Handles incoming debug messages
- Manages SSE connections
- Implements security measures
- Provides HTTP endpoints
-
Message Handler
- Processes incoming debug data
- Sanitizes content
- Manages message queuing
- Handles message broadcasting
-
Security Layer
- TLS encryption for HTTPS
- End-to-end message encryption
- Request signature verification
- Client Interface
- Real-time updates via SSE
- Message decryption
- Interactive debugging tools (pause, resume, stop)
- Editor integration (jump to file, line)
Data flow
HTTP API
Learn more about the HTTP API at the documentation.
GET /
To access the web interface, open a web browser and navigate to the server's root URL. The server will serve the web interface.
POST /messages
Sends a message to the server.
Parameters:
All parameters are optional, but at least one is required.
body
: The message body.emote
: The message type (default:info
).file_line
: The line number.file_path
: The file path.id
: The message ID.topic
: The message topic.
Responses:
200 OK
: Message sent.400 Bad Request
: Invalid request.
POST /pauses
Creates a pause lock.
Parameters:
id
: The ID of the pause lock.
The following parameters are optional:
body
: The message body.emote
: The message type (default:info
).file_line
: The line number.file_path
: The file path.topic
: The message topic
Responses:
201 Created
: Lock createdLocation: /pauses/{id}
.409 Conflict
: Lock already exists.
GET /pauses/{id}
Retrieves the status of an existing pause lock.
Parameters:
id
(path): The ID of the pause lock.
Responses:
200 OK
: Returns the pause lock (JSON).404 Not Found
: Lock not found.
DELETE /pauses/{id}
Deletes a pause lock.
Parameters:
id
(path): The ID of the pause lock.
Responses:
204 No Content
: Lock deleted.404 Not Found
: Lock not found.
PATCH /pauses/{id}
Updates a pause lock status to stop: true
.
Parameters:
id
(path): The ID of the pause lock.
Responses:
200 OK
: Lock updated, returns the pause lock (JSON).404 Not Found
: Lock not found.
GET /stream
Establishes a Server-Sent Events (SSE) connection.
Responses:
200 OK
: Returns the SSE stream.
Signed requests
Request signing using Ed25519 digital signatures to verify message origin authenticity. To use signed requests pass the -s
flag to the xrdebug
command. Optionally, you can pass the private key using the -x
flag.
To sign a request, the client must include the X-Signature
header on requests made to the xrDebug server. The signature is a base64 encoded string generated by signing the serialized post fields with the private key. If there's no fields sign an empty string.
Sign workflow
To sign a request server expect the following data workflow:
- Sort the post fields by key
- Concatenate the key-value pairs
- Sign the concatenated string
- Base64 encode the signature at
X-Signature
header
Example in PHP:
Example in Python:
The X-Signature
header should contain the base64 encoded signature generated by the client.
End-to-End encryption
End-to-end encryption (AES-GCM AE) between xrDebug server and the debugger web user interface client. To enable end-to-end encryption pass the -e
flag. Optionally, you can pass the symmetric key using the -k
flag.
The SSE stream at /stream
will be encrypted using the symmetric key. Decryption happens on the client-side (web browser).
License
Copyright Rodolfo Berrios A.
xrDebug is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
All versions of xr-server with dependencies
chevere/filesystem Version ^1.0.1
chevere/http Version ^0.4.0
chevere/parameter Version ^1.0.2
chevere/router Version ^0.6.0
chevere/schwager Version ^0.2.0
chevere/schwager-html Version ^0.1.0
chevere/standard Version ^1.0.1
chevere/throwable-handler Version ^1.0.0
chevere/var-dump Version ^2.0.0
middlewares/utils Version ^3.0
phpseclib/phpseclib Version ~3.0
relay/relay Version ~2.0
rodber/php-sse-react Version ^0.2.1
samejack/php-argv Version ^1.0