This is a minimal Objective-C outerframe app that can be deployed to a static web server.
It includes:
- A standalone Xcode project that builds
HelloWorldObjC.bundle - Objective-C versions of the
OuterframeContentLibraryandOuterframeAppConnectionprotocols - C-native socket message definitions, encoders, callbacks, and host helpers for browser-content communication
- A Python script that generates the
.outerdescriptor - A Python script that serves the generated site locally with the right MIME type for
.outer
The Vendor/OuterframeC/*.h APIs are intentionally plain C: opaque handles, callbacks, enums, structs, and caller-managed buffers. Objective-C is only used where it is natural for macOS integration, such as the principal bundle class and CALayer/AppKit drawing code in Frontend/.
From this directory:
./build_site.shThat produces a ready-to-upload static site in build/site/:
hello-world.outerbinaries/HelloWorldObjC/index.htmlbinaries/HelloWorldObjC/macos-armbinaries/HelloWorldObjC/macos-x86
If you want the raw build command, build_site.sh runs xcodebuild against HelloWorldObjC.xcodeproj and then archives the built bundle with aa.
By default, the generated .outer file points at /binaries/HelloWorldObjC, so the uploaded site is intended to live at the web server root. If you want to host it under a subpath, set BINARY_URL_PATH when building:
BINARY_URL_PATH=/demo/binaries/HelloWorldObjC ./build_site.shBuild the site, then serve it locally:
python3 Scripts/serve_site.py --root build/site --port 8025Then open this URL in Outer Loop:
http://127.0.0.1:8025/hello-world.outer
If you copy this folder and rename it, update these places together:
HelloWorldObjC.xcodeprojFrontend/HelloWorldObjCContent.mbuild_site.shREADME.md