No description
Find a file
Raghavendra Bhat 6bec472f23
test(api): unit test coverage (#1279)
* test(api): 100% coverage for internal/version

Add version HTTP, doc persistence, and migration middleware tests.

Export JSONMarshalFailer and ForceJSONError for the Save marshal error path.

* chore(api): remove unused internal/httpclient

Package had no importers. Drop dead code.

* test(api): 100% coverage for internal/log

Test formatFilePath and exercise logrus output so init

formatter and caller prettyfier run under coverage.

* test(api): add OpenAPI unit tests

Cover schema customizer, route contract helpers, and spec

postprocess paths. ~98% statement coverage; remaining gaps

are json.Marshal edge cases and likely-dead branches.

* test(api): add utils response and get_user tests

100% on SendJSONResponse, SendErrorResponse, GetUser,

and GetOrganizationID. Uses httptest and failing writer

for encode error paths.

* test(utils): add org/sftp/shell coverage and pool hooks

Guard goph.Client.Close when embedded ssh client is nil (pooled SFTP tests).

go.mod: indirect deps from tidy/build.

* test(utils): cover pool race SSH release and WalkRemote errors

* test(logger): add init tests

* test(secrets): add package tests

* test(realtime): add unit tests and hooks

* test(queue): add miniredis integration and test hooks

* test(cache): add miniredis suite for full coverage

jsonMarshal indirection covers Set* marshal error paths.

* test(config): add hooks and tests for full coverage

* test(queue): colocate lifecycle and reply_mux tests

* test(redisclient): add New() unit tests

* refactor(scheduler): extract billing and machines subpackages

* test(middleware): 100% coverage and hooks

Branch from test/api-coverage.

Adds middleware tests, production hooks for testability, and go.mod deps
(miniredis, sqlitedialect, modernc sqlite) required by tests.
2026-04-24 13:53:31 +05:30
.cursor/rules fix: handle unset NIXOPUS_INSTALLER_DIR, use master branch 2026-03-09 20:34:37 +05:30
.github fix(ci): skip API tests on PRs without API changes (#1260) 2026-04-21 16:15:33 +05:30
.husky fix: security issues and dep warnings in view (#737) 2025-12-20 02:18:06 -08:00
api test(api): unit test coverage (#1279) 2026-04-24 13:53:31 +05:30
assets perf(api): add Redis caching for session verification and user lookups 2026-04-02 15:56:48 +05:30
helpers fix: handle unset NIXOPUS_INSTALLER_DIR, use master branch 2026-03-09 20:34:37 +05:30
installer refactor(installer): split management CLI; machines UI/skeleton fixes (#1266) 2026-04-21 11:37:31 +05:30
scripts fix: handle unset NIXOPUS_INSTALLER_DIR, use master branch 2026-03-09 20:34:37 +05:30
view perf(machine): make verify synchronous (#1275) 2026-04-23 18:35:00 +05:30
.env.sample feat: endpoints for resource update 2026-03-09 00:17:55 +05:30
.gitignore perf(api): add Redis caching for session verification and user lookups 2026-04-02 15:56:48 +05:30
.trivyignore fix(security): upgrade vulnerable dependencies to pass Trivy scan (#1255) 2026-04-20 00:29:02 +05:30
CHANGELOG.md fix: handle unset NIXOPUS_INSTALLER_DIR, use master branch 2026-03-09 20:34:37 +05:30
CNAME feat(coderabbit): add coderabbit actions and config file 2025-05-27 07:54:21 +05:30
CODE_OF_CONDUCT.md docs: Create CODE_OF_CONDUCT.md (#390) 2025-09-11 02:49:51 +05:30
commitlint.config.js chore: setup commitlint and pre commit formatting hooks (#619) 2025-12-06 05:40:46 -08:00
CONTRIBUTING.md docs: Create CONTRIBUTING.md (#388) 2025-09-11 02:51:30 +05:30
docker-compose-dev.yml feat: endpoints for resource update 2026-03-09 00:17:55 +05:30
docker-compose-staging.yml ci: add staging image build workflow for master merges 2026-04-01 18:30:53 +05:30
docker-compose-test.yml fix: handle unset NIXOPUS_INSTALLER_DIR, use master branch 2026-03-09 20:34:37 +05:30
docker-compose.yml fix: handle unset NIXOPUS_INSTALLER_DIR, use master branch 2026-03-09 20:34:37 +05:30
LICENSE.md chore: address review comments 2025-06-08 15:49:30 +05:30
package-lock.json feat: allow updating build pack after app creation 2026-03-07 23:31:47 +05:30
package.json fix: handle unset NIXOPUS_INSTALLER_DIR, use master branch 2026-03-09 20:34:37 +05:30
README.md fix(view): persist chat streaming across navigation and fix tool approval 2026-04-06 14:38:46 +05:30
thanks.md chore: update readme with banners and agentic feature demonstrations and thanks. 2026-03-31 10:00:46 +05:30
version.txt fix: handle unset NIXOPUS_INSTALLER_DIR, use master branch 2026-03-09 20:34:37 +05:30
yarn.lock feat: allow updating build pack after app creation 2026-03-07 23:31:47 +05:30

An open-source, AI-powered platform that deploys, monitors, and fixes your apps, autonomously.
Self-host on your own infrastructure or use Nixopus Cloud to go live in minutes.

WebsiteDocumentationBlogDiscord

Table of contents

TOC


Getting Started & Join Our Community

Nixopus is the deployment platform where an AI agent handles your entire deploy lifecycle, from analyzing your codebase and generating configs to shipping your app and fixing failures. Connect your repo, tell the agent to deploy, and go live. Learn more in the introduction or jump to the quickstart.

No installation required! Sign up and deploy your first app on Nixopus Cloud.
Join our Discord community! Connect with developers and other Nixopus users.

Important

Star Us, You will receive all release notifications from GitHub without any delay ~

How It Works

  1. Connect your repo - link your GitHub account and select a repository.
  2. Tell the agent to deploy - from the dashboard or your editor, the agent analyzes your codebase, generates the right config, and deploys.
  3. Go live - your app gets a URL with HTTPS. Automatic SSL, routing, and domain management.
  4. Agent keeps watching (in development) - if something fails, the agent reads the logs, creates a PR with a fix, and redeploys.

Features

AI-Powered Lifecycle

The agent generates configs, deploys, and fixes failures, autonomously. On other platforms, a failed deployment means reading logs, copying the error to an AI tool, getting a fix, pushing, redeploying. Repeat. Nixopus closes that loop. The agent detects the failure, diagnoses it, raises a PR with the fix, and redeploys without you.

Chat Interface

Deploy, add domains, check logs, roll back, troubleshoot. One conversational interface. Talk to the agent in natural language from the dashboard or your editor. Tag resources with @App, @Container, or @Domain to give it focus.

Editor Extension

Deploy from VS Code or Cursor without opening a browser. The extension puts the same agent in your sidebar. Chat, deploy, and manage your apps without leaving the editor.

Multi-Server Orchestration

One dashboard. Every server. Connect multiple servers and manage them all from one place. Monitor CPU, RAM, and running apps across your entire fleet. Multi-machine deployments, load balancing, and automated scaling are on the roadmap.

Full Machine Access

Terminal and containers right in the dashboard. SSH into your server, inspect running containers, stream logs, and debug from the browser. No separate terminal or jump host required.

Framework Agnostic

Next.js, Django, Rails, Go, FastAPI, Compose stacks. Anything that runs in a container. If it fits a container image, it ships on Nixopus. The agent detects your stack and generates the right build configuration automatically.

* What's more

Beyond these features, Nixopus also includes:

  • Auto TLS: Every deployment gets TLS via Caddy. SSL provisioned and renewed automatically via Let's Encrypt. See configuration.
  • Custom Domains: Point your domain at Nixopus with automatic DNS verification and SSL. Tell the agent "add domain app.mysite.com."
  • Instant Rollbacks: Roll back to any previous deployment. Previous images are retained, so rollbacks don't require a full rebuild.
  • Open Source & Self-Hostable: Your code, your data, your infrastructure. Self-hosting is free forever with full feature parity. No lock-in.

More features are being added as Nixopus evolves.


Demo

See Nixopus in action, from deploying apps to day-to-day operations on your infrastructure.

https://github.com/user-attachments/assets/6d6f24ef-47d5-4fe2-ab63-65f0ed5f7782

Self Hosting

Run the full Nixopus stack on a machine you control.

Tip

Learn more in the Self-Hosting Installation Guide.

Quick Install

curl -fsSL install.nixopus.com | sudo bash

Or with a custom domain and admin email:

curl -fsSL install.nixopus.com | sudo DOMAIN=panel.example.com ADMIN_EMAIL=admin@example.com OPENROUTER_API_KEY=sk-or-xxxxx bash

Or use a different LLM provider:

curl -fsSL install.nixopus.com | sudo LLM_PROVIDER=anthropic ANTHROPIC_API_KEY=sk-ant-xxxxx bash

Configuration

All parameters are optional. Pass them as environment variables before the install command:

Environment Variable Required Description Default
DOMAIN No Domain for automatic HTTPS (empty, IP mode)
HOST_IP No Public IP of the machine (auto-detected)
ADMIN_EMAIL No Admin account email (empty)
CADDY_HTTP_PORT No HTTP port 80
CADDY_HTTPS_PORT No HTTPS port 443
NIXOPUS_HOME No Installation directory /opt/nixopus
LLM_PROVIDER No LLM provider for the AI agent: openrouter, openai, anthropic, google, deepseek, or groq openrouter
OPENROUTER_API_KEY No OpenRouter API key (default provider, gives access to Claude, GPT-4, Gemini, and more via one key) (empty)
OPENAI_API_KEY No OpenAI API key (empty)
ANTHROPIC_API_KEY No Anthropic API key (empty)
GOOGLE_GENERATIVE_AI_API_KEY No Google AI API key (empty)
DEEPSEEK_API_KEY No DeepSeek API key (empty)
GROQ_API_KEY No Groq API key (empty)

Note

The complete list of environment variables can be found in the Configuration Guide.


Requirements

Requirement Minimum
Machine Fresh VPS from any cloud provider (Hetzner, DigitalOcean, AWS, etc.)
Architecture x86_64 (amd64) or aarch64 (arm64)
RAM 1 GB minimum (2 GB+ recommended)
Disk 2 GB free minimum
Access Root (the installer must run as root)
Docker Installed automatically if not present (Docker Engine + Compose V2)

Note

Use a fresh, dedicated VPS, not a machine already running other production services. The first user to sign up becomes the admin. After that, registration is closed and you invite users manually.

Contributing

Contributions of all types are more than welcome; if you are interested in contributing code, feel free to check out our GitHub Issues to get stuck in to show us what you're made of.

Tip

We welcome all contributions that help make Nixopus better. Whether it's bug fixes, new features, documentation, or feedback, every contribution counts.




About the Name

Nixopus is derived from the combination of "octopus" (representing flexibility and multi-tasking) and the Linux penguin mascot (Tux). While the name might suggest a connection to NixOS, Nixopus is an independent project with no direct relation to NixOS or its ecosystem.


License

Distributed under the FSL-1.1-ALv2 License. Visit LICENSE.md or the docs for more information.

Copyright © 2025 Nixopus.
This project is FSL-1.1-ALv2 licensed.