Back to landing

Omni Link — Product & Developer Documentation

Jarvis from Iron Man is no longer science fiction. With Omni Link, you can build your own Jarvis.

Omni Link is your way to build your own agent, turning abstract neural conversions into reliable machine actions. It’s a control layer that sits on top of any system, giving it the intelligence to understand humans.

Powered by the latest breakthroughs in AI, Omni Link brings everything together into one platform. One control layer. One interface.

And here’s the best part: you don’t need to be a coding wizard to use it. With the following examples, you’ll be able to set up your first agent in just minutes.

Let’s dive a bit deeper into the technical side and see how it works.

Version: 1.0

You can also ask the default Omni Link agent to give you a tour of the platform.

Check the official GitHub page for examples and live showcases.

1. Introduction

Think of Omni Link as a universal translator between humans and machines. It turns your words—whether spoken, typed, or sent through an API—into structured, typed commands that machines can reliably understand. The result is a single, consistent control surface for robotics, IoT, industrial systems, smart homes, or any machine in general.

Core Features

  • Deep understanding of LLMs: Commands are generated not only based on what you say, but based on what you mean and the context of your words.
  • Local & Remote communication: Work offline on a local broker or connect via HTTP for remote control. Keep things private when needed, or reach your systems from anywhere in the world.
  • Context & feedback: The agent always has a sense of environment state, and confirms whether commands executed successfully.
  • Unlimited agents: Your agent configurations are stored locally, so you can create as many as you want with one Omni Link account.
  • Cross-device support: Configure once and connect with the same agent from any device.

Omni Link powers everything from robot fleets and smart buildings to educational kits, dashboards, and service applications—any system that benefits from natural, human-friendly commands.

2. Quick Overview

After registration, Omni Link opens in deployment mode—the clean, end-user interface. To switch into edit mode where you can build and configure your agent, click the top-left icon and enter the default password: omnilink (We’ll cover how to change this password and secure your agent later in the Security section.)

2.1 Settings

  • Language & Voice: Pick your spoken language and favorite voice. (for now, only English is supported, but we will be adding more languages soon)
  • Persona & Names: Customize user and agent identities with tailored instructions.
  • Task Framing: Define your agent’s main purpose and expose only the command templates you want.
  • Memory & Mic: Decide how much conversation history to keep and set the mic’s silence timeout.

2.2 Appearance

Make it yours: live pickers for background, sphere, and backlight colors. Adjust halo size, gradient softness, glossiness, and reflections.

2.3 Modes

  • Pick your agent's input and output: voice or text.
  • Turn on the interrupt feature to cut off speech just by talking.
  • Switch between click-to-talk or continuous listening.
  • Sync all the agents opened on your devices into one.

2.4 Plans

Clear tier cards—Free, Silver, Gold, Diamond—show pricing, usage caps, and benefits. Your current plan is always highlighted.

2.5 Usage

See exactly how you’re using Omni Link:

  • Credit breakdown for listening, speaking, and AI processing.
  • Charts for talk time and command counts (7/30/90-day toggles).
  • Trends and insights to spot patterns instantly.

2.6 Connection

One panel to manage all connectivity:

  • Local MQTT broker status and topic credentials.
  • Context activity and last-published payloads.
  • Remote sync history with keys, last commands, and stored responses.

2.7 Deploy

Presentation-friendly mode: hide menus, clean up overlays, and run smooth demos.

2.8 Sign Out

Signs you out from the agent on the current device only. Other agents stay unaffected.

2.9 Staying on Top of Limits

If you run out of monthly credits, Omni Link shows a clear lockout screen with two options: Upgrade or Sign Out. Renewal resets everything.

3. Use Cases

Omni Link adapts to environments ranging from individual homes to complex industrial floors. Below are two flagship scenarios that show how natural language control becomes reliable, safe action.

Smart homes that anticipate your needs

Connect lighting, climate, security, and media devices through Omni Link so residents can speak naturally—“dim the hallway lights to 40% until 10pm” or “secure the downstairs doors and arm the night mode.” The agent parses intent, maps it to device-specific commands, and keeps the household updated with confirmations or follow-up questions.

  • Blend multiple vendors by translating one request into the exact APIs each device expects.
  • Trigger routines based on conversation context, occupancy sensors, or external events.
  • Maintain privacy by running the command parsing locally while synchronizing remote dashboards when desired.

