Easy for everyone

Spark's tools are designed to be easy to use for novices, so designers, students, and artists without a technical background can build connected products. At the same time, our tools are powerful enough for a skilled embedded systems designer, and there are many ways to work with Spark that give you full control over the system down to the bare metal.


Get started with our Kits and Shields. These come with everything you need to get started without a soldering iron or even a line of code. From there you can grow and learn as you try new things!


Perhaps you have experience with software programming, but you're new to hardware? Our REST API means you can create incredible experiences interacting with hardware on the web or in a mobile app with an API that looks like Twilio, Stripe, or Twitter.


The Spark Core is open source down to the bare metal. You can dig through our libraries, compile your own code, and optimize anything and everything for your project. Go as fast as you want.

Development kits

Spark's hardware dev kit, the Spark Core, provides everything you need to build a connected product. We combine a powerful ARM Cortex M3 micro-controller with a Wi-Fi module to get you started quickly. The design is open source, so when you're ready to integrate the Core into your product, you can.

Spark Cores are $39 retail, cheaper in volume, and the hardware can be integrated into your product for a total cost of less than $15 including the Core components.

Learn more Buy a Spark Core


Spark's web development environment lets you create a connected product in the cloud, without installing a toolchain on your system. You can save your code online, include libraries developed by the community, and flash code to your device wirelessly. We're constantly improving the capabilities of the web IDE, so watch for new features.

Try it out

Command line interface

If you're the kind of coder who misses the good old days of DOS, don't worry. Spark's command line tool (CLI) is designed to bring you the speed of mouse-free development that you love so much. Compiling, Wi-Fi setup, serial monitor and more are all availabe in the CLI.

Download it
$ spark list

Checking with the cloud...
Retrieving cores... (this might take a few seconds)
teapot (0123456789ABCDEFGHI) 0 variables, and 1 functions
    int brew(string)

$ spark call teapot brew



We're all about using the right tool for the job. When you write embedded code, you can choose between Wiring (the language of Arduino), C/C++ or even ARM assembly, depending on your level of experience and self-hate. On the web side, you can work with whatever language you prefer; our community has developed language wrappers for nearly every modern programming language including Node.js, Ruby, Python, and more.

/* This is the firmware for a web-connected LED */
int LED = D7;
int state = 0;

