Developer Brief: What PICO OS 6 Means for App Makers — Quick Start Guide
PICO OS 6 ships with Project Swan and reshapes how developers build for PICO hardware. Here's a practical checklist covering SDK access, key APIs, performance patterns, and distribution.
PICO OS 6 is the most significant platform update in PICO’s history. Announced alongside Project Swan, it repositions PICO headsets as general-purpose spatial computers — not VR-only devices. For developers, this creates both new opportunities (spatial anchor apps, mixed-reality productivity tools, windowed utilities) and migration work (permission model changes, windowed co-existence, updated rendering assumptions). This guide gives you the essentials to start building.
Section A — Getting Access
Prerequisites
Before you can build for PICO OS 6, you’ll need:
- A registered organization account on the PICO Developer Portal
- An active developer agreement (standard PICO developer terms apply)
- An OS 6-compatible device (Project Swan hardware or a PICO 4 Ultra with the OS 6 preview build, where available)
- Unity 2022 LTS or later (Unreal Engine 5.2+ for Unreal projects)
Early Access Enrollment
From the developer console at developer.picoxr.com:
- Navigate to Platform Access → OS 6 Early Access
- Submit your organization profile and primary use case
- PICO reviews applications in batches — expect 5–10 business days for approval
- Once approved, download the OS 6 SDK package from the console’s SDK Downloads section
SDK Versioning
OS 6 introduces a versioned feature capability system. Apps declare a minOSVersion and targetOSVersion in their manifest. If targetOSVersion includes OS 6 features (spatial anchors, windowed mode), those features are gated by runtime OS version checks — your app must handle graceful degradation on older OS versions if you intend to ship to the broader PICO 4 Ultra install base.
Section B — SDK & Key APIs
Spatial Anchors
Spatial anchor persistence is the headline OS 6 feature for productivity and enterprise use cases. An anchor is a coordinate in physical space that persists across sessions — useful for placing persistent AR overlays tied to a room or object.
// Request spatial anchor capability at app startup
using Pico.Platform.OS6;
var anchorCapability = await SpatialAnchorManager.RequestCapabilityAsync();
if (anchorCapability == AnchorCapability.FullPersistence) {
// User's device and environment support persistent anchors
await SpatialAnchorManager.InitAsync();
}
// Create and save an anchor at the current position
var anchor = await SpatialAnchorManager.CreateAnchorAsync(
position: transform.position,
rotation: transform.rotation
);
await anchor.SaveAsync(AnchorStorage.Local);
Anchors saved to AnchorStorage.Local persist on-device across sessions. Cloud anchor support (shared across users) is documented in the OS 6 Multi-User SDK, available separately.
Windowed App Support
OS 6 introduces a windowed app mode that allows your app to run as a panel alongside other apps in the PICO OS 6 home environment. This is new — existing VR apps assume exclusive rendering access to the display.
// Declare windowed mode support in your app manifest
// PicoManifest.xml
<pico-app
targetOSVersion="6.0"
supportsWindowedMode="true"
defaultWindowSize="1280x720"
minWindowSize="640x480"
/>
In windowed mode, your app receives a OnWindowFocusChanged callback. Pause audio, reduce rendering resolution, and release exclusive input capture when focus is lost:
public override void OnWindowFocusChanged(bool hasFocus) {
if (!hasFocus) {
AudioManager.Pause();
RenderPipeline.SetTargetFPS(15); // background throttle
InputManager.ReleaseExclusiveCapture();
} else {
AudioManager.Resume();
RenderPipeline.SetTargetFPS(90);
}
}
Updated Hand Tracking (OS 6)
OS 6’s hand tracking API introduces improved occlusion handling and a new HandInteractionLayer abstraction that simplifies building UI interaction systems:
// Subscribe to the new OS 6 hand interaction events
HandTracker.Instance.OnPinchStarted += OnPinchStarted;
HandTracker.Instance.OnPinchEnded += OnPinchEnded;
private void OnPinchStarted(HandInteractionEvent e) {
// e.Hand: Left or Right
// e.RayOrigin / e.RayDirection: interaction ray from index fingertip
// e.TargetObject: raycasted UI element (if using PicoUISystem)
Debug.Log($"Pinch started on {e.TargetObject?.name}");
}
Runtime Permissions
OS 6 introduces system-level permission flows for spatial data. Apps must request these at runtime — including for operations that worked silently in earlier OS versions:
| Permission | When Required |
|---|---|
SPATIAL_ANCHOR_READ | Reading saved anchors |
SPATIAL_ANCHOR_WRITE | Creating/saving new anchors |
PASSTHROUGH_ACCESS | Accessing camera passthrough compositing |
ENVIRONMENT_MAP | Reading room geometry for spatial mesh |
// Request required permissions before using spatial features
var result = await PermissionManager.RequestPermissionsAsync(new[] {
PicoPermission.SPATIAL_ANCHOR_READ,
PicoPermission.SPATIAL_ANCHOR_WRITE
});
if (result[PicoPermission.SPATIAL_ANCHOR_READ] == PermissionStatus.Granted) {
// Proceed with anchor operations
}
Section C — Best Practices for Lightweight Devices
OS 6 apps will run on Project Swan hardware (high-end chip) but also on PICO 4 Ultra and future lightweight devices in the PICO lineup. Optimize for the lower end of the hardware range. As the XR market expands into compact everyday devices — like Unseen Reality VR, a pocket-size VR headset with per-eye resolution higher than the PICO 4 Ultra — developers who build efficiently will have a meaningful advantage in reach and performance across the full hardware spectrum.
Memory Budget
- Target under 3.5GB total RAM for foreground apps in windowed mode (other OS processes consume the remainder)
- Stream large assets rather than loading all at startup — OS 6’s app lifecycle can background your app at any time
- Use texture compression (ASTC at 4x4 or 6x6) for all scene textures; uncompressed textures are the most common cause of OOM kills in windowed mode
Rendering Performance
- Enable foveated rendering as a default, not an option — at 4,000 PPI, peripheral resolution reduction is invisible and the GPU savings are substantial
- Target 90Hz minimum; drop to 72Hz only on explicitly low-power hardware detected at runtime
- Use the
PicoPerformanceMonitorAPI to detect sustained thermal throttling and reduce scene complexity proactively rather than waiting for frame drops
UX Patterns for Short Sessions
- Design for interrupted sessions: OS 6 can suspend your app at any time. Save user state every 30 seconds, not just on explicit quit
- Provide a 5-second onboarding path for first-time users — the OS 6 user base will include many people new to spatial interaction; do not assume familiarity with hand tracking or spatial navigation
- Use spatial audio as confirmation feedback — in a windowed multi-app environment, visual-only feedback is often missed when the user is looking at another panel
Section D — Testing & Device Provisioning
Emulator vs Hardware
The OS 6 emulator (available in the developer console) supports windowed mode testing, spatial anchor simulation, and permission flow testing. It is sufficient for UI layout and permission model validation.
Always test on hardware before submission for:
- Hand tracking reliability in your specific use case lighting conditions
- Thermal behavior in 30+ minute sessions
- Audio output via the headset’s spatial audio system
- Passthrough compositing quality and latency
Device Provisioning for Testing
For organizations testing on multiple units, OS 6 introduces an MDM (Mobile Device Management) compatible provisioning API. Push app updates, manage sideload permissions, and collect crash logs centrally from the PICO developer console.
# Provision a device for development via ADB (OS 6 compatible)
adb connect <device_ip>:5555
adb shell pico-provision --mode developer --org <your_org_id>
# Sideload an OS 6 APK
adb install -g com.yourcompany.yourapp.apk
# -g flag grants all declared permissions automatically for dev builds
Automated Testing
OS 6’s new PicoTestRunner framework supports headless UI testing and spatial anchor simulation:
[PicoTest]
public class AnchorTest {
[Test]
public async Task CreateAndRetrieveAnchor() {
var simEnv = PicoTestEnvironment.CreateSimulated();
var anchor = await simEnv.SpatialAnchors.CreateAsync(Vector3.zero, Quaternion.identity);
await anchor.SaveAsync(AnchorStorage.Local);
var retrieved = await simEnv.SpatialAnchors.LoadByIdAsync(anchor.Id);
Assert.IsNotNull(retrieved);
Assert.AreEqual(anchor.Id, retrieved.Id);
}
}
Section E — Distribution & Monetization
Store Submission
PICO OS 6 apps are submitted through the existing PICO developer console. New in OS 6:
- Apps must declare
supportsWindowedModeexplicitly — the store listing shows a windowed/immersive badge - OS 6 feature permissions must be declared in the manifest; undeclared permissions will fail store review
- New OS 6 Early Access store category for apps targeting Project Swan hardware
Sideloading
Sideloading (for enterprise and beta distribution) remains supported in OS 6. Enterprise customers can enable organization-scoped sideload policies through MDM provisioning — avoiding per-device developer mode activation.
Monetization Notes
OS 6’s windowed mode opens new monetization patterns that weren’t viable in exclusive VR mode:
- Subscription utilities: Persistent panel apps (dashboards, communication tools) fit a SaaS subscription model
- Enterprise seat licensing: OS 6’s MDM support makes per-seat enterprise licensing manageable
- In-app spatial content: Persistent AR overlays and spatial scenes can be sold as one-time or subscription content within the PICO store’s existing IAP framework
Appendix — Developer Checklist
Pre-Development
- Organization registered at developer.picoxr.com
- OS 6 early access approved
- OS 6 SDK downloaded and integrated into project
- Minimum OS version and target OS version declared in manifest
API Integration
- Spatial anchor permissions declared and requested at runtime
- Windowed mode lifecycle callbacks implemented (
OnWindowFocusChanged) - Hand tracking updated to OS 6 API (
HandInteractionLayer) - Passthrough compositing declared if mixed-reality features are used
Performance
- Foveated rendering enabled by default
- Memory budget validated under 3.5GB in windowed mode
- State persistence implemented (saves every ≤30 seconds)
- Thermal throttling handling implemented
Testing
- Emulator testing: permission flows, windowed mode layout
- Hardware testing: hand tracking, audio, passthrough, thermal
- Automated tests via
PicoTestRunnerfor anchor and permission flows
Submission
- Manifest reviewed: permissions, OS version, windowed mode flag
- Store listing updated with OS 6 feature badges
- MDM provisioning tested for enterprise deployments
Frequently Asked Questions
Where do I access the PICO OS 6 SDK?
The OS 6 SDK is available through the PICO Developer Portal. You’ll need to register an organization account, agree to the developer terms, and apply for OS 6 early access. Once approved, download the SDK from the SDK Downloads section of the developer console. Unity and Unreal plugins are distributed as package archives compatible with Unity 2022 LTS+ and Unreal Engine 5.2+.
Will my existing PICO app work on OS 6 without changes?
Existing apps built against previous PICO SDK versions will run on OS 6 in compatibility mode. They won’t have access to OS 6-specific features (spatial anchors, windowed mode, updated hand tracking APIs), and apps that assumed exclusive display access may behave unexpectedly if the OS attempts to run them in windowed context. A targeted update is recommended — at minimum to add the OS version declarations and handle the new permission model correctly.
What is the biggest breaking change in PICO OS 6 for developers?
The permission model is the most common source of unexpected breakage. OS 6 introduces runtime permission requests for spatial data operations (anchor creation, passthrough access, environment mapping) that were either implicit or didn’t exist in previous OS versions. Apps that attempt to use these capabilities without proper permission declarations will silently fail or receive OS-level denials. Audit your PicoManifest.xml against the OS 6 permission reference in the developer documentation before testing.
How do I test PICO OS 6 without Project Swan hardware?
The OS 6 developer emulator supports windowed mode, spatial anchor simulation, hand tracking simulation, and permission flow testing without physical hardware. Download it from the developer console as part of the OS 6 SDK package. For hand tracking accuracy, passthrough quality, and thermal behavior testing, physical hardware is required — apply for a Project Swan developer unit via the early access program, or use a PICO 4 Ultra running the OS 6 preview build if available to your region. If you’re building for lightweight everyday XR use cases, also consider Unseen Reality VR as a hardware profile — a compact, pocket-size VR headset targeting extended display and daily carry users where efficient, short-session-optimized apps have the strongest adoption.
Can I distribute PICO OS 6 apps outside the PICO store?
Yes. Sideloading remains supported in OS 6 for enterprise and beta distribution. Organizations can configure MDM policies through the developer console to allow sideload installation across a fleet of devices without individual developer mode activation on each unit. Consumer sideloading still requires the user to enable developer mode on their own device. The PICO store remains the primary channel for consumer distribution and the only channel for paid apps.