FØCAL

“A complete Edge application testbed behind a simple public API”f0cal.com

Sounds complicated. Fortunately it’s not.

These pages explain FØCAL in technical terms. The intended audience is developers and engineers interested in finding a better way to build “hardware-bound” applications, meaning those for which the hardware is a significant contributor to the application requirements.

The tools in the f0cal suite increase engineering productivity by filling “air gaps” between software tooling and the hardware itself. The backbone of the technology is an API and related service architecture that turns arbitrary collections co-located bare metal – from workstations down to FPGAs – into an ad-hoc cloud service.

This command line example gives a bit of the flavor of what’s possible with the framework:

pip install f0cal.farm.client \
  --index-url https://dl.f0cal.com/py

f0cal farm config set \
  "api_key=${API_KEY}" # From https://app.f0cal.com

f0cal farm remote add \
  mycompany/myoffice

f0cal farm instance create \
  my_pi \
  --remote mycompany/myoffice \
  --device-type raspberry-pi/4b \
  --image raspbian-lite/10

f0cal farm instance connect \
  my_pi \
  --ssh

Overview

There are three distinct pieces of software that make f0cal work:

_images/architecture_icon.png
  1. Client – A simple programmable interface that translates basic commands into actions on a piece of remote hardware.

  2. API – “The hub of the wheel,” run and maintained in the cloud by FØCAL Inc.; a central communication point for all the other solution components.

  3. Server – A pre-packaged virtual machine that the runs on a laptop or workstation adjacent to the target hardware.

Workflows are initiated on the client, as in:

f0cal farm instance create my_pi \
  --remote mycompany/myoffice \
  --device-type raspberry-pi/4b \
  --image raspbian-lite/10

The --remote flag is resolved by the API, and the request is forwarded to the relevant server. The targeted server then executes a potentally complex orchestration to address the request. All other f0cal capabilities – sensors, benchmarking, performance testing, integration simulation – assume this basic architecture as a backplane.