Skip to content

About

Cross-platform remote agent for executing commands, transferring files, and synchronizing Linux and Windows systems.

Topics

Resources

Stars

5 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

73 Commits

Folders and files

Repository files navigation

CrossPilot GitHub stars

Windows server running with .env configuration

Remote execution, file transfer, and synchronization between Linux and Windows.

CrossPilot is a lightweight remote agent designed to control Windows and Linux machines from another system, through a dedicated binary protocol.

It lets you execute commands, transfer files, synchronize directories, and manage remote filesystems without requiring Remote Desktop, SSH, or SMB shares.

One agent. Any host. Full control.


✨ What you can do with CrossPilot

CrossPilot provides a single remote channel for system operations:

  • πŸ–₯️ Remote command execution
  • πŸ“€ File upload
  • πŸ“₯ File download
  • πŸ”„ Directory synchronization
  • ⚑ Incremental transfers
  • πŸ” SHA-256 file verification
  • πŸ“ Recursive directory creation
  • πŸ—‘οΈ File and directory deletion
  • πŸ“‹ Remote filesystem listing
  • πŸš€ Automatic agent deployment
  • πŸ•’ Ephemeral (agentless-like) execution
  • 🧩 Windows and Linux support
  • πŸ“¦ Standalone agent
  • 🐳 Usable with VMs, containers, and physical machines

CrossPilot is designed to be used both manually from the CLI and as a component of automation systems.


πŸ—οΈ Architecture

CrossPilot uses a controller / agent architecture.

              CrossPilot Controller
                       β”‚
                       β”‚ TCP
                       β”‚
             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
             β”‚                   β”‚
       CrossPilot Agent    CrossPilot Agent
             β”‚                   β”‚
          Windows              Linux

The controller sends operations to the remote agent.

The agent executes the operation using the operating system's native primitives.

Supported operations

EXEC
PUT
GET
LIST
MKDIR
DELETE
SYNC

The goal is to keep the protocol operating-system independent.


🎯 Why CrossPilot?

CrossPilot was born to solve a simple problem:

How do you control a remote machine without depending on a specific remote access system?

SSH is excellent for Linux.

WinRM is useful in the Windows ecosystem.

SMB is great for sharing filesystems.

RDP is designed to interact with a desktop.

CrossPilot takes a different approach:

a single protocol for remote system operations.

This makes it possible to build on top of the same agent:

  • CLI tools
  • provisioning systems
  • DevOps automation
  • CI/CD
  • VM management
  • remote machine management
  • orchestrators
  • development tools
  • desktop applications

⚑ Remote Execution

CrossPilot can run programs and commands on the remote machine.

On Windows it can run, for example:

cmd.exe
PowerShell
.exe
.bat
.cmd

On Linux the backend can use:

/bin/sh
bash

Conceptual example:

crosspilot exec server01 -- "hostname"

or:

crosspilot exec server01 -- "powershell Get-Process"

The agent starts the process on the remote system and forwards the output to the controller.


πŸ“ File Transfer

CrossPilot supports bidirectional transfer:

Controller ──────── PUT ────────> Agent
Controller <──────── GET ──────── Agent

Example:

crosspilot put ./app.exe server01:/opt/app/app.exe

and:

crosspilot get server01:/var/log/app.log ./app.log

The transfer uses a dedicated binary protocol instead of going through shell command encoding.


⚑ Incremental Transfers

For large files, CrossPilot can avoid re-transferring data that is already present on the remote system.

The file is split into segments and block signatures are generated.

Local file
     β”‚
     β”œβ”€β”€ block 1
     β”œβ”€β”€ block 2
     β”œβ”€β”€ block 3
     β”œβ”€β”€ block 4
     └── ...
             β”‚
             β–Ό
       Remote signatures
             β”‚
             β–Ό
       Delta generation
             β”‚
             β–Ό
    Transfer of only the
       necessary data

This approach is particularly useful for:

  • disk images
  • large databases
  • build artifacts
  • application directories
  • VMs
  • files that change frequently

πŸ”„ Directory Sync

CrossPilot can synchronize a local directory with a remote directory.

crosspilot sync ./build server01:/opt/myapp

During synchronization, the following are compared:

  • path
  • element type
  • size
  • possibly checksum

Elements can be classified as:

NEW
CHANGED
MISSING
IDENTICAL
CONFLICT

Example:

./build/
β”œβ”€β”€ app.exe
β”œβ”€β”€ config.json
└── assets/
    β”œβ”€β”€ logo.png
    └── index.html

can be synchronized to:

C:\Apps\MyApp\

or:

/opt/myapp/

🧹 Delete

Synchronization can optionally remove elements from the remote system that no longer exist in the source.

crosspilot sync ./build server01:/opt/myapp --delete

For destructive operations, the following mode is also available:

crosspilot sync ./build server01:/opt/myapp --dry-run

which shows the changes without applying them.


πŸ” Data Integrity

