Skip to Content
Overview

Overview

We make two things: Tiles, our consumer product, a local-first AI assistant; and Tilekit, the SDK for developers to build on the infrastructure behind Tiles.

Status: Alpha

Tiles is currently alpha-quality software. It is usable for everyday tasks, though you may encounter bugs and performance issues. Tilekit, the developer SDK, is experimental, not a current priority, and intended for exploratory use, not production.

Features

Agent Harness

Native Pi agent harness for knowledge work, built around OpenAI logogpt-oss-20b, with Plugins support.

On-device Models

Built-in on-device models with Modelfile support for building and sharing custom weights. Powered by MLX on Apple Silicon and llama.cpp on Linux.

User Owned Identity

User-owned identity with Decentralized Identifiers (DIDs) and User Controlled Authorization Networks (UCANs) for authorization.

P2P Sync

E2EE peer-to-peer chat sync across linked devices, online.

Remote Inference

Use models on remote machines as if they were local.

Shared Links

Create a public or private link to a chat session, published through ATproto.

Offline Installer

Fully offline installer for secure, air-gapped installations.

Developer SDK

Use Tilekit as an app server runtime within your own app, built on open standards such as the Open Responses API.

What makes Tiles different

Tiles is built around a narrow bet: one well-integrated model at a time, optimized for credible local inference on Apple Silicon while balancing privacy, capability, and everyday usability.

CapabilityTilesOllamaLM StudioJanOsaurus
Decentralized IdentitySupportedNot supportedNot supportedNot supportedSupported
EncryptionSupportedNot supportedPartially supportedNot supportedSupported
SyncSupportedNot supportedNot supportedNot supportedNot supported
On-device modelsSupportedSupportedSupportedSupportedSupported
Cloud modelsNot supportedSupportedNot supportedSupportedSupported
In-house modelsNot supportedNot supportedNot supportedSupportedSupported
Agent HarnessSupportedSupportedPartially supportedNot supportedSupported
MemoryNot supportedNot supportedNot supportedNot supportedSupported
PluginsSupportedSupportedSupportedSupportedSupported
SandboxNot supportedNot supportedNot supportedNot supportedSupported
Shared LinksSupportedNot supportedNot supportedNot supportedNot supported
Developer SDKSupportedSupportedSupportedNot supportedSupported
Offline InstallerSupportedNot supportedNot supportedNot supportedNot supported
Cross platformSupportedSupportedSupportedSupportedNot supported
Open sourceSupportedPartially supportedPartially supportedSupportedSupported
SupportedPartially supportedNot supported

Product walkthrough

Technical Architecture

Technical architecture diagram for Tiles
Technical architecture of Tiles.

Talks

Conference recordings that introduce Tiles and the local-first direction behind it.

PuneFOSS 4.0 Conference, Pune, India
MLX India Community Meetup 2, Mumbai, India

CLI

Tiles CLI onboarding screen in the terminal (light theme)
Click to expand

Onboarding flow for the Tiles CLI.

View this public shared chat example at chat.tiles.run/YXQ6Ly9k…ZTJr, or this private shared chat example at chat.tiles.run/YXQ6Ly9k…DTBVLJ. Tiles supports public and private shared chat links. Public links resolve to a chat record on the user’s ATproto personal data server (PDS). Private links store an encrypted transcript on the user’s PDS; the decryption key is appended to the share URL and is not sent to the server. In both cases, Tiles does not store a copy of the shared conversation on our servers.

Shared chat link screen in light theme on mobile
Click to expand

Shared chat link screen shown after running a /share command.

Frequently asked questions

Short answers drawn from our security documentation. For full context and limits, read that page.

What is the current maturity level of Tiles and Tilekit?

Tiles is currently alpha-quality software. It is usable for everyday tasks, though you may encounter bugs and performance issues. Tilekit, the developer SDK, is experimental, not a current priority, and intended for exploratory use, not production.

What does local-first mean for Tiles?

Tiles is designed so the default experience runs on-device. The local server binds to localhost, which limits exposed network surface during normal use. Configuration and application data live in standard local directories, and you can change the user data path when needed.

Are chat and account databases stored as plain SQLite files?

No. Application state is persisted locally with encryption at rest. The Rust build uses SQLCipher-enabled SQLite, and database connections use a passkey from secure storage. That raises the bar against casual inspection of copied files, though it does not remove all local risk.

How does Tiles handle identity and secret material?

Public identity is separated from private keys. Device and account identity use did:key identifiers from Ed25519 keys. Private keys and database passkeys are stored in the operating system’s secure credential store, not in plaintext app configuration files.

How does device linking and chat sync work?

Peer-to-peer linking is user-mediated, not automatic. One device shows a ticket or local code; the other enters it and explicitly accepts or rejects. In release builds, endpoints derive from your stored secret key, and peer identity is checked against the delivered public key. Sync includes defensive controls, including a maximum size cap for downloaded deltas before they are applied.

Sync uses Iroh for device-to-device networking. When a direct path is not practical, Iroh’s public relays can help establish the connection; we list that relay use on our sub-processors page.

Does Tiles include product analytics, and what is logged locally?

The product does not currently bundle obvious analytics SDKs such as Sentry, PostHog, Segment, Mixpanel, or similar telemetry. There is still local logging: the Python server may log request metadata and bodies to files under the Tiles data directory, so prompt content can appear in local logs unless logging changes.

How do updates, signing, and bundled dependencies relate to trust?

Updates can check GitHub releases and install via the hosted installer script, which depends on release and hosting integrity rather than a stronger built-in end-user verification workflow. Dependencies are pinned and reviewed. The macOS package is code signed, notarized, and stapled. Bundled dependencies are self-contained so normal installation and use do not require live package downloads from the internet.

How do I report a security vulnerability?

Use the published security policy and private disclosure path. Researchers can use GitHub Security Advisories or email [email protected], with expectations for acknowledgement, triage, and coordinated disclosure. See SECURITY.md.