Linux & Edge Application Engineer (Python / Docker / Ansible)

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Full Time

SALARY

$1500/month

HOURS PER WEEK

40

DATE UPDATED

Dec 30, 2025

JOB OVERVIEW

Overview:

We are looking for a Linux & Edge Application Engineer to design, build, and maintain
production Linux applications deployed across a growing fleet of kiosk-style and industrial
devices.

Our fleet is currently small but expanding, and this role will help define the architecture,
tooling, and processes for monitoring, versioning, and safely updating devices at scale.

This position blends Python application development, Docker & Docker Compose–based
deployments, and Ansible automation, with a strong focus on reliability, traceability, and
ease of updates in real-world environments.

Core Responsibilities:

Application Development (Python)

Design and develop Python-based applications and web services used on or to manage
deployed devices
Build APIs, dashboards, or internal tools to support device monitoring, version reporting,
and updates
Maintain clean, testable, and production-ready Python code
Collaborate on application architecture and long-term maintainability

Containerization & Packaging

Package applications using Docker for consistent, repeatable deployments
Define and maintain Docker Compose configurations for multi-service device applications
Manage container versions, configuration, volumes, and networking
Support container upgrades and rollback strategies on deployed devices

Device Fleet, Versioning & Updates

Design and implement a device update and versioning strategy for Linux-based edge
devices
Ensure each device can report application and container versions, configuration state and deployment health
Build or integrate tools to monitor device status and ship updates safely
Support staged rollouts, per-device targeting, and controlled updates
Design update mechanisms resilient to network interruptions, power loss, partial or failed deployments

Automation & Deployment

Use Ansible to automate provisioning, configuration, and updates across 10s–100s of
devices
Maintain device inventories, grouping, and per-device variables
Automate installation and updates of Docker, system dependencies, and applications
Ensure deployments are idempotent, repeatable, and observable

Edge, IoT & Kiosk Context

Work with long-lived Linux devices deployed in the field
Design applications that start automatically, recover gracefully, and run unattended
Support kiosk-style or industrial environments where stability and uptime are critical
Collaborate on system startup flows, watchdogs, and health checks

Required Qualifications

Strong experience developing production Python applications
Hands-on experience with Docker and Docker Compose
Solid Linux systems and application development background
Experience deploying and maintaining software across multiple remote devices
Familiarity with Ansible or similar automation tools
Comfortable working with distributed systems and remote debugging

Highly Preferred Experience

Experience with IoT, edge computing, kiosk, or industrial Linux systems
Building or integrating fleet monitoring and update tools
Designing versioning and rollback strategies for deployed devices
Experience evaluating build vs. buy solutions for device management
Familiarity with networking concepts (VPNs, firewalls, remote access)

Nice to Have

Experience with lightweight web frontends (HTML/CSS/JavaScript)
Experience with system services, watchdogs, and health monitoring
Familiarity with device identity, certificates, or secure provisioning
Exposure to container registries and CI/CD pipelines

What Makes This Role Different

Focus on real-world devices, not just cloud infrastructure
Ownership of update strategy, versioning, and reliability
Opportunity to design systems before large-scale rollout
Balance of application development and systems engineering

You will help define:

How devices identify themselves
How versions are tracked per device
How updates are shipped, verified, and rolled back
How the fleet scales from dozens to hundreds of devices

Growth & Impact

How devices identify themselves
How versions are tracked per device
How updates are shipped, verified, and rolled back
How the fleet scales from dozens to hundreds of devices

APPLICANTS- PLEASE READ BELOW...

Please send us a video recording of yourself answering the following questions:
(candidates that do not submit a video recording will not be considered)
Links to the videos could be sent using a link format from Google Drive, Loom, Zoom, etc.

