# Monica: a self-hosted personal CRM for people who forget birthdays

> Monica is an open source Laravel application for documenting your relationships with friends, family and business contacts. It is deliberately not a social network, and the 5.x branch is still labelled beta.

**monicahq/monica** — Personal CRM. Remember everything about your friends, family and business relationships.

- Repository: https://github.com/monicahq/monica
- Website: https://beta.monicahq.com
- Stars: 25,381 · Forks: 2,611
- Language: PHP
- License: AGPL-3.0
- Published: 2026-09-21 · Updated: 2026-09-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/monicahq-monica

## The problem Monica solves, and the people it is written for

Most people keep relationship data in their head. Birthdays, the names of someone's children, how you met, the last time you spoke. That works until it does not, and the failure is quiet: a missed anniversary, a conversation that restarts from zero. Monica is a web application that stores those details and reminds you about them. The README describes it as a PRM, personal relationship management, and frames the comparison directly: a CRM for your friends and family rather than for a sales team.

The README names its audience plainly. It is for people who want to document their lives and for those who have difficulty remembering details about the lives of people they care about. It also reports positive reviews from people with Asperger syndrome, Alzheimer's disease, and introverts. That is a specific, non-marketing audience statement, and it explains why the feature list reads the way it does: contacts, relationships between contacts, notes, reminders, automatic birthday reminders, activities, tasks, addresses, pets, custom genders, custom activity types, labels, multiple vaults and users, and a diary.

The README is equally direct about what Monica is not. It is not a social network and the project states it never will be. It is not a smart assistant and will only send emails for things you asked to be reminded of. It does not ship built-in AI integrations. Those exclusions matter more than the feature list, because they tell you which product decisions will not be revisited.

## Laravel, MariaDB, Redis, Meilisearch: what the repository actually contains

The top-level layout is a Laravel application. There is app/, bootstrap/, config/, database/, routes/, resources/, storage/, tests/, plus artisan, composer.json, composer.lock, phpunit.xml, phpstan.neon, psalm.xml and pint.json. The frontend is separate: package.json, vite.config.js, yarn.lock, eslint.config.js and a resources/ directory. The JavaScript dependencies in package.json include vue, @inertiajs/vue3, tailwindcss, ant-design-vue, v-calendar and lucide-vue-next, so the UI is Vue with Inertia rather than a server-rendered Blade-only stack.

docker-compose.yml defines the service topology. The laravel.test service is built from ./vendor/laravel/sail/runtimes/8.4, which tells you the intended PHP runtime is 8.4 under Sail. Two more services reuse the same anchor: laravel.queue runs php artisan queue:work --sleep=10 --timeout=0 --tries=3 --queue=high,default,low, and laravel.cron runs php artisan schedule:run. The dependencies are mariadb, redis, memcached, meilisearch and mailpit. That is the data flow in one line: the web container serves the app, MariaDB holds the records, Redis and Memcached back caching and queues, Meilisearch handles search, and Mailpit catches outgoing mail in development.

The queue and cron containers are the part people miss when they deploy this by hand. Birthday reminders and scheduled email are not produced by a request to the web container. If laravel.queue and laravel.cron are not running, the application still serves pages and still saves contacts, and the reminders simply never fire.

## Installing Monica and recording a first contact

The README does not carry install instructions inline. It links to https://docs.monicahq.com, and for contributors it points at a local development setup page. It also carries a warning: the main branch is in development and is the beta version, and readers who want the stable and current version are pointed at the 4.x branch. Decide which one you want before you start, because the branch determines what you get.

For the container path, the repository ships a Compose file. The web service maps ${APP_PORT:-80}:80, so with no APP_PORT set the application answers on port 80 of the host.

```bash
docker compose up -d
```

Bringing the stack up also starts mariadb, redis, memcached, meilisearch, mailpit, plus the queue and cron containers. The first start is slower than later ones because the Sail runtime image is built from ./vendor/laravel/sail/runtimes/8.4.

Configuration lives in .env, and .env.example documents each key. The file calls APP_KEY the most important part of the application and says it must be exactly 32 characters, generated with php artisan key:generate or with openssl. The default database connection in the example is sqlite.

```bash
cp .env.example .env
php artisan key:generate
```

Two keys in that file are worth setting before you expose anything. APP_ENV takes local or production, and the example says to use production for anything that is not a development install. APP_DEBUG should be false in production; the example says exactly that. APP_DISABLE_SIGNUP defaults to false, which means a fresh instance accepts new registrations until you change it.

Once the app is reachable, the first useful action is creating a contact and attaching a reminder to it. The README lists automatic birthday reminders as a feature, so a birthdate entered on a contact is the input that drives the scheduled email. The reminder pipeline runs through the queue and cron containers, which is why the compose file defines them separately.

## Where Monica is the wrong tool

The clearest limitation is stated by the project itself. Monica is not a smart assistant. It will not infer that you should call someone, it will not draft the message, and it will not surface a relationship that is going cold. Every reminder is one you configured. If your actual problem is that you do not know what to do next, Monica does not answer that question, and the README is explicit that this is intentional rather than a gap on a roadmap.

