IsaacCapture / deviceio_trackers
AGENTS.md438 starsChanged 31 days agoApache-2.0View on GitHub
CRITICAL (non-optional): Before editing this package, complete the mandatory AGENTS.md preflight in ../../../AGENTS.md (read every applicable AGENTS.md on your paths, not just this file). A schema-based tracker is one whose live impl only moves a FlatBuffer table between a plugin's SchemaPusher and the host via SchemaTracker or SchemaPusher (no xrLocate* calls, no custom connection state). Those are declared in trackers.toml and generated at configure time by ../codegen/generate_trackers.py; the facade .hpp/.cpp land under ${CMAKE_BINARY_DIR}/generated/trackers/, not in cpp/. - Adding one is…
1 other project uses a version of this.
Adopted by
Most recently taken up by
- NVIDIA/IsaacTeleopword for word, first seen Oct 13, 2026
Other versions1 project uses a version of this.
Word for word · 1
- NVIDIA/IsaacTeleop★ 438100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,542 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository28 other files it gives its agents.
- AGENTS.mdAGENTS.md
- deps/cloudxr/webxr_client/AGENTS.mdAGENTS.md
- docs/AGENTS.mdAGENTS.md
- examples/camera_streamer/AGENTS.mdAGENTS.md
- examples/egocap/AGENTS.mdAGENTS.md
- examples/teleop_ros2/AGENTS.mdAGENTS.md
- src/core/AGENTS.mdAGENTS.md
- src/core/codegen/AGENTS.mdAGENTS.md
- src/core/deviceio_base/AGENTS.mdAGENTS.md
- src/core/deviceio_session/AGENTS.mdAGENTS.md
- src/core/live_trackers/AGENTS.mdAGENTS.md
- src/core/log_bridge/AGENTS.mdAGENTS.md
- src/core/replay_trackers/AGENTS.mdAGENTS.md
- src/core/schema/AGENTS.mdAGENTS.md
- src/plugins/sensing/AGENTS.mdAGENTS.md
- src/plugins/sharpa_avatar/AGENTS.mdAGENTS.md
- src/python/isaaccapture/cts/common/AGENTS.mdAGENTS.md
- src/python/isaaccapture/cts/full_body/checker/AGENTS.mdAGENTS.md
- src/python/isaaccapture/cts/full_body/oracle/AGENTS.mdAGENTS.md
- src/python/isaaccapture/cts/hand/AGENTS.mdAGENTS.md
- src/python/isaaccapture/cts/hand/checker/AGENTS.mdAGENTS.md
- src/python/isaaccapture/logging_config/AGENTS.mdAGENTS.md
- src/viz/AGENTS.mdAGENTS.md
- tests/AGENTS.mdAGENTS.md
- .cursor/rules/cmake-structure.mdcCursor rule
- cmake-structureSkill
- rebot-orin-setupSkill
- rebot-orin-setupSkill
The file
We split this AGENTS.md into the rules it gives an agent
2 rules. About 0 are common, 0 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 8
CRITICAL (non-optional): Before editing this package, complete the mandatory AGENTS.md preflight in ../../../AGENTS.md (read every …
- Very specific: line 48
deviceio_trackers: must not link OpenXR::headers, oxr::oxr_utils, or vendor extension targets, and must not #include OpenXR headers.
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
<!--
SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
SPDX-License-Identifier: Apache-2.0
-->Agent notes — deviceio_trackers
CRITICAL (non-optional): Before editing this package, complete the mandatory AGENTS.md preflight in ../../../AGENTS.md (read every applicable AGENTS.md on your paths, not just this file).
Schema-based trackers come from the manifest — do not hand-write them
A schema-based tracker is one whose live impl only moves a FlatBuffer table between a plugin's
SchemaPusher and the host via SchemaTracker or SchemaPusher (no xrLocate* calls, no custom
connection state). Those are declared
in trackers.toml and generated at configure time by
../codegen/generate_trackers.py; the facade .hpp/.cpp land
under ${CMAKE_BINARY_DIR}/generated/trackers/, not in cpp/.
- Adding one is a manifest edit, not a new source file:
nameandtableare required, the optionalheaderandmetadatahave no default, and every other key has one indefaults.toml— most derive fromnamethrough%placeholder%substitution, a few (direction,record,max_flatbuffer_size, …) are plain constants. Override a key only where the convention genuinely does not hold (se3_trackersetsclass;generic_3axis_pedalsetsschemabecause its.fbsispedals.fbs;frame_metadata_oaksetsheaderso the public#includestem staysframe_metadata_tracker_oak). direction = "push"generates a typed<Table>PushTracker(Teleop → plugin) instead of a reader facade.TensorPushTrackerstays as the untypedbytesescape hatch — keep it.- Do not hand-register a manifest tracker. Factory dispatch rows, factory methods, pybind
blocks, MCAP recording traits, and the Python
__all__are emitted as.incfragments that the hand-written files#include; adding a row yourself produces a duplicate definition. __init__.pyneeds no edit for new manifest trackers.../../python/isaaccapture/deviceio_trackers/__init__.pystar-imports_generated_tracker_exports(staged from configure-time codegen into the wheel tree; for scikit-build-core / editable installs it is also installed viaisaacteleop_wheelbecause it is not authored undersrc/python/) and splices its__all__. The legacyisaaccapture.deviceioshim is a frozen compat surface — do not extend it with new generated trackers.
Still hand-written: the .fbs schema and its schema/python/*_bindings.h pybind file (codegen
starts at the tracker layer, not the schema layer); head, hand, controller, full_body,
message_channel, HapticCommandReaderTracker (multi-sample bucketing by
HapticCommand.endpoint on one push-tensor collection), and keyboard (in-process: the facade
owns KeyboardInputState that host-side KeyboardProviders feed, and the live impl uses no
OpenXR extension; neither fits a generated shape).
No OpenXR dependency
deviceio_trackersmust not linkOpenXR::headers,oxr::oxr_utils, or vendor extension targets, and must not#includeOpenXR headers. Public API stays schema +deviceio_baseonly.- This includes
tracker_bindings.cpp: do not add#include <openxr/openxr.h>or anyXR_NV_*extension headers here, even when the bound tracker wraps an OpenXR concept. The UUID isstd::array<uint8_t, 16>at thedeviceio_trackersboundary—no OpenXR types leak through. - The generated facades hold the same line: they take a
collection_idstring and dispatch throughdeviceio_base, so OpenXR stays on thelive_trackersside of the boundary.
Python never sees FlatBuffers -T types
- The schema bindings expose one Python class per FlatBuffer table, backed by
Serialized<Table>: reads go through the generated accessors into the buffer. Adding apy::class_over a-Tre-introduces a mutable parallel type and is not allowed. - To build one from Python, add a constructor, not setters. The constructor assembles a
-Tas a C++ local andpack()s it, so the encoder is always the generatedPackand the-Tstays invisible. Tests construct their inputs this way rather than mutating fields. Recordwrapper bindings are generated bybind_record()inschema_serialized.h; a new schema only needs to describe its own payload table. Payload constructors always encode, so a payload view reaching Python is never empty — absence arrives asNone, mapped byto_python()intracker_bindings.cpp.- Structs are unaffected — flatc emits one struct type for both APIs, so
Pose/HandJointsbindings and the zero-copy NumPy views keep working unchanged.
Related docs
- Manifest and generator rules:
../codegen/AGENTS.md - Base interface:
../deviceio_base/AGENTS.md - Live impls and factory:
../live_trackers/AGENTS.md - Replay impls and factory:
../replay_trackers/AGENTS.md
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

