Skip to main content

Memos smart home integration, free and open source

Memos integration for Gladys Assistant

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​

  1. Open the Configuration tab of the integration.
  2. 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).
  3. Paste the Access token (it starts with memos_pat_).
  4. Read Memos every: 1, 5 (default), 15, 30 or 60 minutes. New memos are announced to the scenes at the next read.
  5. Language of names and messages sets the feature names (fixed when the device is added) and the texts of the integration. French by default.
  6. Save, then use Test the connection: it shows the Memos version, the user and the number of memos.
  7. In the Discovery tab, add the Memos device.

Device​

Memos (one device for the server, in the name of the token owner):

FeatureValue
Memosnumber of your memos (archived ones excepted)
Pinned memosnumber of your pinned memos
Tagsnumber of your top-level tags (#home/garage counts as home)
Memos with open tasksyour memos holding an unchecked task (- [ ])
Latest memofirst 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 (home also 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, tags home, journal: Memos dates the memo, and the journal is searchable by tag.
  • Shopping list on the kitchen tablet: a widget set on the tag shopping shows 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, tag menu, Pin the memo ticked; every Sunday evening → Pin the latest memo of a tag menu with 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: localhost is 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 (Home is not home) 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.

SettingTypeRequiredDescription
Connect MemossectionNoEnter 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 addressstringYes
Access tokensecretYesMemos → Settings → Access Tokens → Create. The memos are written as this user.
Read Memos everyselectNoNew memos are announced to scenes at the next read.
Language of names and messagesselectNoFeature names are set when a device is added to Gladys.

How to install Memos in Gladys​

  1. In Gladys, open Integrations: Memos appears in the catalog, next to the native integrations, with a community badge.
  2. 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).
  3. Open the Configuration screen of the integration, fill in the settings, and save.
  4. 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.

Subscribe to the Gladys Assistant newsletter

A few emails per month about new releases and project news. Sent by Pierre-Gilles Leymarie, founder of the project. Unsubscribe anytime 🙂