Eigenfocus: a self-hosted issue tracker that ships its free tier as a single Docker container
Eigenfocus - Project Management tool without the clutter.
At a glance
- What is it?
- Eigenfocus is a Rails-based, self-hosted project management tool whose free edition covers boards, lists, time tracking and a Pomodoro-style focus timer. The interesting question is not what it does but where the free tier stops and the paid edition begins.
- Who is it for?
- Adopt Eigenfocus if you are a single user or a small group who wants boards, lists and a built-in time tracker on your own hardware, and you are comfortable with a project that does not accept external pull requests. Do not adopt it if you need multi-user roles, SSO, custom fields or a timeline view today, because the README places those in the paid edition.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 2 days ago.
- What is it written in?
- Mainly Ruby, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The problem Eigenfocus targets: project tools that grew past the work
The repository tagline is "Project Management tool without the clutter", and the README expands that into a pair of claims: "Powerful enough for complex projects. Simple enough to actually use." That is positioning, not a specification, but it points at a real complaint. Self-hosted issue trackers tend to accumulate configuration surfaces: workflow schemes, permission matrices, field layouts, plugin systems. The people who feel that most are small teams and solo developers who want a kanban board and a clock, not an administration console.
Eigenfocus is aimed at that group. The free edition lists unlimited projects, boards and issues, list and board views, Markdown descriptions, file attachments, labels, comments, due dates, time tracking with reports, a "Focus Space" with timers and ambient sounds, and light and dark themes. The presence of ambient sounds next to time tracking is the clearest signal of intended use: this is a tool for one person or a handful of people sitting down to do the work, not for a programme office coordinating dependencies across departments.
What the free edition actually contains, and what is held back
The README splits the feature list into two blocks. The first block is headed "Eigenfocus - FREE EDITION" and the second "When You Need More", which the README describes as growing with you and priced as "Pay once, no subscriptions".
The paid block names multiple users with roles and permissions, custom fields, multiple views with predefined settings, a grid view with columns and swimlanes, a timeline view, custom statuses and issue types, project templates, and SSO through Google, Microsoft, GitHub and OIDC. A managed cloud edition is also listed on the pricing page.
The split is unusually clean, and it is worth reading carefully. Multi-user support with roles is not in the free block. Neither is SSO. If you are evaluating Eigenfocus for a team of five, the free edition's feature list describes boards, issues, labels, comments, due dates and time reports, but it does not describe accounts for five people. The README does not state how many users the free edition permits, and I cannot confirm that from the material supplied. Treat that as the first thing to check before planning a rollout.
How it runs: one container, one volume, one image tag
Eigenfocus ships as a Docker image. The README gives a single command that starts the free edition, maps port 3001 on the host to port 3000 in the container, mounts ./app-data as a persistent volume, and sets DEFAULT_HOST_URL to http://localhost:3001. The image tag is explicit: eigenfocus/eigenfocus:1.5.1-free, matching the most recent release listed for the repository.
The compose variant is the same thing in YAML, with the same image tag, the same volume path, the same environment variable and the same port mapping. Persistence lives entirely in that mounted directory, so backup and migration reduce to copying ./app-data. That is a simpler operational story than most self-hosted trackers, which usually want a separate database container and a migration step.
The environment variables documented in the README are DEFAULT_HOST_URL, FORCE_SSL and ASSUME_SSL_REVERSE_PROXY. The last two interact, and the README explains why: if you terminate TLS at a reverse proxy and set FORCE_SSL to true, the app sees plain HTTP and will redirect forever unless ASSUME_SSL_REVERSE_PROXY is also true. The README credits the Rails pull request that introduced this behaviour. For an internet-facing deployment there is an optional HTTP Basic Auth layer controlled by HTTP_AUTH_USER and HTTP_AUTH_PASSWORD, and the README's own note is blunt: set up a certificate and use HTTPS.
The deployment constraint that decides whether this fits
HTTP Basic Auth is a single shared credential. The README presents it as a way to gate the whole instance, not as a user system. Combined with the paid edition owning "multiple users with roles and permissions", the free edition reads as a single-tenant tool behind one password.
That has consequences that are easy to miss. If two people share the Basic Auth credentials, the time tracking reports cannot attribute hours to a person, because there is no per-user identity to attribute them to. The free edition advertises "Built-in time tracking with reports", and for a solo user that is coherent. For a pair of contractors billing separately, the reports may be less useful than the feature list suggests. The README does not describe how time entries are attributed, so this is a question to resolve before relying on the reports.
The second constraint is release cadence. The three most recent releases listed are v1.5.1-free, v1.5.0-free and v1.4.1-free, dated March 2026, January 2026 and November 2025. The image tag embeds the version, so upgrades are a deliberate act: change the tag, pull, restart. Nothing in the README describes an automatic migration path or a rollback procedure, and the volume layout means a downgrade after a schema change is not obviously safe. Pin the tag rather than tracking a floating one.
Source available, not open contribution
The README is direct about this: "Since Eigenfocus includes a paid version, we don't accept external pull requests." Suggestions and feedback go to hi@eigenfocus.com. GitHub reports the licence as NOASSERTION, which means the LICENSE file does not match a standard identifier that GitHub recognises. The README describes the project as "free to self host and source available under License".
Source available is not the same as open source, and the practical difference matters here. You can read the Ruby code and run the image, but the licence terms govern redistribution and derivative works, and I cannot summarise them from the material supplied. If your organisation has a policy that only permits OSI-approved licences, this repository will not clear it without a review of the LICENSE file. That is a factual gate, not a warning about the vendor's intentions.
The no-external-PRs policy also shapes maintenance. Bug reports and feature requests travel by email, so there is no public issue tracker to search before you report something, and no way to send a patch. If you need a fix on your own schedule, forking is the only route, and the licence determines whether that is permitted.
Where Eigenfocus is the wrong tool
Compare it with a tracker that separates identity from the application, such as a self-hosted GitLab instance. GitLab's approach is the opposite in almost every dimension: a Postgres database you run and back up, an omnibus or Helm deployment, per-user accounts with project-level roles, and a public issue tracker where outside contributors file and fix bugs. Eigenfocus collapses all of that into one container and one directory, and pays for it by moving multi-user support into a paid tier and closing the contribution path.
The trade is not automatically in either direction. If you need to give an auditor read-only access to a project, or you need to prove who changed a due date, GitLab has the primitives and Eigenfocus's free edition, as documented, does not. If you want a board and a timer running on a small VPS with a two-command install, GitLab is a much larger commitment. The deciding question is whether identity is part of your requirement. If it is, Eigenfocus free is the wrong tool today.
The second case where it does not fit is any environment that requires a recognised open source licence. NOASSERTION plus a paid edition plus no external pull requests is a combination that some procurement processes will reject on the licence line alone, regardless of the software's quality.
Who should adopt it, and what to confirm first
The natural adopter is one person, or a very small group working from a shared credential, who wants a self-hosted board with time tracking and a focus timer, and who values a single mounted directory over a database container. The Docker command in the README is short enough to evaluate in an afternoon, and the free edition's feature list covers the daily loop of creating issues, labelling them, commenting, attaching files and logging time.
The natural non-adopter is a team that needs per-user accounts, role separation, SSO, custom fields or a timeline view. The README places every one of those in the paid edition, and the paid edition is the one the project is built to sell.
Before committing, confirm three things from the project itself rather than from this article. First, whether the free edition supports more than one account, since the README's free feature list does not mention users and the paid list does. Second, what the LICENSE file permits, because GitHub's NOASSERTION label tells you it is not a licence GitHub can identify. Third, whether the time tracking reports attribute entries to individuals, because HTTP Basic Auth is a shared gate and not an identity. If all three answers suit you, the deployment is a container, a volume and a tag you pin yourself.
Editorial conclusion
Adopt Eigenfocus if you are a single user or a small group who wants boards, lists and a built-in time tracker on your own hardware, and you are comfortable with a project that does not accept external pull requests. Do not adopt it if you need multi-user roles, SSO, custom fields or a timeline view today, because the README places those in the paid edition. Verify first whether the free edition supports more than one account, and read the LICENSE file, which GitHub reports as NOASSERTION rather than a recognised identifier.
Community notes