Code for an api for a mechanical computer (Brunsviga 13RK). Wrapper around a human or robot in the loop.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Code for an API for a mechanical computer (Brunsviga 13RK). Wrapper around a human (or possibly robot) in the loop.


Licensed under GPLv3 licence except for bootstrap and jquery components licensed under the MIT licence.


To access the brunsviga as described in the Implementation section below, please check out Note that I generally keep the Brunsviga 13RK at work, and I have a life outside of work, so don't expect a response to a web request after (Australian Eastern Standard/Daylight Time) work hours.


Here's the overall plan

  • Provide human-friendly web form for submitting requests.
  • Sanity check human input.
  • Use AWS API gateway service to provide a REST API.
  • Trigger an AWS lambda function that sends JSON via AWS SNS of operation to be run by a human.
  • create s3 bucket for human operator to upload videos of calculations to (using iPhone with Transmit-iOS app),
  • convert videos to mp4 and then upload, using AWS CloudFront to serve content for faster access. To do: look at AWS Elastic Transcoder for conversion (instead of Photos app on OS X).

then video link is emailed to requestor.


  1. Define an SNS topic called brunsviga, and subscribe the human operator's email address to that email.
  2. (Optional) update the region in api/serverless.yml.
  3. Make sure you have serverless installed: npm install -g serverless and have your AWS credentials set up.
  4. Set up an s3 bucket holding index.html and css/, fonts/, images/ and js/, and I also recommend using CloudFront CDN. The s3 upload can be done by aws s3 cp web s3://mybucket/ --recursive

First calculation run

First request as received by human operator


Video of calculation

Future ideas

  • How to deal with tracking and returning requests (use DynamoDB?).
  • Could build a robot to work inputs and turn knob, plus OCR for readout.


Brunsviga 13RK me operating my Brunsviga 13RK