void setup() {
  pinMode(LED, OUTPUT);
  Spark.function("toggle", toggleLED);

void loop() {}

int toggleLED(String args) {
  if (state == 1) {
    digitalWrite(LED, LOW);
  } else {
    digitalWrite(LED, HIGH);
  state = !state;
// Let's play in Node.js.
// First, run in the terminal:
//   npm install sparkcloud
// Then:

var spark = require('sparkcloud')('your_access_token')
var core = spark.device('your_device_id')

// Blink an LED every 1000ms
setInterval(function() {
  core.func('toggle', console.log);
}, 1000);


Spark's community has developed dozens of libraries to simplify development with a variety of components like Neopixels, temperature sensors, I2C displays, and more. No need to search for libraries; the ones developed and selected by the community are available right in the web IDE.


Every device connected to Spark OS automatically has a REST API. Write functions in your device's firmware and call them from a web or mobile app in real-time from anywhere in the world. Remotely POST a function call, GET a variable, or PUT new firmware. We use the language of HTTP to give you direct access to the device in a secure, controlled way.

int temp = 0;

void setup() {
  pinMode(D7, OUTPUT);
  pinMode(A0, INPUT);
  Spark.function("turnon", turnOn);
  Spark.variable("temperature", &temp, INT);

void loop() {
  temp = analogRead(A0);

int turnOn(String args) {
  digitalWrite(D7, HIGH);
  return 1;

  "id": "0123456789abcdef01234567",
  "name": "teapot",
  "connected": true,
  "return_value": 1


  "id": "0123456789abcdef01234567",
  "name": "teapot",
  "connected": true,
  "variable": "temperature"
  "result": 683


The REST API gives you one-to-one communications, but what about one-to-many? Spark OS also includes pub/sub communications so that devices can talk to one another (by publishing and subscribing to the same topics) or broadcast messages to the world. It's like Twitter for things.
// Let's read from a PIR motion sensor

void setup() {
  pinMode(D0, INPUT);

void loop(){
  if (digitalRead(D0) == HIGH) {
    Spark.publish("spark-hq/motion", "motion detected!");

Open source

Our hardware, firmware libraries, language wrappers, and mobile app templates are all open source, and we even provide an open source version of our cloud services for small deployments (up to thousands of devices). This puts you in control of your products. Don't get trapped; be your own ecosystem by maintaining control over the full tech stack behind your product.


Hardware designs are licensed under a Creative Commons license. While other development tools of a similar design must also be open source, the hardware designs can be used in a proprietary product whose design will naturally diverge from ours.


Firmware libraries are licensed under an LGPL license. Improvements to our libraries must be open sourced and contributed back to the community; however, proprietary applications can be built on top of our libraries without licensing issues.


Our cloud software is licensed under an AGPL/LGPL license; the Spark protocol module is LGPL and can be used in proprietary services, while the Spark server is AGPL licensed and improvements to the server must be open sourced. Commercial licenses are avialable; contact us for more information.


All language wrappers and SDKs developed by Spark are released under a business-friendly Apache license; language wrappers developed by the community are delivered under a wide range of licenses.


At some point you'll move from feature development to figuring out how your product will work out in the field with real customers. Spark OS is designed to make the transition from prototyping to deployment as seamless as possible.


Nobody wants a start-up in their supply chain. When you're ready to scale up manufacturing, the design of the Core is easy to integrate into your product. Your product can be programmed using any standard jig and process.


Purchase the components of the Spark Core from major semiconductor companies like Texas Instruments and STMicroelectronics. All the components on the Spark Core are widely available, with reasonable 6-8 week lead times, and will cost you less than $15 per device.


The components of the Spark Core are easy to assemble using any standard PCBA process. The only specific requirement is impedance matching for the RF circuit (50 ohm) leading to the antenna. Easy peasy.


Your product is programmed/tested with a JTAG interface, like any standard ARM microcontroller. Design your own programming and testing procedure to optimize for your device's needs; our only requirement is an internet connection to provision keys to the Cloud.


In prototyping security isn't always a major concern, but it sure matters once you're delivering products to consumers. Spark OS is a secure system, where communications to devices and to interfaces are encrypted using widely-supported standards like RSA, AES, and SSL/TLS. Your customer's devices can only be accessed by parties with appropriate permissions and authentication.


Spark OS is designed to be infinitely scalable, and manage connections between millions of users and their devices. There is no upper limit to how many products can be connected to our messaging system, so don't worry about your overwhelming success.

Real-time messaging

All communications between users and devices happen in real-time, running at the speed of the internet. Your customers will feel the power of direct control over their products, and you'll get immediate feedback from your smartphone and web apps.

Virtual Private Cloud Coming Q4 2014

Want more control? Spark has an option for a "Virtual Private Cloud", your own instance of Spark OS for your own products. Spark OS can be run on any cloud infrastructure, such as Amazon Web Services, Google Cloud Platform, or even on premises. Spark's VPC model may make economic sense for deployments of 100,000 devices or more. Contact us for more information.

Flexible pricing

Every company and product is different. Our goal is to align our pricing model with your unique situation so that we profit together.

Pay up front

Pay one flat fee per device for us to manage your products and keep them online for the effective lifetime of the product.

Pay over time

Pay monthly or annually for hosting for each of your products.


Virtual Private Cloud customers pay ongoing fees based on the scale of their deployment.

Revenue sharing

Have a unique business model for your connected product? We're happy to work out alternative arrangements to share in the profit you generate from your product.


Once your products are in your customers' hands, Spark OS helps you manage devices out in the field.

Dashboards Coming Q3 2014

Imagine the NASA control center dashboard that tells you the current state of your product: which devices are functioning, which are offline, which are broken. You can see in real-time how your product is used, and provide support and targeted marketing campaigns based on real data. The Internet of Things has the potential to change how products are managed. This fall we're releasing a "fleet management" interface to change how you think about your product.

Data visualization Coming Q4 2014

Connected products produce an extraordinary amount of data, and you'll want tools to interact with that data. In Q4 2014 we're releasing a data visualization toolkit to help you generate insight about your products and customers.

Firmware updates

Typical electronics products stagnate once they've been shipped; the world changes but the products stay the same. Connected products provide an opportunity to treat hardware more like software, with regular updates and improvements to keep your customers happy.


Test your firmware update in a controlled environment to ensure that it behaves as expected.


Distribute your firmware update to a small number of volunteers to see how it performs in the real world


Release your firmware update into the wild, and watch your fleet get upgraded on the fly.

Complete access

They're your products, not ours. You'll always have complete access to your products, your data, and everything you need to make your business successful. We'll never lock you in.

Excited but don't know where to start?

Email us Or buy something