1) Based on something you’ve built or operated: how did you ship updates and handle rollbacks for Linux edge devices with unreliable networks?
2) What’s a mistake you’ve seen or made when managing fleets of Linux devices and how would you design this system to avoid repeating it?
3) Tell us about a real failure you dealt with in an unattended system. How did you detect it, what broke, and what permanent change did you make afterward?
4) Name a tradeoff you’ve chosen in a kiosk or edge system to improve reliability. What did you give up, and why was it worth it?

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0022
Controller Execution Time ( Jobseekers / Job )  0.0185
Total Execution Time  0.0228
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,516,728 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Linux-Edge-Application-Engineer-Python-Docker-Ansible-1543344
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0122 seconds)  (Hide)
0.0015   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0004   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1543344
 LIMIT 1 
0.0004   SELECT *
FROM `employers`
WHERE `employer_id` = 743767
 LIMIT 1 
0.0009   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1543344
AND `misc`.`idIS NULL 
0.0005   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-04-19',ej.date_added) duration_daysDATEDIFF('2026-04-19',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_jobs ej WHERE e.employer_id ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-04-19',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1543344' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1543344 
0.0019   UPDATE employer_jobs SET hit_counts '***Dec-30-2025=56***Dec-31-2025=68***Jan-01-2026=22***Jan-02-2026=18***Jan-03-2026=5***Jan-04-2026=6***Jan-05-2026=7***Jan-06-2026=9***Jan-07-2026=4***Jan-08-2026=10***Jan-09-2026=3***Jan-10-2026=2***Jan-11-2026=5***Jan-12-2026=5***Jan-13-2026=1***Jan-14-2026=5***Jan-15-2026=5***Jan-16-2026=8***Jan-17-2026=11***Jan-18-2026=3***Jan-19-2026=4***Jan-20-2026=6***Jan-21-2026=5***Jan-22-2026=13***Jan-23-2026=6***Jan-24-2026=2***Jan-25-2026=2***Jan-26-2026=8***Jan-27-2026=1***Jan-28-2026=1***Jan-29-2026=4***Jan-30-2026=14***Feb-01-2026=3***Feb-02-2026=2***Feb-03-2026=2***Feb-04-2026=1***Feb-05-2026=1***Feb-06-2026=3***Feb-07-2026=2***Feb-08-2026=1***Feb-09-2026=1***Feb-12-2026=6***Feb-14-2026=7***Feb-15-2026=2***Feb-16-2026=4***Feb-18-2026=1***Feb-19-2026=3***Feb-21-2026=2***Feb-22-2026=2***Feb-23-2026=3***Feb-24-2026=1***Feb-25-2026=2***Feb-26-2026=3***Feb-27-2026=1***Mar-01-2026=1***Mar-02-2026=2***Mar-03-2026=1***Mar-04-2026=1***Mar-05-2026=1***Mar-06-2026=1***Mar-07-2026=2***Mar-08-2026=2***Mar-09-2026=1***Mar-10-2026=2***Mar-11-2026=1***Mar-12-2026=1***Mar-13-2026=1***Mar-15-2026=1***Mar-17-2026=3***Mar-18-2026=1***Mar-22-2026=1***Mar-25-2026=1***Mar-27-2026=3***Mar-29-2026=1***Mar-30-2026=1***Mar-31-2026=1***Apr-03-2026=3***Apr-04-2026=1***Apr-05-2026=2***Apr-06-2026=1***Apr-07-2026=2***Apr-09-2026=2***Apr-11-2026=3***Apr-13-2026=3***Apr-15-2026=2***Apr-17-2026=2***Apr-19-2026=1' WHERE job_id'1543344'  
0.0014   UPDATE employer_jobs SET monthly_hits '***Dec-2025=124***Jan-2026=195***Feb-2026=53***Mar-2026=30***Apr-2026=22' WHERE job_id'1543344'  
0.0009   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1543344' AND status LIKE 'sent%' ORDER BY id DESC  
0.0005   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1543344 
0.0018   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '743767'
AND `date_added` >= '2022-06-08' 
0.0003   select from teasers 
0.0014   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)