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
Quick links¶
How do I…
Get an API key? Sign up for an account.
Make my own
remote
? Run a f0cal server.Share my remote with other users? Set device permissions.
Create a custom
device-type
? Detect devices.Create a custom
image
? Custom images.
Or better yet, just start exploring…
curl https://dl.f0cal.com/bootstrap | bash
f0cal --help
Overview¶
There are three distinct pieces of software that make f0cal
work:

Client – A simple programmable interface that translates basic commands into actions on a piece of remote hardware.
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.
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.