Independent engineering & research · Colorado, USAFederal contracting information
AbramsResearch Systems LLC

01 / Abrams Event Address

Keep the context with every state record.

A position means little without its time and reference frame. AEA keeps them together: a fixed-size record of position, velocity, attitude, and timing, with an integrity check that can be reproduced independently.

Interface study / 001AEA-STATE/1
136bytes per record

A state.
Its context.
An integrity check.

000–023Context24 B
024–047Position24 B
048–071Velocity24 B
072–103Attitude32 B
104–135Integrity32 B
104-byte canonical prefix32-byte SHA-256
Little-endian encoding · natural 8-byte alignmentInspect aea.h

Operational purpose

When the link drops,
the record stays useful.

An onboard system can continue recording its estimated state during a communications interruption. When those records are recovered, each carries its declared coordinate frame, time scale, and a digest to check for changed data.

AEA supplies this recording interface. The host supplies the navigation estimate, clock, storage, and transport. Integration work defines how those parts meet at the boundary.

Explore integration scenarios

System boundary

A small interface inside your architecture.

01 / Host

Provide the state

Navigation estimate, timestamp, body and frame identifiers.

02 / AEA core

Validate & seal

Validate fields, encode the canonical prefix, calculate SHA-256.

03 / Host & consumer

Store & verify

Transport or retain the record; independently check its digest.

Frame tags describe supplied coordinates. Coordinate transformations, clock synchronization, state estimation, and authenticated transport remain host responsibilities.

Embedded integration

C at the boundary.
Rust in the core.

The public aea.h interface exposes sealing, verification, and version functions. The Rust core builds as a static library, with no_std for bare-metal targets, no heap allocation, and no external crate dependencies.

Evaluation begins with your target processor, compiler, telemetry interface, and timing budget. The linked source and known-answer vectors provide a concrete starting point for a reproducible integration test.

Read the implementation

Public C ABI / v1.0

#include "aea.h"

int32_t aea_seal(AeaRecord *record);

int32_t aea_verify(
    const AeaRecord *record
);

uint32_t aea_version(void);

Sealing writes the digest. Verification returns a match, mismatch, or validation error. The caller owns the record memory.

Interface control / AEA-STATE/1

Every byte accounted for.

The C structure is naturally aligned to 8 bytes, without packing directives. Its wire encoding is explicitly little-endian. The digest covers canonical encoded fields, rather than a raw copy of host memory.

AEA-STATE/1 · 136 bytes · offset and length in bytes
OffsetBytesFieldC typeMeaning
04versionuint32_tRecord version: 1
44body_naifuint32_tNAIF body identifier; 399 = Earth
88time_secint64_tSeconds since 1970-01-01 on the declared time scale
164time_nsecuint32_tNanoseconds: 0–999,999,999
202frameuint16_tITRF2020 / GCRS / BCRS / BODY
222time_scaleuint16_tTAI / TT / TCB / TDB
2424pos_mdouble[3]Cartesian position, metres
4824vel_mpsdouble[3]Cartesian velocity, metres per second
7232quat_xyzwdouble[4]Attitude quaternion, x / y / z / w
10432hashuint8_t[32]SHA-256 of the canonical 104-byte prefix

Floating-point negative zero is canonicalized for hashing. Quaternion normalization remains the caller's responsibility; v1 uses the same identity value for aligned and unmeasured attitude.

The unkeyed digest detects corruption when checked against the stored digest. Source authentication requires an outer signature or authenticated container. See the full ICD for enums, validation rules, and integration caveats.

Open the interface control document

Evidence & evaluation

Start with a record
you can reproduce.

The public repository includes the C interface, source, and a Cambridge known-answer test vector. Use the browser inspector or reference CLI to decode that record and recompute its digest.

Available today
Public specification, implementation, C ABI, and reproducible test vector.
Evaluation measures
Target build, memory use, execution time, and telemetry behavior to be measured on the proposed host.
Maturity assessment
A formal TRL rating and flight qualification are not assigned here. Evaluation milestones are defined with the program partner.
SWaP-C
136 bytes describes the record size. Processor load, power, memory footprint, and system cost require target-specific measurements.

Contracting & research partnerships

Put a requirement on the table.

Discuss a research objective, an SBIR/STTR teaming opportunity, or sample batch requirements with Joshua M. Abrams, Founder & Principal Investigator.

Discuss a project