@interactions-hq/skyline is the unified messaging SDK for TypeScript. Write your logic once, deliver it across every platform — iMessage, WhatsApp, WhatsApp Business, or your terminal for local development.
Installation
@interactions-hq/skyline is the batteries-included package — it bundles the runtime and every official provider.
Core concepts
Skyline is built around four primitives:| Primitive | What it represents |
|---|---|
| Message | An incoming piece of content — text, attachments, or structured data — from any platform. |
| Space | A conversation context. A DM, a group chat, a terminal session. You send messages into a space. |
| User | A participant on a platform, identified by a platform-specific ID. |
| Provider | A platform adapter (iMessage, WhatsApp, terminal, …) that translates platform-specific protocols into Skyline’s unified interface. |
[Space, Message] tuple. The space gives you the ability to respond; the message gives you the content and metadata.
Quickstart
Get your credentials
Find yourSKYLINE_PROJECT_ID and SKYLINE_PROJECT_SECRET in your project Settings on the dashboard, or from your hackathon organizer.
Cloud mode uses https://api.interactions.co.in — no base URL to configure.
Run your first app (terminal — no credentials)
The terminal provider works without credentials. Use it to validate your agent loop before connecting iMessage:Run your first iMessage app (cloud)
The app instance
Skyline() returns a SkylineApp — an object with a merged inbound feed and platform-specific send surfaces.
app.on(event, handler) rather than the message feed.
Multi-platform in three lines
Combine providers to receive and send across platforms simultaneously:app.messages stream. The message.platform field identifies the source.
Environment variables
| Variable | Description |
|---|---|
SKYLINE_PROJECT_ID | Your project UUID |
SKYLINE_PROJECT_SECRET | Your project secret (sk_…) |
.env file — never commit them to source control.
Next steps
Spaces and users
Send, react, reply, and type in a space.
iMessage provider
Connect to managed iMessage lines.