Run it yourself
Clone it, bring up the Docker Compose stack, and you have Postgres, Redis, the API, a worker and the web app. Nothing to request and no key to wait for.
Self-hosting guideWhat it does, what it costs, what it runs on, and the parts that are not built yet. The last group is the one most FAQ pages leave out, so it is in here beside the rest.
Nothing here is behind a sales call. The source is public, so you can check any of it.
Open an issue on GitHub if it is a bug or a missing feature, or tell us what you are trying to run if it needs a person.
BottleCRM is Customer Relationship Management (CRM) software built specifically for startups and small businesses. It is free to start: the hosted Free plan has unlimited users and records and no time limit, and the core CRM is open source under the MIT license, free to self-host. RunCode, the company behind it, earns from what it adds on top, never by charging per user.
The open-source core will. It is MIT licensed, so you can download, use, modify and distribute it, and self-host it with no user limits, trial period or licence fee. The hosted Free plan has no time limit and needs no credit card. You pay only for what RunCode adds on top: the Plus and Pro plans in our hosted app, hosting, setup help and custom work.
BottleCRM provides many of the same core features as commercial CRM platforms but without per-user pricing. While enterprise solutions might have more advanced features, BottleCRM covers what most startups and small businesses need: contacts, a sales pipeline, tasks, support tickets with SLA clocks, invoicing, and inbound email that turns mail into tickets. Replies to a ticket go back to the customer as threaded email, but it is not a general mailbox: it sits beside your inbox rather than replacing it.
BottleCRM is perfect for startups, small businesses, consulting firms, freelancers, real estate agencies, and any organization that needs to manage customer relationships without paying per seat. It's also ideal for developers who want a customizable, self-hosted CRM solution.
Every module in the open-source core is included: leads, contacts, accounts, configurable deal and lead pipelines with boards, tasks, customer support tickets with a board and an optional public help center, invoices/estimates/recurring billing, org-defined custom fields on every entity, automation rules, CSV import and export, saved views on the main lists, signed outbound webhooks, an audit log for admins, a native Flutter mobile app, a documented JSON API with JWT auth, two roles, and an activity feed on the dashboard. Self-hosted, there are no per-seat fees, automation rules have no cap, and none of it moves behind a paid plan. The hosted Free plan allows 3 active automation rules and no custom objects; the Plus and Pro plans raise those limits on top of the core rather than taking anything out of it.
From what RunCode adds on top of the open-source core. In the hosted app that is two paid plans, priced per organization with unlimited users: Plus at $10 a month, with up to 10 active automation rules and 3 custom objects, and Pro at $29 a month, with no cap on active rules and up to 20 custom objects, tax added at checkout. Beyond the app, it is managed hosting, migrations, custom development and training, all priced after a conversation, because what they cost depends on your size and what you are moving off. The open-source core stays free to self-host, with no plans and no billing.
We run it for you: managed hosting on infrastructure we look after, priority support from someone who knows the codebase, and data migration from the CRM you are on now. It is an ongoing service rather than a one-off setup fee, so it is priced after a call about your size and your uptime needs.
Building things the product does not do out of the box: custom development against your own workflow, integrations with the systems you already run, and onboarding and training for the team who will use it. Every engagement is scoped and agreed in writing before anything is built, which is why there is no list price.
You keep it, and you keep running. Cancel Plus or Pro and the organization moves to the Free plan at the end of the period you paid for, with nothing deleted. Your data is yours and export always works, so leaving managed hosting means running the open-source core on your own server rather than exporting into a competitor. There is no contract term and nothing to buy back.
Yes. There is no contract term and no notice period to buy out. Managed hosting is a service you can stop, and when you do you take the open-source core onto your own infrastructure. That is a promise the licence makes, not one we have to keep for you.
Plus and Pro have one price for every organization, whatever its size, and never charge per user. Everything else we quote is a custom price, large organisation or not. Custom development, dedicated hosting and consulting are all scoped against what you actually need before a number is put on them. Talk to us and the first conversation is about scope, not budget.
Backend: Django + Django REST Framework (Python), Celery for background jobs, PostgreSQL 14+ as the database (the multi-tenant row-level security implementation is Postgres-only), Redis as the Celery broker. Frontend: SvelteKit (Svelte 5 runes) with TailwindCSS 4 and shadcn-svelte components. Mobile: a native Flutter app for Android and iOS that talks to the same JSON API.
Yes! The open-source core is designed to be self-hosted. You can deploy it on your own servers, cloud infrastructure (AWS, Google Cloud, Azure), VPS, or even run it locally. This gives you complete control over your data and eliminates vendor lock-in.
For production: Python 3.11+, PostgreSQL 14+, Redis 7+, and Node.js 18+ to build the SvelteKit frontend. Minimum hardware is 2 vCPU and 2 GB RAM (4 GB recommended). The easiest path is the included Docker Compose stack, which brings up Postgres, Redis, the Django backend, a Celery worker, and the SvelteKit app in one command. Docker is the only host requirement in that case.
Two ways. The web app is fully responsive on phones and tablets. On top of that, there's a native Flutter app for Android and iOS that talks to the same JSON API, installable from source, with Material Design 3 UI and secure token storage on-device. Lead alerts reach the Android app as push notifications: a lead assigned to you, a new lead nobody owns, a lead who enquired again and, if an admin turns it on, one left waiting too long. Each person can switch them off. On a self-hosted install, push needs your own build of the app with your own Firebase project; iOS push waits for an iOS release. Everything else is in-app on both clients.
Absolutely! BottleCRM's core is open source, so you have complete access to its source code. You can modify the interface, add custom fields, integrate with third-party services, create custom reports, and tailor it to your exact business requirements.
One path, and it is a good one: a fully documented JSON API with JWT auth, an OpenAPI schema, and both Swagger and Redoc served by the backend. The mobile app is a client of it, which is the only guarantee that matters. Google OAuth, magic-link sign-in and SMTP sending are wired in, and inbound email arrives through Amazon SES, Postmark or Mailgun (no IMAP, Gmail or Microsoft 365 connection). In the other direction, outbound webhooks send signed events for leads, contacts, accounts, deals, tickets, invoices and tasks to Slack, Zapier, n8n or your own endpoint, and leads, contacts and tickets import from CSV in the web app and the phone.
Leads and contacts can be imported from any spreadsheet yourself, .xlsx or .csv, and tickets from a CSV, from the Import button in the web app or the phone: you match the columns, preview who will come in and which rows will be skipped, and nothing is written until you import. Accounts, deals and everything else go in through the API. For a real migration off an existing CRM, that is one of the things our migration service does; talk to us and we will scope it first.
Free users have access to community support through our GitHub repository, documentation, and community forums. You can report bugs, request features, and get help from other users and contributors.
Managed hosting and support customers get priority over the community queue, and the response target is agreed with you as part of the engagement rather than published here, because it depends on what you are running and how critical it is. We would rather commit to a number in your contract than advertise one we might not hit for you.
Yes. Onboarding and training for the team who will use it is part of an Enterprise Setup engagement, and we can build training materials around your own processes rather than a generic tour of the software. How much is part of the scoping conversation.
Yes! We provide comprehensive documentation including installation guides, user manuals, API documentation, customization tutorials, and best practices. Documentation is continuously updated with new features and improvements.
Absolutely! BottleCRM's core is open source and we welcome contributions. You can submit bug reports, feature requests, code improvements, documentation updates, and translations. Check our GitHub repository for contribution guidelines.
Continuously, in the open. Fixes, security patches and features land in the public repository as they are ready rather than on a promised cadence, and you can watch the commit history yourself rather than take our word for the pace. Every update to the open-source core is free for everyone, including the people we host.
BottleCRM's open-source core is released under the MIT License, which is one of the most permissive open-source licenses. This means you can use, modify, distribute, and even sell it without any licensing fees or restrictions. Features that run only in our hosted app, such as custom objects and the Salesforce importer, are not part of it.
You own 100% of your data, however you run it. Self-hosted, all your customer data, contacts, sales information, and business intelligence remain on your servers under your complete control; hosted, export always works. There's no vendor lock-in or data hostage situations.
Yes! BottleCRM follows security best practices including data encryption, secure authentication, SQL injection protection, and CSRF protection. When you self-host, you control the hosting environment and can implement additional security measures as needed for your compliance requirements.
It gives you the foundation, and self-hosting is most of it: the data sits in a PostgreSQL database you control, so export and erasure are operations you can run directly rather than tickets you raise with a vendor. Be aware of what the interface does not have, though. Leads, contacts, accounts, deals, tickets and invoices each export to CSV from their list, but there is no one-click subject access request, so assembling one is still database work. The policies and the procedures are yours either way.
BottleCRM can be adapted for regulated industries when self-hosted, since you then have complete control over the hosting environment and data handling. However, you're responsible for ensuring your implementation meets industry-specific compliance requirements (HIPAA, SOX, etc.).
Since BottleCRM's core is open source, you'll always have access to its complete source code. Even if we stop development, you can continue using, maintaining, and developing the software independently or with the help of the community.
Which one you want depends on whether the answer is code, a person, or just time to try it.
Clone it, bring up the Docker Compose stack, and you have Postgres, Redis, the API, a worker and the web app. Nothing to request and no key to wait for.
Self-hosting guideBugs and feature requests go to the public issue tracker, where you can also read what everyone else has asked for and what was answered.
Open an issueMigrations, custom development and managed hosting need a conversation first, because what they cost depends on what you are moving off and how big you are.
Talk to usMost of these questions take longer to read than the thing they describe takes to try. There is no trial clock, so there is nothing to spend.