Robot fleets that understand plain language

Deploy Omni Link between operators and mobile or stationary robots to convert instructions like “send rover three to aisle seven and scan for spills” or “have the manipulator pack the red crates” into structured mission plans. Feedback channels relay status, sensor context, and safety interlocks back through the same agent.

  • Coordinate task assignments across multiple robots while respecting capability and battery constraints.
  • Route telemetry into the context system so the agent can adjust follow-up commands without human intervention.
  • Integrate with MQTT, ROS, or custom control buses through Omni Link’s transport bridges.

4. Quickstart

Let’s build your first agent

Go to Settings → Main Task and paste the following:

You are an agent who helps customers choose the best country to visit and arranges their travel based on their preferred mode of transportation.

Then add your first Available Commands:

book_flight_ticket_to_[country],
book_train_ticket_to_[country]

Other settings to configure:

  • User Name: none
  • Agent Name: Sara
  • Agent Personality: friendly, professional
  • Conversation History Limit: 10
  • Silence Timeout: 3

Save your changes. That’s it! You’ve created your first agent.

Now click on the sphere to talk, or go to the Modes menu to choose how you want to interact (click-to-talk or continuous listening). Ask the agent anything you like and watch how it responds.


Debugging Window

In edit mode, you’ll see a movable debug window (hidden in deployment mode). It shows:

  • What you said (transcript)
  • The command sent to the API
  • The agent’s spoken response

Use this stage to test commands before connecting the agent to real systems. If the agent isn’t producing the commands you expect, just adjust the Settings until it does. More detail is provided in the Agent Configuration section.


Linking to Real Systems

An agent becomes powerful once it can act on real APIs. Here’s how to link:

System Requirements:

  • Python 3.9+ (3.10+ recommended)
  • Git
  • MQTT broker (e.g. Mosquitto) with WebSockets enabled on port 9001
  • Omni Link Python library
  • VS Code (or your preferred editor)

Installation:

# Clone the example repo
git clone https://github.com/omni-link-tech/omni-link-travel-agent.git

cd omni-link-travel-agent

Inside the repo you’ll find two key files:

  • travel_api.py → the API with travel functions.
  • link.py → connects your API with the Omni Link agent via the Omni Link library.

Open link.py and run it in VS Code. As you speak to the agent, you’ll see the parsed commands printed in the terminal.

If you uncomment the book_flight_ticket and book_train_ticket functions and run travel_api.py, the system will actually search Google for flights or trains to the country you mention.

And just like that, your first Omni Link project is live!

5. Architecture

Explore the Omni Link stack through the interactive diagram below. Click each component to see how agents, the OmniLink engine, transport bridges, and targets exchange commands, context, and feedback.

6. Agent Configuration

This section covers how to customize your agent.

  • Main Task: The main task is the overall goal of your agent. It should be written as a general description that combines everything the agent needs to do.
    Example:
You are a hotel customer service agent who manages reservations and answers customer questions.
  • Commands: Define patterns that map human-friendly input to structured commands. These should be descriptive phrases separated by underscores.
    Example:
book_room_number_1

But if you have 100 rooms, creating 100 commands is impractical. Instead, use variables inside square brackets:

book_room_number_[number]

Anything inside [] will be treated by the agent as a variable. You just have to describe the type of variable.
Example:

turn_on_light_in_[room]
  • Custom Instructions: Write the rules your agent must follow.
    Example: Always ask the user for confirmation before executing a command.
  • Knowledge: You can upload a file that will be treated as the knowledge base of the agent. This enriches the agent’s ability to answer questions and perform tasks.
  • Conversation History Limit: Define how many previous exchanges the agent remembers when generating responses.

7. Command Parsing

Command parsing is the step where Omni Link converts a free-form utterance into a normalized payload that downstream systems can understand. You describe the shape of a command with a template, and the engine extracts the variables that appear between square brackets.

Here is a simple template for moving chess pieces:

move_[color]_[piece]_from_[location1]_to_[location2]

If you say: “Move the white knight from a2 to a3”, the engine extracts:

{
  "template": "move_[color]_[piece]_from_[location1]_to_[location2]",
  "vars": {
    "color": "white",
    "piece": "knight",
    "location1": "a2",
    "location2": "a3"
  }
}

