portal

portal is a skill for Claude Code, Codex from meta-quest/agentic-tools. It costs 131 tokens per session (3,264 once invoked), scanned C, original, Apache-2.0.

A guide for building and installing Android apps on Meta Portal devices, including Portal+, Portal Go, and Portal TV. These discontinued devices use a modified Android system without Google Mobile Services, such as Play Services and Firebase.

In plain words
What is it for?
It is for enabling device access, building Portal-compatible apps, configuring launcher settings, choosing compatible libraries, and sideloading apps with the Meta VR command-line tools.
Why use it?
It explains device-specific restrictions that can otherwise cause apps to fail to launch or install correctly.

Skill for Claude CodeCodex

Part of the agentic-tools plugin — 29 skills, 1 hook, 1 MCP server shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/meta-quest/agentic-tools/portal
Any agent
npx skills add meta-quest/agentic-tools --skill portal
Clone the repo
git clone --depth 1 https://github.com/meta-quest/agentic-tools

Made for: Claude Code, Codex.

Or install agentic-tools, the plugin that ships this one along with the rest of its 29 skills, 1 hook, 1 MCP server.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for portal

README.md
[![agentmods](https://agentmods.dev/badge/skills/meta-quest/agentic-tools/portal.svg)](https://agentmods.dev/skills/meta-quest/agentic-tools/portal)
Your own site
<a href="https://agentmods.dev/skills/meta-quest/agentic-tools/portal"><img src="https://agentmods.dev/badge/skills/meta-quest/agentic-tools/portal.svg" alt="Measured on agentmods" height="20"></a>
Per session 131 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 3,264 The whole file, excluding the scripts and references it only reads on demand.
Security scan C 2 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00131 $0.03264
Opus 5 $0.00066 $0.01632
Sonnet 5 $0.00026 $0.00653
Haiku 4.5 $0.00013 $0.00326

Measured 5d ago against content hash fb59bbbd5952, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade C, and why

portal scanned grade C with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Downloads and executes remote codehighSupply chain

curl | sh runs whatever the server returns today, which is not necessarily what it returned when this was reviewed.

# Any OS: curl -fsSL https://dl.google.com/android/cli/latest/darwin_arm64/install.sh | bash (see § 1 for other OSes)

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

# Any OS: curl -fsSL https://dl.google.com/android/cli/latest/darwin_arm64/install.sh | bash (see § 1 for other OSes)
skills/portal/SKILL.md · 189 lines

How it starts

The opening of the file, as written. The whole thing — 189 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Portal

This skill is for building Android apps that target Meta's Portal device family. Portal devices are discontinued (sales stopped end of 2022), but ADB is now enabled, so owners can sideload their own apps.

The hardware: Snapdragon-based Android tablets and TV sticks running a modified AOSP without Google Mobile Services. Several models, all touch or TV. minSdkVersion 28 (Android 9) or 29 (Android 10) depending on device.

This skill pairs with metavr (Meta VR CLI) — install it first. Use metavr adb in place of raw adb everywhere. See resources/hzdb.md for the one-line install (via npx), the MCP-into-your-editor setup, and the Portal-relevant command surface. The full metavr-cli skill ships in the same repo and can also be loaded for deeper reference.

Hard constraints — read before writing any code

If you only remember a few things, remember these. Each is a class of bug Portal apps hit constantly.

  1. No Google Mobile Services. No Play Services, no Firebase, no FCM, no Play Billing, no Google Sign-In, no Google Maps SDK, no AdMob, no ML Kit. Apps with hard GMS deps will crash on launch. Pick non-GMS alternatives — see resources/app-requirements.md.
  2. minSdkVersion ≤ 28 is required (Portal hardware tops out at API 29). For new apps, targetSdkVersion 29 is the safest default. For porting existing apps, targetSdkVersion higher than 29 usually works fine — verified empirically with targetSdk = 36. Don't waste time downgrading the target SDK of an existing app unless you observe a concrete runtime issue.
  3. Launcher intent-filter is required. Touch devices need MAIN + LAUNCHER; Portal TV needs MAIN + LEANBACK_LAUNCHER. The DEFAULT category is not required (verified empirically on Portal — apps with only MAIN + LAUNCHER appear on the home tile grid). Without one of these, the app installs but never appears on the home screen.
  4. App icon must include a PNG in mipmap-xxxhdpi/ as a fallback. Declare android:icon (touch) or android:banner (TV) on the launcher activity. You can also ship adaptive icons (mipmap-anydpi-v26/) and other density PNGs alongside — Portal's launcher correctly falls back to the mipmap-xxxhdpi PNG when the adaptive XML can't be rendered. Apps with only adaptive icons (no PNG fallback) will not have a visible icon on Portal.
  5. No contacts API. No account/credentials API. READ_CONTACTS is denied. The account provider returns nothing. 5a. Basic mic capture works; the far-field / beamformed mic array does not. Standard RECORD_AUDIO opens an AudioRecord stream and delivers real audio from handset-mic (the single-channel mic). The far-field beamformed array used by "Hey Portal" wake-word is gated by a Meta-signed native permission (com.facebook.alohasdk.permission.RECORD_AUDIO_PRIVILEGED) and is not available to sideloaded apps. So basic voice features work; sideloaded wake-word detection and high-quality room-distance pickup do not. See resources/app-requirements.md § Microphone capture for details.
  6. Touch UI for tabletop, not phone form factor. Portal sits on a counter or stand. Users interact from 50–100 cm. Hit targets ≥ 64 dp (96 dp for primary actions), body text ≥ 16 sp (18 sp on Portal+), landscape-first. Full Portal design system (typography, spacing, palette, WCAG ratios, TalkBack rules) is in resources/design-guidelines.md; for Jetpack Compose apps, resources/compose-theme.md is a copy-paste theme starter that bakes these rules into Color.kt / Theme.kt / Type.kt.
  7. Reserve the top ~64 dp (only if your top content sits within 64 dp of the canvas edge). Portal has a persistent system overlay strip at the top: back / home buttons (top-left) and Wi-Fi / status (top-right). It floats above app content with no automatic safe-area inset. Apps whose top UI hugs the edge (edge-to-edge toolbars, sticky headers, full-bleed modals) will tuck under it. Apps whose top content naturally sits ≥80 dp below the canvas edge don't need any change. The overlay pills are white, so apps with a light background in the top region need an additional dark scrim even after inset — see resources/app-requirements.md § Top system overlay.

Read the full file on GitHub · 189 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 5d ago First seen · 189 lines · 131 tokens per session scan C fb59bbbd5952

Subscribe to this mod's changes

portal is a skill published in the GitHub repository meta-quest/agentic-tools (189 stars, last pushed 14d ago), licensed Apache-2.0. It adds 131 tokens to every session and 3,264 once invoked, about $0.0007 per session on Opus 5. A static security scan graded it C with 2 findings (downloads and executes remote code, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

android-phone-control

Control an Android phone from a local Termux/Linux host using a deterministic ADB toolkit: device checks, wake/unlock/session mode, screenshots, UI dumps, taps, text input, key events, app launch, and safe app smoke tests.

patrickdass93/android-phone-control-skill · 53 tokens

developer-device-platform-basics

Provides guidance and instructions on managing remote devices on Developer Device Platform (DDP). Use when reserving remote Android devices, establishing connection tunnels, checking session status, or extending/cancelling leases. Don't use for iOS or local device/hardware inquiries.

google/skills · 57 tokens

camerax

Provide technical guidance for Android camera development with CameraX. Use when implementing camera features, handling asynchronous recording lifecycles, wiring low-level hardware interop using CameraX, or integrating ML Kit or Media3 effects.

android/skills · 47 tokens

analyzing-binaries

Reverse engineer compiled binaries, firmware, and mobile app packages using triage, static disassembly, decompilation, and dynamic instrumentation. Use when analyzing an executable, ELF/PE/Mach-O file, firmware image, or stripped binary, recovering an algorithm or protocol, or working a CTF reversing challenge.

trilwu/secskills · 68 tokens

android-adb-control

Direct control of Android physical devices and Termux environments via Android Debug Bridge (ADB).

AbdullahMalik17/malikclaw · 22 tokens

droidlume-control

Operate DroidLume-managed Android devices through the structured DroidLume CLI. Use for creating, starting, stopping, configuring, snapshotting, inspecting, repairing, and screenshotting devices; installing or launching APKs; sending Android input; and collecting diagnostics.

tageecc/droidlume-agent-control · 57 tokens