Lyre / documentation
Get Lyre

Lyre facts and review guide

A concise product description, source links and a small demonstration you can evaluate yourself.

On this page

What is Lyre?

Lyre Studio (Lyre) is a workspace for running AI coding agents on your own computer and interacting with live app previews from paired devices. The computer is the host: it holds the project and runs its tools. Keep it awake and reachable when working from another device.

Supported coding agents include Claude Code, Codex and OpenCode. Connect and configure the provider you choose; its accounts, model access and usage terms apply. Local projects and local-network workflows do not require a Lyre cloud account. Coding agents and setup · App previews · Device access.

Check these sources when writing about Lyre
Fact Current source
Downloads and platforms Downloads and device support, public release notes and assets. Record the actual host and client versions you use.
Pricing Current plans and allowances. AI provider usage may have separate charges. Record currency, billing period and date if quoting a price.
Data and access Security and privacy guide and privacy policy. Connection protections vary by path; review device connection disclosures and provider disclosures.

Local project storage does not mean every request stays local. Coding providers can receive prompts and project context. A local model alone does not isolate an agent from the network. Check the configured provider and tools before using sensitive data.

Before running the demonstration

Evaluation procedure

The steps below are a demonstration to run and record. They are not measured results, a customer story or a guarantee that a particular setup passes.

What you’ll need
  • A compatible Lyre installation on your host. Check downloads and device support for the client you intend to test.
  • Node.js installed on the host and available to its project commands. This counter uses only built-in Node.js modules and needs no package install.
  • A new empty test folder containing no private data, plus a coding agent you have configured if testing the editing step.
  • Optional: a compatible phone or browser client, authorized for this test project. Begin on the same trusted network.

Record the date, host and client versions, operating systems, agent/model, permission mode, network path and relevant plan. Keep the original files for comparison. Do not use a production project for this demonstration.

1 · Create a repeatable starting point

Create these two files in the empty test folder. Save the first as index.html:

<!doctype html>
<html lang="en">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Lyre review counter</title>
<h1>Review counter</h1>
<p>Count: <output id="count" aria-live="polite">0</output></p>
<button id="add" type="button">Add one</button>
<script>
  const count = document.querySelector('#count');
  document.querySelector('#add').addEventListener('click', () => {
    count.textContent = String(Number(count.textContent) + 1);
  });
</script>
</html>

Save the second as server.mjs:

import { createServer } from 'node:http';
import { readFileSync } from 'node:fs';

const port = Number(process.env.LYRE_PORT || process.env.PASEO_PORT || 4317);
const server = createServer((_request, response) => {
  response.writeHead(200, {
    'Content-Type': 'text/html; charset=utf-8',
    'Cache-Control': 'no-store',
  });
  response.end(readFileSync(new URL('./index.html', import.meta.url)));
});
server.listen(port, '127.0.0.1', () => {
  console.log('Demo listening on http://127.0.0.1:' + server.address().port);
});

From a terminal in that folder, run node server.mjs. Open the local address it prints and click Add one twice: the expected count is 2. Stop this manual server with Ctrl+C before Lyre starts its own copy. If port 4317 is occupied, stop only your own demo process or use the port Lyre assigns in the next step.

The server binds to the host's loopback interface. Access from another device will use Lyre's authorized preview connection; do not forward this demo port to the public internet. The counter keeps no saved data and starts at 0 on each page load.

2 · Open and interact with the preview

  1. Add the folder and save its start command

    Choose Add project and select the test folder. In Library, open that project's menu and choose Open project settings, then Scripts. Choose Add script, name it preview, enter node server.mjs, and enable Run as a service. Save the script and project settings. The server reads the port Lyre assigns. Startup configuration.

  2. Test the desktop preview

    Choose Open app. Record startup errors if any. From a fresh page, activate Add one twice and record the displayed count; the expected count is 2. Use Tab to focus the button and Enter or Space to activate it. Preview controls and recovery.

  3. Test an authorized client separately

    If you have a compatible client, follow pairing and access, approve access only to the test project, then open its app. Try the same two taps and record the result. Each device has its own counter state; matching numbers across devices are not a synchronization test. Mark this step not tested if a suitable client is unavailable.

3 · Ask for one change and inspect it

In the test project's conversation, send this request after selecting your configured agent:

Add a Reset button to index.html that sets the counter to 0.
Keep Add one working and keep this page dependency-free.
Explain your plan before editing. Do not change server.mjs.
Tell me which files you changed and how I can check the result.

Read the plan and any permission request before approving. Inspect the actual edits in Files and Changes. A completion message is a reason to review the result; it is not a passing test.

Reload the app and record this sequence on each tested device: initial count 0; Add one twice gives 2; Reset gives 0; Add one gives 1. Test both buttons with the keyboard on desktop and by touch on phone. Record failures and any extra edits or retries. Agent output can vary, so retain the final diff with your observations.

Record recovery, access and limitations

  • Reconnection: disconnect the client network, restore it and reconnect. Record whether the app can be reopened and used. Browser reload resets this counter; it has no persistence.
  • Off-network use: if that is part of your review, test it separately with a supported configured connection. Record the actual path and allowance. A same-network pass does not establish off-network behavior. Connection setup.
  • App-only access: to evaluate sharing, use Share app with a separate test client. Check that it can use the chosen app and cannot open agents, source, terminals, other projects or host settings. Remove that client's grant and check that its existing app session and new access attempts stop working.
  • Cleanup: stop the demo service, remove test-device access and retain or delete your test folder deliberately. Stopping a preview does not remove information already sent to a model provider.

For each step, record passed, failed or not tested, the expected and observed behavior, and a redacted screenshot or error where useful. Disclose any supplied access, payment, sponsorship or affiliation. Keep staged demonstrations and edited recordings labeled.

Scope of the evidence

A successful counter demonstration supports that workflow on the recorded setup. It does not establish every framework, device, production deployment or security property. State which steps you ran and which remain untested.

For other workflows, see choosing Lyre, Happy or Replit. For installation or test problems, use troubleshooting.