Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Intecture APIs Build Status Coverage Status Gitter

Intecture is an API for managing your servers. Visit

API docs can be found here:

Intecture's APIs (cough and a binary) are the heart and soul of Intecture. Check out each component's for details:

  • core - The core API that does all the heavy lifting
  • bindings - Rust FFI and language bindings
  • proj - Helpers and boilerplate for building Intecture projects
  • agent - Tiny daemon that exposes the core API as a service (for your hosts!)

Getting started

Intecture is pretty light on external dependencies. In fact, all you'll need to get started is Rust!

Once you've installed Rust, create a new Cargo binary project:

cargo new --bin

Next, add Intecture to your Cargo.toml:

futures = "0.1"
intecture_api = {git = "", version = "0.4"}
tokio-core = "0.1"

This is all we need to do if we only want to manage the local machine. Just make sure you use the Local host type, like so:

// You can ignore these two lines. They are boilerplate from `tokio-core` that
// drive Intecture's asynchronous API.
let mut core = Core::new().unwrap();
let handle = core.handle();

let host = Local::new(&handle).and_then(|host| {
    // Do stuff on the local host...

// You can ignore this line. It is more `tokio-core` boilerplate.;

You can find some basic examples here: core/examples. Also you should refer to the API docs:

For remote hosts only

To manage a remote machine with Intecture, you need to take a few extra steps. On the remote machine...

Install Rust.

Clone this GitHub repository:

git clone

Build the project:

cd api && cargo build --release

Then run the agent, specifying an address to bind to:

target/release/intecture_agent --address

Remember, the agent must be running in order for the API to connect to this host.

Finally we can get back to what we came here for - Rust codez! To manage this machine, make sure you use the Plain remote host type, like so:

let host = Plain::connect("<ip_of_host>:7101").and_then(|host| {
    // Do stuff on the remote host...

Note the type is Plain, rather than Remote. At the moment, Intecture does no encryption, making it unsafe for use over insecure networks (i.e. the internet). The type Plain signifies this. In the future we will add support for encrypted remote host types as well, but for now, we cannot recommend strongly enough that you only use this on a secure local network.

What's new?

Check out for details.