Memos smart home integration, free and open source

Memos in Gladys: write memos from scenes, show the latest ones, react to a new memo.
Connect Gladys to Memos, the self-hosted, open-source note-taking app: write memos from your scenes (a house journal, a reminder), show the latest ones on the dashboard, and start a scene when a memo with a chosen tag is written. Gladys talks directly to your Memos server, on your network or on the Internet.
Tested against a real Memos 0.31.0 server (the official Docker image,
neosmemo/memos:stable, October 2026). The Memos API changed a lot between
versions: older servers are not supported. Feedback welcome on the Gladys
forum.
Prerequisites
- Gladys Assistant 5.2 or later.
- A Memos server, 0.31 or later, reachable from the Gladys machine: on port 5230 by default, or through a reverse proxy.
- An access token: in Memos, open Settings → Access Tokens and create one (choose Never as expiration, or remember to renew it). The integration reads and writes as the user who owns the token.
Configuration
- Open the Configuration tab of the integration.
- In Memos address, enter the IP address of the server, for example
192.168.1.50: the integration then uses port 5230. Add a port if yours differs (192.168.1.50:5231). Behind a reverse proxy, enter the full address (https://memos.example.org). - Paste the Access token (it starts with
memos_pat_). - Read Memos every: 1, 5 (default), 15, 30 or 60 minutes. New memos are announced to the scenes at the next read.
- Language of names and messages sets the feature names (fixed when the device is added) and the texts of the integration. French by default.
- Save, then use Test the connection: it shows the Memos version, the user and the number of memos.
- In the Discovery tab, add the Memos device.
Device
Memos (one device for the server, in the name of the token owner):
| Feature | Value |
|---|---|
| Memos | number of your memos (archived ones excepted) |
| Pinned memos | number of your pinned memos |
| Tags | number of your top-level tags (#home/garage counts as home) |
| Memos with open tasks | your memos holding an unchecked task (- [ ]) |
| Latest memo | first line of the newest memo you can read, or "None" |
The counters keep their history. The badge of the device shows whether Memos answers: local for an address of your network, cloud for a public host, unreachable when it does not answer.
Dashboard widget
Memos: three tiles (memos, pinned, open tasks), the six newest memos and a
New memo button. In the widget settings, Tag shows only the memos of a
tag (and of its sub-tags), and Pinned memos only keeps the pinned ones. Tap
a memo to read it in full; Open in Memos appears when Memos is reached over
https. New memo opens a form: type the text (Markdown and #tags work as
in Memos) and the integration writes a private memo. On a widget set on a tag,
the memo gets that tag: a shopping widget becomes a shopping list.
Scene triggers
- New memo: a memo is written in Memos, by you, or by another user when it is shared with you (protected or public). Filters: Author (a Memos username) and Visibility.
- New memo with a tag: a new memo carries the tag, or one of its sub-tags
(
homealso fires for#home/garage). Type the tag without#, exactly as in Memos: upper and lower case count. The Matched tag variable tells which one.
Variables of both: Text of the memo, First line, Tags (separated by
commas), Author (username), Visibility (private, protected or
public), Visibility, in words and Link to the memo.
The first read after the installation is silent: the memos already there are not announced. The memos written by this integration are never announced, so a scene cannot loop on itself. At most ten memos are announced per read; the rest is counted as seen.
Scene actions
- Write a memo in Memos: Text of the memo (required, Markdown; insert
scene variables with
{{), and optionally Tags (separated by commas, without#: they are added at the end of the memo), Visibility (private if nothing is chosen) and Pin the memo. Returns Memo id, First line and Link to the memo. - Pin the latest memo of a tag: pins the newest memo carrying the Tag, or unpins it with Unpin instead. Same results. It fails when no memo carries the tag.
Scene examples
- House journal: the garage door opens after 22:00 → Write a memo in
Memos with
Garage door opened late, tagshome, journal: Memos dates the memo, and the journal is searchable by tag. - Shopping list on the kitchen tablet: a widget set on the tag
shoppingshows the shopping memos, and New memo adds one with the tag. - Menu of the week: every Monday at 8:00 → Write a memo in Memos
Menu of the week, tagmenu, Pin the memo ticked; every Sunday evening → Pin the latest memo of a tagmenuwith Unpin instead. - Message from the family: trigger New memo with a tag
gladys→ speak or send{{triggerEvent.data.author}}: {{triggerEvent.data.content}}. - Reminder of open tasks: every evening at 20:00 → continue only if Memos with open tasks is above 0 → send a message "You have unfinished tasks in Memos".
Troubleshooting
- "Memos refused the access token": the token was deleted, has expired or is mistyped. Create a new one in Memos → Settings → Access Tokens.
- "Memos does not answer": check the address and the port from the Gladys
machine. The container uses a bridge network:
localhostis the container itself, enter the IP address of the server instead. - "This address does not answer like Memos": a proxy login page answers instead of Memos. Enter the address of Memos itself, or let the proxy through for the Gladys machine.
- "This Memos is too old": update Memos (0.31 or later).
- "Memos has no account yet": open Memos once, create the administrator, then the token.
- A trigger with a tag does not fire: check the case of the tag (
Homeis nothome) and that the memo is not written by this integration. - To see more in the logs of the integration, set
LOG_LEVEL=debug. The content of the memos is never written to the logs.
Limits
- The device is keyed by the Memos username: renaming the user in Memos creates a new device, and the triggers start again from a silent read.
- One Memos server and one user: the owner of the token. The counters count that user's memos; the list, the widget and the triggers also show the memos other users share (protected or public).
- The triggers fire at the next read (5 minutes by default), not instantly.
- A memo is written with Markdown text only: no attachments, no location, no comments.
- The integration never deletes nor archives anything in Memos.
- Not affiliated with the Memos project.
Configuration settings
These are the settings Memos asks for in its configuration screen in Gladys.
| Setting | Type | Required | Description |
|---|---|---|---|
| Connect Memos | section | No | Enter the address of your Memos server (port 5230 by default) and an access token: in Memos, open Settings → Access Tokens and create one. The integration reads your counters and newest memos, and writes the memos your scenes send it. Tested with Memos 0.31. |
| Memos address | string | Yes | |
| Access token | secret | Yes | Memos → Settings → Access Tokens → Create. The memos are written as this user. |
| Read Memos every | select | No | New memos are announced to scenes at the next read. |
| Language of names and messages | select | No | Feature names are set when a device is added to Gladys. |
How to install Memos in Gladys
- In Gladys, open Integrations: Memos appears in the catalog, next to the native integrations, with a community badge.
- Click Install. Gladys pulls the Docker image (
ghcr.io/guim31/gladys-memos:1.0.0), starts it in a sandbox isolated from the core, and generates the integration's interface (devices, discovery and configuration). - Open the Configuration screen of the integration, fill in the settings, and save.
- You can also install it directly from its repository URL: https://github.com/guim31/gladys-memos.
Memos requires Gladys >=5.2.0. The catalog inside Gladys refreshes every hour, so a new version becomes available at most one hour after its release.
Not running Gladys yet? It is free and open source: follow the installation guide to get started.
About external integrations
Memos is an external integration: a community integration packaged as a Docker container and published on GitHub, that Gladys installs in one click and runs in a sandbox isolated from its core. It is published and maintained by guim31, not by the Gladys core team.
- Browse all integrations, native and community
- Build and publish your own external integration
- Source code on GitHub — source of this documentation