This structured payload is then published to your chosen transport.

Templates can be as expressive as you need. The parser recognizes separator characters (underscores, hyphens, whitespace) and uses them to match the relevant segments. You can also add aliases for natural language variations through the <synonyms> attribute in the configuration UI.

Multiple Commands, One Template

A single template can capture a family of commands. For example, the following template handles several thermostat actions:

thermostat_[action]_to_[temperature]_degrees

Sample utterances and the extracted payloads:

// "Thermostat set to 72 degrees"
{
  "template": "thermostat_[action]_to_[temperature]_degrees",
  "vars": {
    "action": "set",
    "temperature": "72"
  }
}

// "Thermostat boost to 25 degrees"
{
  "template": "thermostat_[action]_to_[temperature]_degrees",
  "vars": {
    "action": "boost",
    "temperature": "25"
  }
}

Because both commands share the same structure, you can implement downstream logic that switches on the action variable without redefining multiple templates.

Optional Segments and Defaults

Add optional suffixes by chaining multiple templates. For example, you might support both open_[door] and open_[door]_for_[duration]_seconds. When the shorter version is triggered, your connector can provide a default duration before the door automatically closes.

Defaults can also be injected by the transport bridge. If a user omits a variable, use your connector to supply a fallback value so that the receiving device always receives a complete payload.

Using Synonyms

Natural language is messy. Pair your templates with synonym tables to map phrases such as “turn on”, “enable”, or “activate” to the same [action] variable. Here is a short example:

light_[action]_in_[room]
// With synonyms: enable → on, activate → on, kill → off
// "Activate the lights in the kitchen"
{
  "template": "light_[action]_in_[room]",
  "vars": {
    "action": "on",
    "room": "kitchen"
  }
}

The parser resolves the synonym before delivering the payload, which keeps your downstream logic consistent regardless of how the user phrased the request.

Validation Tips

  • Define guard rails in your connector to reject commands with missing or malformed variables.
  • Log the raw utterance alongside the parsed payload to help diagnose template gaps.
  • Use the debug console to replay commands and fine-tune the template patterns before deploying to production.

By combining expressive templates, synonym mappings, and validation, you can cover the majority of natural language variations while keeping the command contract deterministic for any automation stack.

8. Agent Connection

Omni Link communicates with your automation stack through a unified connection layer. Regardless of the transport you choose, the agent always emits the same contract: command → feedback → context. This section explains how to take advantage of the connection system in both local experiments and remote deployments.

Local vs. Remote Connection

Local Connection

  • Perfect for development and debugging when everything runs on the same machine or LAN.
  • Run your API connector (for example link.py) locally and point the Omni Link UI to ws://localhost:9001 or mqtt://localhost:1883, depending on your transport.
  • Keep the debug window open to watch the command payloads in real time before they reach your hardware or services.

Remote Connection

  • Use this when the agent and the automation targets live in different networks (cloud deployment, on-prem controllers, or hybrid setups).
  • Expose your broker or bridge endpoints over the internet with TLS (WSS/HTTPS) and authentication. Reverse proxies such as Nginx or Traefik help terminate certificates and enforce IP allowlists.
  • Synchronize environment variables in the Omni Link UI with the remote hostnames, ports, and credentials for your broker or HTTP/WebSocket services.

MQTT Communication

MQTT is the recommended transport for mission-critical automations because it supports pub/sub semantics and lightweight payloads. Omni Link uses the following topics by default:

  • olink/commands – outbound commands published by the agent.
  • olink/commands_feedback – acknowledgements and execution results from your services.
  • olink/context – state updates that keep users informed.

Configure Quality of Service (QoS) according to your needs. QoS 1 ensures that every command is delivered at least once, while QoS 2 guarantees exactly-once delivery for sensitive actions. Retained messages on olink/context help late subscribers catch up with the latest status.

Setting Up Mosquitto

  1. Install Mosquitto: use your package manager (sudo apt install mosquitto mosquitto-clients) or Docker (docker run -p 1883:1883 -p 9001:9001 eclipse-mosquitto).
  2. Enable WebSockets: update /etc/mosquitto/conf.d/olink.conf (or the Docker-mounted configuration) with:
    listener 1883 0.0.0.0
    protocol mqtt
    
    listener 9001 0.0.0.0
    protocol websockets
    
    allow_anonymous false
    password_file /etc/mosquitto/passwords
                
  3. Create credentials: sudo mosquitto_passwd -c /etc/mosquitto/passwords omni-link, then restart the broker (sudo systemctl restart mosquitto or restart the container).
  4. Verify connectivity: publish and subscribe using mosquitto_pub and mosquitto_sub or connect through the Omni Link UI.

