diff --git a/phase9_7_externcall_demo.html b/phase9_7_externcall_demo.html
new file mode 100644
index 00000000..68cd4825
--- /dev/null
+++ b/phase9_7_externcall_demo.html
@@ -0,0 +1,218 @@
+
+
+
+
+
๐ Phase 9.7: Box FFI/ABI + ExternCall Demo
+
+
+ โ
ExternCall Implementation Complete!
+ Universal Library Integration via WASM Runtime Imports
+
+
+
๐ฏ Architecture Overview
+
// Nyash External Call Pattern
+console.log("Hello from Nyash!")
+canvas.fillRect("demo-canvas", 50, 50, 100, 100, "red")
+
+// Generated MIR ExternCall Instructions:
+ExternCall {
+ dst: None,
+ iface_name: "env.console",
+ method_name: "log",
+ args: [string_ptr, string_len],
+ effects: IO
+}
+
+// Generated WASM Imports:
+(import "env" "console_log" (func $console_log (param i32 i32)))
+(import "env" "canvas_fillRect" (func $canvas_fillRect (param i32 i32 i32 i32 i32 i32 i32 i32)))
+
+
๐ฎ Interactive Demo
+
+
+
+
+
+
+
+
+
+
๐ Console Output:
+
+
+
๐ง Implementation Status
+
+ โ
Core Components Complete:
+ โข MIR ExternCall instruction with effect tracking
+ โข WASM RuntimeImports with console/canvas operations
+ โข JavaScript import object generation
+ โข BID specification compliance (console.yaml, canvas.yaml)
+ โข String handling via (ptr, len) parameters
+
+ ๐ Ready for Universal Exchange:
+ External libraries can now be integrated via Box FFI/ABI!
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/boxes/extern_box.rs b/src/boxes/extern_box.rs
new file mode 100644
index 00000000..ed84b4b1
--- /dev/null
+++ b/src/boxes/extern_box.rs
@@ -0,0 +1,131 @@
+/*!
+ * ExternBox - External API proxy for Phase 9.7 ExternCall
+ */
+
+use crate::box_trait::{NyashBox, StringBox, VoidBox, IntegerBox, BoxCore, BoxBase};
+use std::any::Any;
+
+/// External API proxy box for external calls
+pub struct ExternBox {
+ id: u64,
+ api_name: String,
+}
+
+impl ExternBox {
+ pub fn new_console() -> Box