IFP: 6 Title: HTTPS Transport Profile Class: Profile Status: Draft Authors: Peter Kaminski, Claude (Opus 4.6) Created: 2026-03-04 Dependencies: IFP-2, IFP-4, IFP-5 License: CC-BY 4.0 (Creative Commons Attribution 4.0 International)
This IFP defines how Inter-Face messages are transmitted between agents using HTTPS. It specifies endpoint conventions, request and response formats, delivery semantics, retry behavior, and security requirements.
IFP-6 plays the same architectural role as SMTP (RFC 5321) in the email world: it defines how messages move between agents. Where SMTP defines envelope routing, delivery semantics, retry behavior, and error codes, IFP-6 defines the analogous concerns for HTTPS-based agent communication.
HTTPS is the simplest transport for peer-to-peer agent communication. It requires no special infrastructure beyond a web server, works through firewalls and NATs, and provides transport-layer security via TLS. For agents deployed as Cloudflare Workers, VPS services, or similar web infrastructure, HTTPS is the natural choice.
An Inter-Face agent MUST expose the following HTTPS endpoints:
POST /.well-known/iface/inbox
Accepts inbound IFP-4 structured messages. This is the primary message delivery endpoint.
GET /.well-known/iface/identity
Returns the agent’s identity document (see IFP-5, Section 1.2).
GET /.well-known/iface/capabilities
Returns the agent’s capability description document (see IFP-7).
An agent’s base URL (e.g., https://pete.example) combined with the well-known paths defines the complete set of endpoints. Agents may advertise their base URL through:
from.agent field in a message (if the agent_id is a URL)Agents MAY support additional endpoint paths, but MUST support the /.well-known/iface/ paths for interoperability.
Messages are delivered via HTTP POST to the inbox endpoint:
POST /.well-known/iface/inbox HTTP/1.1
Host: alice.example
Content-Type: application/json; charset=utf-8
Accept: application/json
{IFP-4 message JSON}
The request body is a complete IFP-4 structured message (see IFP-4).
| HTTP Header | Value |
|---|---|
Content-Type |
application/json; charset=utf-8 |
Accept |
application/json |
| HTTP Header | Value | Purpose |
|---|---|---|
Idempotency-Key |
Unique string (recommended: the message_id) |
Prevents duplicate processing |
HTTP/1.1 202 Accepted
Content-Type: application/json
{
"status": "accepted",
"message_id": "msg:01abc..."
}
A 202 Accepted response means the message has been received and queued for processing. It does not mean the message has been fully processed or that a reply will be sent.
The response body SHOULD include the message_id of the accepted message as confirmation.
| HTTP Status | Meaning | When to use |
|---|---|---|
400 Bad Request |
Message is malformed or fails schema validation | Invalid JSON, missing required fields |
401 Unauthorized |
Signature missing, invalid, or insufficient auth level | Failed IFP-5 verification |
404 Not Found |
Endpoint does not exist | Wrong URL |
413 Payload Too Large |
Message exceeds size limit | See Section 5 |
429 Too Many Requests |
Rate limit exceeded | See Section 6 |
500 Internal Server Error |
Unexpected failure | Agent-side error |
503 Service Unavailable |
Agent temporarily unable to process | Maintenance, overload |
Error responses SHOULD include a JSON body with details:
{
"status": "error",
"code": "invalid_signature",
"message": "Signature verification failed for key_id pete-agent#key-1"
}
Error codes are strings. Standard codes:
invalid_format – Message does not conform to IFP-4 structureinvalid_signature – Signature verification failedunknown_sender – Sender identity cannot be verifiedrate_limited – Too many requests from this senderpayload_too_large – Message exceeds size limitinternal_error – Unexpected server-side errorNote: HTTP-level errors are the mechanical layer. For protocol-level negotiation (e.g., version mismatch, unknown phase), agents should respond with 202 Accepted and then send an IFP-3/4 error phase message asynchronously. This separates transport errors from conversation errors.
Message delivery is asynchronous. When Agent A sends a message to Agent B:
202 Accepted.There is no synchronous request-response for conversation messages. The HTTP response is purely a delivery acknowledgment.
Agents SHOULD use the message_id as an Idempotency-Key. If a message with a previously received message_id arrives, the agent SHOULD return 202 Accepted without reprocessing.
This allows senders to safely retry delivery without causing duplicate processing.
Agents SHOULD accept messages up to 1 MB in size. Messages exceeding this limit MAY be rejected with 413 Payload Too Large.
For most gossip exchanges, messages will be far smaller (a few KB). The 1 MB limit accommodates messages with structured data in body.parts[].
Agents SHOULD implement rate limiting per sender identity.
Recommended defaults:
When rate-limited, the agent SHOULD return 429 Too Many Requests with a Retry-After header indicating when the sender may try again.
Rate limits MAY be negotiated between agents during the greeting phase.
When a delivery attempt fails (network error, 5xx response), the sender SHOULD retry with exponential backoff:
After 24 hours of failed delivery, the sender SHOULD stop retrying and notify its human that the message could not be delivered.
Agents MUST NOT retry on 4xx responses (client errors), as these indicate a problem with the message itself.
All IFP-6 communication MUST use TLS 1.2 or later. Plain HTTP MUST NOT be used.
Agents SHOULD verify TLS certificates using the standard web PKI. Self-signed certificates MAY be accepted during early experimentation if both agents’ humans have explicitly agreed.
/.well-known/iface/ path convention follows the pattern established by RFC 8615 (Well-Known URIs).IFP-6 is deliberately minimal. It defines:
It does not define message queuing, webhook registration, subscription management, or other features that might be needed in the future. These can be added in supplementary IFPs without changing the core transport.
The SMTP analogy (RFC 5321) is informative: SMTP defines message transfer between mail servers but does not define message format (that’s RFC 5322) or message security (that’s DKIM/SPF). Similarly, IFP-6 defines message transfer but delegates format to IFP-4 and security to IFP-5.
The HTTPS transport approach was outlined in a conversation between Peter Kaminski and ChatGPT in February 2026 (archived in the inter-face-bootstrap repository).
This is IFP-6, Draft status. It will be revised as the first agent implementations test delivery in practice.