CrossPilot uses SHA-256 to verify transfer integrity.

It is possible to verify:

  • individual segments
  • complete files
  • received content

The transfer also uses temporary files:

file.exe.part

The file is made available under its final name only after the transfer completes and is verified.

This prevents a partially transferred file from being left at the destination path.


πŸ“‘ Protocol

CrossPilot uses a proprietary binary TCP protocol.

Each message is encapsulated in a frame:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Magic    β”‚ Version β”‚ Type   β”‚ Payload Len β”‚ Payload β”‚
β”‚ 4 bytes  β”‚ 1 byte  β”‚ 1 byte β”‚ 4 bytes     β”‚ N bytes β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Magic:

DFB1

The protocol supports messages for:

PUT
GET
SIGNATURE
DELTA
ACK
ERROR
META
LIST
MKDIR
DELETE
QUIT

The structure is designed to allow new operations to be added without changing the base framing.

The shell channel also accepts quit/exit to stop a running agent (crosspilot quit), and an ephemeral "agentless-like" mode (--ephemeral): the agent runs the operation, then shuts itself down β€” nothing is left running on the remote host.

πŸ–₯️ Windows and Linux

CrossPilot is designed to separate:

             Protocol
                  β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚                   β”‚
 Windows backend       Linux backend
        β”‚                   β”‚
        β–Ό                   β–Ό
   Win32 / cmd          POSIX / shell
   Task Scheduler       systemd
   Job Objects          process groups

The protocol remains common while operating-system-specific operations are implemented by the respective backend.

This allows the same operating model to be used regardless of the remote system.


πŸš€ Agent Deployment

The controller can also handle agent bootstrap.

On Windows, deployment can use WinRM to:

  1. check for the agent's presence
  2. check the version
  3. transfer the executable if necessary
  4. configure the environment
  5. start the agent

Once the agent is running, normal operations use the CrossPilot protocol.

In this way, WinRM can be used as the initial control plane, while CrossPilot becomes the operational data plane.

          Bootstrap
             β”‚
           WinRM
             β”‚
             β–Ό
       Install Agent
             β”‚
             β–Ό
       CrossPilot TCP
             β”‚
      β”Œβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”
      β–Ό      β–Ό      β–Ό
     EXEC   FILE   SYNC

πŸ“¦ Standalone Agent

The agent is designed to be distributed as a single executable.

This makes it possible to use it in:

  • workstations
  • servers
  • VMs
  • cloud machines
  • physical machines
  • test environments
  • CI/CD
  • containers

There is no need to install a complex runtime framework on the remote system.


πŸ”§ Usage Examples

Deploying an application

crosspilot sync ./dist server01:/opt/myapp --delete

then:

crosspilot exec server01 -- "/opt/myapp/start.sh"

Managing a Windows server

crosspilot exec win01 -- "powershell Get-Service"

Upload:

crosspilot put ./app.exe win01:"C:\Apps\app.exe"

Collecting logs

crosspilot get server01:/var/log/app.log ./logs/app.log

Updating a VM

crosspilot sync ./release server01:/opt/release

Files that are already identical can be skipped, and modified files can use incremental transfer.


🧩 Possible Use Cases

CrossPilot can be used as a building block for:

DevOps

  • deployment
  • provisioning
  • updates
  • log collection
  • artifact management

CI/CD

Build
  β”‚
  β–Ό
CrossPilot
  β”‚
  β”œβ”€β”€ Upload
  β”œβ”€β”€ Sync
  β”œβ”€β”€ Execute
  └── Verify

Virtualization

It can be used to manage Windows and Linux VMs without necessarily requiring a guest-specific protocol.

Remote automation

An orchestrator can use CrossPilot as a backend to execute operations on nodes.


🧠 Philosophy

CrossPilot does not want to be yet another remote desktop.

It does not want to replace:

  • RDP
  • SSH
  • SMB
  • WinRM

Its goal is to provide a simpler, more uniform layer for automation and remote operating system control.

             CrossPilot
                  β”‚
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚          β”‚          β”‚
     EXEC       FILE       SYNC
       β”‚          β”‚          β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                  β”‚
             Remote Host

A controller talks to an agent.

The agent translates operations into the language of the operating system.


⭐ Support the project (aka "The Star Section")

Building tools like this is fun, but seeing stars is better!

If this tool saved you time or just made your life easier, please drop a star on this repository. It costs you $0.00, but it gives me the fuel (and the dopamine) to keep building and sharing more cool stuff for free.

Go on, click that star. You know you want to! πŸ˜‰


🀝 Contributing

Pull requests, issues, and contributions are welcome.

Particularly interesting areas are:

  • Linux backend
  • Windows backend
  • protocol security
  • transfer performance
  • synchronization
  • CLI
  • API
  • cross-platform testing
  • documentation

CrossPilot

One agent. Any host. Full control.

About

Cross-platform remote agent for executing commands, transferring files, and synchronizing Linux and Windows systems.

Topics

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages