Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Host integration: use Simlock as the local device allocator

Open
#70 1 comment 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
android, ios, typescript

Research direction

Start with ADR 0021 and the linked work items #71-#78 to understand the Host–Simlock boundary and split the work into its defined slices. Use the completion conditions as the acceptance checklist: local concurrent leases, restart-safe retries, capacity ownership, compatibility rejection, durable maintenance, safe cleanup, and Android claim continuity.

Written by the indexing model from the issue text.

Description

feature:planned

Purpose

agent-device Host will use a local Simlock daemon to supply managed devices.

Host owns network access, user identity, sessions, automation, artifacts, and supervision. Simlock owns device allocation, capacity, lifecycle, health, and cleanup.

Host uses the Simlock Unix socket. Simlock does not need a new public network API.

ADR 0021 defines this boundary.

Required work

  • #71: Export a supported typed client for the local daemon.
  • #72: Store lease requests so that clients can recover them after a restart.
  • #73: Put managed iOS simulators in an owned device set.
  • #74: Store provisioning intent before a driver creates a device.
  • #75: Create a new iOS simulator identity for each lease.
  • #76: Add small, configured warm targets.
  • #77: Add a durable maintenance mode.
  • #78: Add durable admin-only component preparation.

Platform rules

  • iOS creates a new simulator identity for each Host lease. Simlock deletes the simulator after release, expiry, or recovery-driven lease termination.
  • Android can reuse an emulator identity. Simlock must check the clean state after Host installs an execution fence.
  • Host keeps the managed execution claim for an Android identity during its full pool lifetime, including idle and reclaim states. Host clears the claim only after Simlock proves that the identity was removed.

Related work

  • #67 and #69 provide the platform installers that #78 uses. The local-first Host slice can use components that are already installed. Host must not let an ordinary lease request enable a download.
  • #65 and #68 add an optional HTTP interface. Host does not use this interface.
  • #66 uses Simlock as a network provider. Host uses Simlock as a local allocator instead.

Completion conditions

  • One local connection can control concurrent leases up to the configured capacity.
  • A retry or process restart cannot create a duplicate lease.
  • Simlock is the only owner of capacity and managed-device lifecycle.
  • Simlock rejects an incompatible client before a mutation starts.
  • Maintenance stays active after a restart.
  • Cleanup cannot change a foreign device.
  • A reusable Android identity cannot become unclaimed between leases or during reclaim.
Dominant language
TypeScript
Stars
14
Forks
0
Avg merge
1d 3h
Merged PRs (30d)
49

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from callstackincubator/simlock

All issues in callstackincubator/simlock

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.