agentic-emulator 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -5
- package/bin/agemu.js +51 -0
- package/package.json +9 -5
- package/{bin → platforms/darwin-arm64}/agemu +0 -0
- package/platforms/darwin-arm64/agemu-ios-helper +0 -0
- package/{bin → platforms/darwin-arm64}/agemud +0 -0
- package/platforms/linux-arm64/agemu +0 -0
- package/platforms/linux-arm64/agemud +0 -0
- package/platforms/linux-x64/agemu +0 -0
- package/platforms/linux-x64/agemud +0 -0
- package/platforms/win32-x64/agemu.exe +0 -0
- package/platforms/win32-x64/agemud.exe +0 -0
- package/bin/agemu-ios-helper +0 -0
package/README.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# agentic-emulator (`agemu`)
|
|
2
2
|
|
|
3
|
-
An agent-first runtime for the Android emulator and the iOS Simulator
|
|
3
|
+
An agent-first runtime for the Android emulator (macOS, Linux, Windows) and the iOS Simulator
|
|
4
|
+
(Apple Silicon Macs). LLM
|
|
4
5
|
agents drive headless devices through a CLI or an MCP server: screenshots, the UI tree, taps,
|
|
5
6
|
typing, apps, test capabilities, logs and crashes, in milliseconds instead of the hundreds of
|
|
6
7
|
milliseconds to seconds `adb`, `simctl` and Maestro take.
|
|
@@ -11,11 +12,14 @@ npm install -g agentic-emulator # or the `agemu` C
|
|
|
11
12
|
agemu doctor # checks Xcode and the Android SDK
|
|
12
13
|
```
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
the emulator
|
|
15
|
+
iOS needs an Apple Silicon Mac with Xcode and an iOS Simulator runtime. Android needs the
|
|
16
|
+
Android SDK with the emulator, on an Apple Silicon Mac, on Linux (x86-64, arm64) with KVM or on
|
|
17
|
+
Windows (x86-64) with WHPX. `agemu doctor` says what is missing and prints the commands that
|
|
18
|
+
install it.
|
|
16
19
|
|
|
17
|
-
The package holds
|
|
18
|
-
helper)
|
|
20
|
+
The package holds native binaries for each of those platforms (`agemu`, the `agemud` daemon it
|
|
21
|
+
starts, and on macOS the iOS helper) and a small Node launcher that runs the ones for this
|
|
22
|
+
computer. There is no install script.
|
|
19
23
|
|
|
20
24
|
Documentation, measurements and source:
|
|
21
25
|
[github.com/piotr-graczyk-dev/agentic-emulator](https://github.com/piotr-graczyk-dev/agentic-emulator).
|
package/bin/agemu.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Runs the agemu binary built for this computer. The package holds one set of native binaries
|
|
3
|
+
// per supported platform under platforms/<os>-<cpu>/; agemu starts the agemud daemon that sits
|
|
4
|
+
// next to it. There is no install script: this launcher picks the binary at each run.
|
|
5
|
+
"use strict";
|
|
6
|
+
|
|
7
|
+
const { spawn } = require("child_process");
|
|
8
|
+
const fs = require("fs");
|
|
9
|
+
const path = require("path");
|
|
10
|
+
|
|
11
|
+
const key = `${process.platform}-${process.arch}`;
|
|
12
|
+
const supported = {
|
|
13
|
+
"darwin-arm64": "macOS on Apple Silicon (iOS and Android)",
|
|
14
|
+
"linux-x64": "Linux on x86-64 (Android)",
|
|
15
|
+
"linux-arm64": "Linux on arm64 (Android)",
|
|
16
|
+
"win32-x64": "Windows on x86-64 (Android)",
|
|
17
|
+
};
|
|
18
|
+
const exe = path.join(__dirname, "..", "platforms", key, process.platform === "win32" ? "agemu.exe" : "agemu");
|
|
19
|
+
|
|
20
|
+
if (!supported[key] || !fs.existsSync(exe)) {
|
|
21
|
+
const list = Object.values(supported).map((s) => ` - ${s}`).join("\n");
|
|
22
|
+
process.stderr.write(`agemu: no build for ${key} in this package. agemu runs on:\n${list}\n`);
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const child = spawn(exe, process.argv.slice(2), { stdio: "inherit", windowsHide: true });
|
|
27
|
+
|
|
28
|
+
// Pass on the signals a terminal or an MCP client sends, so agemu shuts down cleanly.
|
|
29
|
+
for (const sig of ["SIGINT", "SIGTERM", "SIGHUP"]) {
|
|
30
|
+
process.on(sig, () => {
|
|
31
|
+
try {
|
|
32
|
+
child.kill(sig);
|
|
33
|
+
} catch (_) {
|
|
34
|
+
// already gone
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
child.on("error", (err) => {
|
|
40
|
+
process.stderr.write(`agemu: could not run ${exe}: ${err.message}\n`);
|
|
41
|
+
process.exit(1);
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
child.on("exit", (code, signal) => {
|
|
45
|
+
if (signal) {
|
|
46
|
+
process.removeAllListeners(signal);
|
|
47
|
+
process.kill(process.pid, signal);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
process.exit(code === null ? 1 : code);
|
|
51
|
+
});
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentic-emulator",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Agent-first runtime for the Android emulator and the iOS Simulator
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Agent-first runtime for the Android emulator (macOS, Linux, Windows) and the iOS Simulator (Apple Silicon Macs): a CLI and MCP server with millisecond screenshots, UI trees and taps.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mcp",
|
|
7
7
|
"mcp-server",
|
|
@@ -21,16 +21,20 @@
|
|
|
21
21
|
"license": "MIT",
|
|
22
22
|
"author": "Piotr Graczyk",
|
|
23
23
|
"os": [
|
|
24
|
-
"darwin"
|
|
24
|
+
"darwin",
|
|
25
|
+
"linux",
|
|
26
|
+
"win32"
|
|
25
27
|
],
|
|
26
28
|
"cpu": [
|
|
27
|
-
"arm64"
|
|
29
|
+
"arm64",
|
|
30
|
+
"x64"
|
|
28
31
|
],
|
|
29
32
|
"bin": {
|
|
30
|
-
"agemu": "bin/agemu"
|
|
33
|
+
"agemu": "bin/agemu.js"
|
|
31
34
|
},
|
|
32
35
|
"files": [
|
|
33
36
|
"bin/",
|
|
37
|
+
"platforms/",
|
|
34
38
|
"THIRD_PARTY_NOTICES.md"
|
|
35
39
|
]
|
|
36
40
|
}
|
|
index 86e7fbf..cb57837 100755
|
|
|
Binary file
|
|
Binary file
|
|
index 84a7f0d..c93dfc6 100755
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/bin/agemu-ios-helper
DELETED
|
Binary file
|