The second limitation is the release situation. The most recent release listed is v5.0.0-beta.5 from 2025-04-21, and the branch you land on by default is the one the README labels as beta and in development. The previous stable line is 4.x, with v4.1.2 released on 2024-05-04. So the newest work is beta software and the newest stable release is older. Anyone who needs a stable target has to consciously choose the 4.x branch, and the README does not describe a migration path between the two.

The third is operational weight. This is a Laravel application with a relational database, a queue worker, a scheduler, a search service and a mail service in the reference Compose file. That is a normal stack for a team and a real cost for one person running it on a small VPS. A single-file contact list or a hosted notes app will be less work. Monica earns that cost only if you actually use the reminders, the relationship graph and the diary.

The fourth is mobile. The repository layout and package.json describe a web frontend built with Vue and Inertia. There is no mobile application in the top-level entries.

## How Monica differs from a general-purpose notes or wiki tool

The obvious alternative for someone who wants to remember things about people is a notes app or a personal wiki. The difference is structural rather than cosmetic. In a wiki, a person is a page and a birthday is a line of text you have to read. In Monica, a contact is a record with typed fields, and the birthdate is data the scheduler can act on. The README lists relationships between contacts as a feature, so the model is a graph, not a set of documents. You can ask who someone is connected to, which a wiki page cannot answer.

The second difference is the vault and user model. The README lists multiple vaults and users, which means one instance can hold separate sets of contacts rather than one shared pile. A notes app usually gives you one workspace per account.

The third difference is the licence and the deployment shape. Monica is AGPL-3.0 and is designed to be self-hosted, so the data stays on your server. The README states it directly: it is your data, your server, and the project says it does not track users and never will be ad-supported. A hosted notes product cannot make that claim, because the operator of the service is someone else.

## Maintenance, upgrades and what AGPL-3.0 means here

The repository is not archived. The last push to the default branch was on 2026-04-24, which is five months before today, so the project is not dormant but it is also not being pushed to daily. Plan upgrades around releases rather than around the branch head. The listed releases are v5.0.0-beta.5 on 2025-04-21, v4.1.2 on 2024-05-04, and v5.0.0-beta.4 on 2024-05-03. A release cadence of roughly one stable release per year is the honest read from that list.

Upgrade cost depends on which branch you run. On the beta line, the README's own warning applies: the branch is in development. Upgrades there mean tracking a moving target. On 4.x you get fewer changes and a longer gap between them, but you also get whatever the 4.x branch has accumulated since v4.1.2, and the README does not document an upgrade procedure or a rollback path between the two lines.

The licence is AGPL-3.0, per the LICENSE.md file and the repository metadata. The practical consequence is the network clause: if you modify Monica and let other people use it over a network, the AGPL's source-availability obligation is the thing to read carefully. Running an unmodified instance for yourself is the simple case. This is a description of the licence's shape, not legal advice; if you plan to offer a modified Monica to other users, that is a question for a lawyer.

## Conclusion

Monica fits people who want a private, self-hosted record of their relationships and are willing to run a Laravel stack with a queue worker, a scheduler and a database. It does not fit anyone who wants a hosted service, a mobile-first experience, or an assistant that guesses what to do next. Before adopting it, check which branch you are installing, because v5.0.0-beta.5 is a beta release while the README points stable users at the 4.x branch, and confirm that your licence obligations under AGPL-3.0 fit how you intend to expose the instance.

## FAQ

### How do I install Monica?

The README points to https://docs.monicahq.com for installation and to a local development setup page for contributors. The repository ships a docker-compose.yml with a Sail-based PHP 8.4 web service, MariaDB, Redis, Memcached, Meilisearch, Mailpit, a queue worker and a scheduler, and .env.example documents the configuration keys including APP_KEY, APP_ENV and APP_DEBUG.

### How do I use the Monica app?

You add contacts, define relationships between them, attach notes, activities, tasks and addresses, and set reminders. The README lists automatic birthday reminders as a feature, and those reminders are delivered by email through the queue and scheduler containers defined in docker-compose.yml. Monica will only send emails for things you explicitly asked to be reminded of.

### Does Monica have an AI assistant or a browser extension?

No. The README states that Monica does not have built-in AI with integrations like ChatGPT, and it describes Monica as not a smart assistant that guesses what you want to do. There is no browser extension in the repository's top-level entries either.

### Which branch of Monica should I run, main or 4.x?

The README warns that the main branch is in development and is the beta version, and directs anyone who wants the stable and current version to the 4.x branch. The newest listed release is v5.0.0-beta.5 from 2025-04-21, while the newest stable release listed is v4.1.2 from 2024-05-04.

### What licence is Monica released under?

AGPL-3.0, per the LICENSE.md file in the repository and the repository metadata. The README also states that Monica is open source and that users are not tracked.

## Sources

- [License: AGPL-3.0](https://github.com/monicahq/monica/blob/main/LICENSE)
- [monicahq/monica on GitHub](https://github.com/monicahq/monica)
- [Project website](https://beta.monicahq.com)
- [README](https://github.com/monicahq/monica/blob/main/README.md)
- [Releases](https://github.com/monicahq/monica/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/monicahq-monica