For remote deployments, secure Mosquitto further with TLS certificates, unique user accounts per service, and network firewalls.

Other Connection Options

  • HTTP Bridge: send POST requests with command payloads for systems that prefer synchronous workflows.
  • WebSocket Bridge: maintain a persistent duplex channel ideal for browser-based clients and dashboards.
  • Custom Transports: extend the connection layer by adapting the command contract to your protocol (serial, gRPC, OPC-UA, etc.).

9. Context System

Give the agent a running description of the system it controls by publishing readable context messages. Provide the state as plain text so the LLM can interpret it the same way a human operator would.

Include the most relevant details—status, recent actions, or sensor readings—in sentences or short bullet points. This keeps the agent grounded without forcing it to decipher raw data dumps.

Example context payload:

{
  "context": "Robot arm is homed. Current task: assemble panel A. Last command succeeded at 14:32."
}

Publish these updates on olink/context whenever the system changes so the user stays informed. Longer payloads are also supported as long as they remain human-readable. Below are two expanded examples that keep the model grounded without overwhelming it with noise.

Manufacturing Line Example

{
  "context": "Assembly Line 3: Conveyor speed 1.2 m/s. Robot arm completed weld sequence at 15:02 and is waiting for the next chassis. Safety gate closed. QA camera flagged Panel B for manual inspection (scratched surface)."
}

This message blends operational metrics, recent actions, and follow-up requirements. The agent can reference it to justify pausing the line, dispatching a technician, or notifying quality control without asking the operator to repeat known details.

Smart Building Example

{
  "context": "HQ Lobby: Temperature 22.3°C, humidity 46%. Front desk kiosk rebooted at 09:14 after firmware update. Visitor traffic light; no VIP guests expected this hour. Security notified about a propped door on Level 2 Stairwell B."
}

Context streams like this give conversational agents enough situational awareness to answer questions such as "Why is the stairwell alarm active?" or "Is the lobby comfortable for visitors?" while still fitting in a single MQTT payload.

11. Tutorials

  • Chess Demo: Full GitHub project (omni-link-tech/omni-link-chess). Demonstrates command parsing, context updates, and UI sync.
  • Travel Agent Demo: (explained above) shows how to build a conversational API connector.
  • Smart Home Demo: Coming soon.

Browse all official tutorials and sample projects on GitHub.

12. Security

Omni Link ships with the default edit-mode password omnilink. Before you deploy an agent for others to use, open Settings → Security, set a new password, and share it only with trusted collaborators. This password controls access to edit mode, so rotating it regularly keeps your deployment safe.

The password is global across all agents.

If you are the developer of the agent, please don't give the app password to any of your users, as they can then change the agent's configuration and alter its behavior. It is always best practice to add one more safety layer in your system to verify the commands coming from the agent.

13. Usage Management

Here we will discuss how to optimize your usage to get the best value out of your agent for the credits you have.

You can check your current usage by opening the Usage page in the side menu.

For the AI processing part, the more intelligent you make your agent the more tokens it is going to consume. When you add a long knowledge file, long context, or update the context frequently, all of this consumes tokens.

Best practice: during development, set the agent to respond in text only. Enable voice responses later for final testing and demos. This keeps token consumption efficient.

14. FAQ

Q: Can I run Omni Link fully offline?
Yes. Use only the local broker and disable cloud sync.

Q: Does it support multiple languages?
Yes. Configure your language in Settings → Language.

Q: How do I add new commands?
Simply edit your templates in Settings → Commands and restart the bridge.

Q: What should I do if I forget my edit-mode password?
You can reset it from Settings → Security while authenticated, or ask a teammate with access to update it.

Q: Can multiple teammates collaborate on the same agent?
Absolutely. Share the edit-mode password with trusted collaborators so they can sign in and contribute in real time.

Q: Where can I monitor system status and incidents?
Visit the Status page from the side navigation to review uptime history and subscribe to notifications.