Redstone RAINT Lab¶
This is the practical lab for the running AInternet substrate. A RAINT is a short-lived runtime actor: it boots, binds identity, receives a consent window, exposes only verified MUX surfaces, records its own audit trail, and disappears when its lease ends.
The lab is not an install guide for a Python package. It is a way to see the primitives working together:
Use this page when you want to run the live path, inspect what is dark, and understand how a local or self-hosted AInternet node behaves under pressure.
For the reusable pattern behind this lab, see Runtime Box Model. The RAINT lab is the KVM/microVM reference implementation of that model.
What This Proves¶
| Property | Expected behavior |
|---|---|
| Identity before route | A call is signed and verified before any surface is reached. |
| Dark by default | Unknown or unauthorized surfaces return no useful wire signal. |
| Auditability | Allowed and denied actions appear in the RAINT audit trail. |
| Bounded runtime | The RAINT has a TTL and is destroyed after the window. |
| Bilateral relation | Two RAINTs do not talk until a 2-of-2 relation exists. |
| Foothold discipline | pty.aint is a lease, not a raw shell. |
Start a Fresh RAINT¶
On the Redstone host:
The start command prints a live RAINT name:
It also prints the consent window. In the current arena profile this is intentionally short. If the window closes, start a new RAINT instead of trying to revive the old one.
Attach by Identity¶
From the operator side, attach to the RAINT by name:
This is not a host shell and not a guest shell. It is a client over verified surfaces. Underneath, attach asks the broker for the RAINT's own surface and keeps the consent window in view.
Expected public surfaces:
Unknown surfaces and forbidden surfaces stay dark.
Signed Frame Mode¶
The broker-facing frame path is:
Each surface call uses:
broker challenge
fresh nonce
lane id
consent receipt hash
signed MUX frame
broker verification
surface route
The guest trusts the broker grant, not the caller directly. This keeps the HTTP carrier from becoming the authority.
Dark Surface: capture.this¶
Probe the sealed surface without a clearance:
Expected behavior:
The audit can record the probe. The caller does not get a reason from the guest surface.
Open it only with an L4 clearance claim signed by vault-keeper.aint:
ainternet attach raint-51fc8ee7.test.aint \
--frames \
--key <richard-ed25519-key> \
--cap-key <vault-keeper-ed25519-key>
Expected decision:
The broker verifies the clearance claim and issues a short-lived surface grant. The guest accepts only that broker-signed grant and opens the sealed TBZ envelope.
Relation Between Two RAINTs¶
Start two fresh RAINTs:
Before a relation exists, cross-RAINT route attempts fail closed:
In ainternet attach, form the relation:
This forms a 2-of-2 signed relation contract:
Then route over the relation:
Expected behavior:
handshake.aint -> peer guest returns 0x4000
audit.aint -> peer audit is returned
capture.this -> 0x0000, surface-not-in-relation
The denial reason shown by attach is control-plane feedback to the authenticated operator. It is not a guest surface leak and does not change true-dark wire behavior.
Inside Position: pty.aint¶
pty.aint is the first inside foothold surface. It is not an SSH server and not a raw shell.
Before a grant:
curl --noproxy "*" -sS -m 2 http://198.51.100.2:8080/resolve/pty.aint # your raint's lane address — yours will differ
Expected wire behavior:
Open a short-lived lease:
python3 raint_broker.py \
--pty-open raint-51fc8ee7.test.aint \
--pty-subject richard.test.aint \
--pty-ttl 60
Expected result:
{
"kind": "org.ainternet.redstone.pty.open-result.v1",
"surface": "pty.aint",
"guest": {
"result": "0x4000",
"session": {
"kind": "org.ainternet.redstone.pty.session.v1",
"mode": "foothold-lease",
"shell": false
}
}
}
A future interactive PTY must hang behind this lease. The invariant is simple:
Inspect Audit¶
Inside attach:
Or from the carrier during a lab run:
curl --noproxy "*" -sS http://198.51.100.2:8080/audit # your raint's lane address — yours will differ
Useful phases to look for:
jis_bound
consent_granted
mux_surface_ready
mux_frame_decision
capture_grant_verified
relation_formed
relation_route_decision
pty_grant_verified
The audit is the place where denied probes can exist without becoming an oracle to the caller.
Clean Up¶
Stop every active RAINT when the lab is done:
Expected final state:
The Line To Keep¶
You are not opening ports. You are asking whether a route may exist.
That is the core Redstone lesson: a small AInternet can be one household, one runtime, one AI, two RAINTs in a lab, or a continent-scale mesh. The primitive is the same.