Everything you need to run apps on Dbrij Hosting: ways to deploy, builds and monorepos, services, variables, URLs, custom domains, logs and rollbacks, databases and imports, plans, the CLI and AI assistants.
Dbrij Hosting runs your web apps, APIs, background workers and managed databases. You bring code from a Dbrij Source repository, a GitHub repository, a folder on your machine, a container image or a single file function. Hosting builds it, runs it, gives it HTTPS, and keeps its logs, deployments and backups where you can reach them.
Everything lives in a project, and a project holds services. A project belongs to a space: your personal space, or a company you are a member of. The space decides who can see the project, who can deploy it and who is billed for it. Services in one project reach each other privately, which is how an app talks to its database.
There are three ways in, and they all act on the same projects:
dbrij command line tool, which ships the folder you are standing in (see CLI reference).Prefer a guided walkthrough? The Hosting guide takes you from nothing to a live app step by step.
From a folder on your machine to a live HTTPS address in three commands. You need Node.js for npx.
1. Sign in. The terminal shows a short code and opens your browser. Confirm the code matches in a browser where you are signed in to Dbrij. No password ever goes through the terminal.
npx dbrij login2. Link the folder to a service. Pick a project and a service, or create new ones. A new project asks which space it belongs to. The link is saved in .dbrij/project.json, which stays out of git.
npx dbrij link3. Deploy. The folder is packed, uploaded and built. Before the build starts you are asked whether the service should get a public URL.
npx dbrij deploy
# Deploying shop / web
# · Packed 214 files (1.8 MB compressed)
# · Uploaded
# Deployed.
# https://<service>.dbrij.appCode on GitHub or Dbrij Source? Open Hosting, create a project, and choose the repository in the Deploy dialog. Pushes to the branch you pick then deploy on their own.
Every service has one source. It is set when the service is created and can be changed later in its settings.
A service that builds from a Dbrij Source repository deploys when you push to the branch it tracks. Nothing has to be registered on the repository: the push itself starts the build. Pushes to other branches are ignored by that service. To push with your Dbrij sign in instead of a token, run dbrij git setup once.
npx dbrij git setup # once per machine
git push # deploys the service that tracks this branchConnect GitHub once from Hosting, then pick a repository and a branch. Dbrij puts the deploy webhook on the repository through your connected account, so you never paste a URL into GitHub. The service page shows whether pushes reach Dbrij, and a single button sets the webhook up again if it was removed or GitHub stopped trusting it.
A repository service deploys on every push by default. Switch automatic deploys off to set a service up first and ship it by hand: the Deploy button keeps working, only the push nobody is watching is held. A service can also hold automatic deploys while its last code scan found malware.
dbrij deploy packs the linked folder and ships exactly what is on disk: no git remote, no webhook. Files matched by .gitignore and .dbrijignore stay behind, and so do installed dependencies, build output, caches and secrets (.env files, *.pem, *.key, id_rsa) whatever your ignore files say. The packed folder must be under 100 MiB compressed. Only services created for uploads can take a dbrij deploy.
Give the service an image reference and Hosting runs that image as it is, with no build step.
A function is a single source file that runs on Bun, edited in the service's Code tab. Saving it is the deploy. A new function starts from a small server that answers on the port in PORT. The file can be up to 100,000 characters.
const server = Bun.serve({
port: Number(process.env.PORT ?? 8080),
fetch(req: Request) {
const url = new URL(req.url);
if (url.pathname === "/") return new Response("Hello from your Dbrij function!");
return new Response("Not found", { status: 404 });
},
});A template deploys into a project in one click: it creates and deploys every service it describes. A service can also be created empty, with no source yet, to configure first; deploying it is refused until a source is added.
A service can have a staging mirror: a copy that builds and runs beside it with its own address. When the mirror is right, promote it and production receives the exact image you tested, without a rebuild.
Pick a repository and the Deploy dialog scans it, the same way the CLI's scan_folder tool scans a folder. The scan reads only small files (package manifests, compose files, Dockerfiles), never the whole tree, and offers each deployable directory as a choice. A directory counts as an app when it holds one of: package.json, go.mod, requirements.txt, pyproject.toml, Pipfile, Cargo.toml, pom.xml, build.gradle, build.gradle.kts, Gemfile, composer.json or mix.exs. It looks up to three folders deep and skips folders such as node_modules, dist, test, docs, examples and scripts.
For each app it suggests a name, the framework, a port and a role, and says when an app cannot run on Hosting at all (a mobile app, for example).
FRAMEWORK SUGGESTIONS
| Next.js, Nuxt, Remix | site · port 3000 | Pages people visit. |
| Astro | site · port 4321 | Pages people visit. |
| Vite | site · port 8080 | Pages people visit. |
| NestJS, Fastify, Express, Hono | api · port 3000 | Endpoints for apps. |
| Dockerfile with EXPOSE | port from EXPOSE | The first EXPOSE line sets the suggested port. |
| React Native, Expo | not hostable | A mobile app is shown with the reason it cannot run here. |
A repository whose root organises rather than runs (a pnpm-workspace.yaml, or a root package.json with a workspaces field) is treated as a workspace. Each app inside it is offered on its own. An app that depends on sibling packages and has no Dockerfile of its own is flagged: building a subfolder cannot see its siblings, so that app needs a Dockerfile to deploy. Directories that carry their own Dockerfile are always safe to pick. A service can point at a named Dockerfile, such as Dockerfile.web, with its Dockerfile path.
The scan also suggests managed databases, from compose service images or from dependencies:
| postgres | PostgreSQL | A postgres image in compose, or pg, postgres, @prisma/client, typeorm or drizzle-orm in dependencies. |
| mysql | MySQL | A mysql or mariadb image, or mysql or mysql2 in dependencies. |
| mongodb | MongoDB | A mongo image, or mongoose or mongodb in dependencies. |
| redis | Redis | A redis or valkey image, or ioredis, redis, bullmq or bull in dependencies. |
In order of preference:
Dockerfile in the root directory, or the path you set.dist) and Hosting runs your build command, then serves that folder itself. No Dockerfile needed.BUILD SETTINGS
| rootDir | string | The folder inside the repository the app lives in. Empty means the root. |
| dockerfilePath | string | A specific Dockerfile, relative to the repository. |
| staticOutputDir | string | Static site mode: the folder the build leaves its files in. Empty turns it off. |
| installCommand | string | Overrides the detected install command, for example npm install. |
| buildCommand | string | Overrides the detected build command. |
| startCommand | string | Overrides the detected start command. |
| releaseCommand | string | Runs once against the new image, after the build and before any traffic moves. Database migrations go here. |
A release command runs once per deploy, never once per copy, so two copies can never migrate one database at the same time. If it exits with an error the deployment fails and the previous version keeps serving. Before it runs, every PostgreSQL, MySQL and MongoDB database in the project is backed up, and the command waits for those backups to land. The newest three of these pre release backups are kept per database.
| queued | in flight | Waiting to build. On the free plan a deploy can wait here for a build slot; paid plans skip the wait. |
| building | in flight | The image is being built. |
| releasing | in flight | The release command is running. Only for services that set one. |
| deploying | in flight | The new version is rolling out. |
| active | finished | Live. |
| failed | finished | The build, release or rollout failed. The previous version keeps serving. |
| cancelled | finished | Stopped before it finished. |
| superseded | finished | A newer deployment replaced it before it went live. |
When a build fails, Hosting reads the log and writes what went wrong in plain words, the log lines it matched and what usually fixes it. When the fix is a setting Hosting can change (a different install command, for example), the deployment offers to apply it and deploy again.
Your first deploy may ask you to verify a payment method with a small one time charge. A paid Hosting plan already counts as verified.
| web | kind | Serves HTTP on its port, behind HTTPS. Can have a public URL and custom domains. |
| worker | web, background | Builds and runs like a web service but listens on nothing: no port, no URL, no domains. Queue consumers, schedulers, bots. |
| database | kind | A managed database engine with its own disk, reachable privately from the project. |
A web service can say what it is: a site (pages people visit, with the page and search tools shown) or an api (endpoints for apps, with those tools hidden). Left unset, Hosting decides from what the service's root actually returns. What you declare always wins.
Turn a web service into a worker from its settings, or create one as a worker. A worker has no health probe on a port, because it opens none; a worker that keeps crashing still shows in its restart count. Turning worker mode on requires removing the custom domains first, and drops the public URL.
| postgres | PostgreSQL | Relational SQL database for your app data. |
| mysql | MySQL | The other relational standard, widely supported. |
| mongodb | MongoDB | Document database for flexible, JSON like data. |
| redis | Redis | In memory store for caching, queues, and sessions. |
Databases are available on paid plans. See Databases for connections, backups and restores.
A web service can mount a persistent disk at an absolute path. A service with a volume runs a single copy, because a disk can only be attached in one place. Disks can grow but never shrink. Detaching a volume keeps the disk, so attaching it again finds the data.
Each service has its own environment variables. They are encrypted at rest, and only people who can operate the service see their values. In the browser the values appear only after you confirm who you are.
RULES
| Names | pattern | A letter or underscore, then letters, digits or underscores. |
| Values | size | A string under 8 KB. |
| Count | limit | Up to 200 variables per service. |
| Total | limit | All variables together up to 400 KB. |
| PORT | reserved | Set by Dbrij from the service port. Change the port in Settings instead. |
| DBRIJ_FUNCTION_CODE, BUILD_ENV_B64 | reserved | Managed by Dbrij. |
On a service that has deployed before and is not stopped, changing its variables starts a new deploy so the app picks them up. Two people editing the same variables in the browser cannot overwrite each other: a save based on an older copy is refused instead of overwriting the newer one.
npx dbrij env # list the names (values stay hidden)
npx dbrij env add API_URL=https://api.example.com
npx dbrij env rm OLD_FLAG
npx dbrij env pull .env.local # write them to a file (default .env.dbrij)dbrij env add and dbrij env rm change only the names you give, merged on the server, so a change someone else made in the meantime is kept. dbrij env pull writes a file readable only by you; it holds real secrets, so keep it out of git.
A service can also read a Dbrij Secrets project. Link it from the Connections tab of the Secrets project, naming the environment (and optionally a folder). The service then runs with the linked secrets underneath its own variables: on a name both set, the service's own variable wins. The variables tab shows which Secrets project and version the last deploy used. A change to the linked secrets redeploys a running service, and when a deploy with new secrets fails, the service is held at the version that last worked. See the Secrets docs.
A database's connection string goes into an app's variables from Dbrij to Dbrij, without you copying it. The default name is DATABASE_URL for PostgreSQL and MySQL, MONGODB_URI for MongoDB and REDIS_URL for Redis.
Your app listens on the service's port, which Dbrij also passes in the PORT variable. A new service uses 8080 unless you or the scan set another. Read PORT rather than hard coding a number and the two can never disagree.
| Readiness | TCP on the port | A copy receives traffic only once it accepts connections on its port. A slow first boot gets about five minutes before it counts as failed. |
| Liveness | TCP on the port | A copy that stops accepting connections is restarted. It is checked after the first minute, every 20 seconds, and restarted after six misses in a row. |
| Databases | TCP on the engine port | A database is ready only once the engine itself listens. |
| Workers | none | A worker opens no port, so running is its healthy state. |
Because new copies take traffic only when they answer, a deploy replaces the old version without sending visitors to an app that is still starting. Hosting also probes every running web service from outside about every five minutes; those probes feed the uptime charts and automatic rollback (see Logs and rollbacks).
https://<service>.dbrij.appA web service gets a free address on dbrij.app when you switch it on, from the dashboard, from dbrij url, or by answering yes when dbrij deploy asks. It is never created on its own, because creating it issues a certificate for that name. The certificate can take a minute on a brand new name; until then the link shows as securing.
Services created now redirect plain HTTP to HTTPS for every name whose certificate is live. A name joins the redirect only once its certificate works, so visitors are never sent to a certificate error.
Add a domain you own to a web service from its Domains tab. A service takes up to 3 domains; the www companion of a root domain comes free and does not count. Domains bought on Dbrij are set up for you: see the Domains docs.
| Root domain | A record | Host @, value: the address the Domains tab shows. A root domain cannot hold a CNAME, so it takes an A record. |
| Subdomain | CNAME record | Host: the subdomain label (www, app, api.eu), value: your service's address on dbrij.app. |
example.com A @ <the address shown in the Domains tab>
app.example.com CNAME app <service>.dbrij.appTwo level endings such as .com.ng and .co.uk are recognised: acme.com.ng is a root domain and gets the A record.
Hosting checks every few minutes, and on demand when you press check. It asks the domain's own authoritative nameservers rather than a cache, so a record you just fixed counts as soon as it is published. A domain passes when it has a CNAME to your service, or when every A record points at Dbrij. If any A record points somewhere else (a leftover from a previous host, or a registrar's forwarding service), the Domains tab names it, because visitors would land on that server part of the time.
| none | certificate | Not verified yet, so no certificate is requested. |
| issuing | certificate | Verified and the certificate is being issued. A healthy issue takes under a minute. |
| active | certificate | HTTPS is live. |
| failed | certificate | Stuck, with the reason in plain words and a retry. |
A certificate is issued once the service has deployed at least once: until then there is nothing to answer the certificate check, and the domain says to deploy first. It puts itself right after the first deploy.
Adding a root domain also adds its www name, redirecting to the root, so visitors who type www arrive. Any live domain can instead redirect permanently to another live name of the same service, for example www.example.com to example.com or the reverse.
Custom domains are included on every plan. Each plan also caps how many domains can wait connected but not yet attached to a service (see Scaling, plans and limits). A name on dbrij.app cannot be added as a custom domain, and a domain can serve only one service at a time.
Every deployment keeps its build log, and the release command's output when there is one.
npx dbrij logs --build # the latest deployment
npx dbrij logs --build a1b2c3d4 # a deployment by the id prefix the CLI printsRuntime logs are what the running service prints, read from its newest copy: up to 1,000 lines. Ask for the previous run to read the output of the copy before the current one, which is where a crash shows its error.
npx dbrij logsOn plans that keep log history, every service's output is collected about every half minute and kept for the plan's number of days. A day can be searched by time range, by level (all, warnings, errors) and by text or a regular expression, up to 1,000 lines a page, and downloaded as plain text one day at a time. Days follow Lagos time. Plans without history show the live output of the newest copy only.
A rollback puts a previous successful build back without rebuilding it. With no argument the CLI goes back to the build before the one running now; give an id prefix to choose.
npx dbrij rollback # the build before this one
npx dbrij rollback a1b2c3d4 # a specific deploymentSwitch on automatic rollback and Hosting puts the previous build back when a deploy takes a healthy site down. It acts only on clear evidence: the site was healthy before the deploy, enough outside probes ran after it, the failure lasted rather than blipped, and a known good build exists. It watches the first 20 minutes after a deploy; after that a failure is treated as an outage, not a bad release.
Restart runs the current build again without rebuilding. Stop takes the service down and start brings it back.
Create a database as a service in a project. It starts at once, with its own disk, and is reachable privately by the other services in the project. Each engine has a memory floor its settings will not go below.
The database's page shows its host, port, user, password, database name and a ready made connection URL. Only people who can operate the database see the password. Use the link to an app (see Variables and Secrets) and the URL goes straight into the app's variables.
Public networking is off by default. Switching it on gives the database a public host and port, for a SQL client or an app running on your laptop. It puts the database on the internet protected only by its password, so switch it off when you are done.
| Back up now | manual | A snapshot you take by hand, kept until you delete it. Each plan caps how many you hold; at the cap you delete one first. |
| Nightly | automatic | Off until you switch it on, on plans that include it. The plan sets how many nightly backups are kept. |
| Pre release | automatic | Taken before every release command runs. The newest three are kept per database. |
Backups cover PostgreSQL, MySQL and MongoDB. Redis is a cache and has no dump based backups here. A backup can be downloaded. Switching nightly backups off is always allowed, even when a plan has lapsed.
A restore loads a backup into the same database and replaces what is there: anything written since the backup is lost. Only one load (a restore or an import) runs into a database at a time; another is refused until it finishes or is cancelled. A load in progress shows its progress, and a load that hangs can be cancelled or started again from its stored dump.
For the length of a load, the database is sized up within your plan, and its memory and processor go back afterwards. A size you changed by hand is never overwritten.
If the database restarts in the middle of a load, the connection the loader holds is dead and it would wait forever. A watchdog checks every 30 seconds how long the server has been up; when that is shorter than the load has been running, it stops the load with a clear error instead of leaving it hanging. Start it again from the database's backups list.
On the Reserved plan PostgreSQL runs as three copies with a standby ready, and promotes one on its own if the primary is lost. MySQL, MongoDB and Redis run as a single copy on every plan.
Bring an existing PostgreSQL or MySQL database into a Hosting database of the same engine. Both routes are destructive, exactly like a restore: the target is replaced by what the source holds.
When the old database is reachable over the internet, paste its connection string (postgresql://, postgres://, mysql:// or mariadb://). Hosting connects and copies it across. The engine must match the target. These are refused before anything starts, with the reason:
localhost and loopback addresses, which from Dbrij's side mean Dbrij's own server, not your machine..local, .internal).For any of those, use the route from your machine.
When Dbrij cannot reach the old database (it is on your laptop or a private network), the import dialog gives you one command. It downloads a small script and runs it with your local pg_dump or mysqldump.
curl -fsS "<script address from the dialog>" -o "/tmp/dbrij-import-<id>.sh" && \
DBRIJ_DB_URL="postgresql://USER:PASSWORD@localhost:5432/DATABASE" bash "/tmp/dbrij-import-<id>.sh"curl -fsS "<script address from the dialog>" -o "/tmp/dbrij-import-<id>.sh" && \
DBRIJ_DB_USER=USER DBRIJ_DB_NAME=DATABASE bash "/tmp/dbrij-import-<id>.sh"Copy the exact command from the dialog: it carries your import's own address and token. For MySQL, DBRIJ_DB_HOST and DBRIJ_DB_PORT default to 127.0.0.1 and 3306, and you are asked for the password.
DBRIJ_FOREGROUND=1 to keep it attached.When it says it is done, go back to the dialog and press Load it in.
Each service sets its copies (replicas), memory and CPU in Settings. Changing the number of copies applies live; changing memory or CPU redeploys. The settings never offer a size larger than one machine in your plan's pool can give, and a database engine has a memory floor. A service with a volume runs one copy. On Reserved, a running web service keeps at least two copies on different machines.
Usage is metered on what services actually consume, sampled every five minutes, against the plan's monthly allowance. On paid plans usage past the allowance is billed at the rates below; the free plan stops instead. When the free allowance runs out the app is paused, and it runs again once usage falls back under the allowance.
| Free | Starter | Pro | Reserved | |
|---|---|---|---|---|
| Monthly fee | Free | ₦15,200 / mo | ₦40,000 / mo | ₦150,000 / mo |
| Projects | 1 | 5 | 15 | 50 |
| Services per project | 2 | 8 | 12 | 30 |
| Copies per service | up to 1 | up to 2 | up to 4 | 2 to 12 |
| Memory per service | up to 512 MB | up to 2 GB | up to 4 GB | up to 16 GB |
| CPU per service | up to 0.5 vCPU | up to 2 vCPU | up to 4 vCPU | up to 16 vCPU |
| Disk per database or volume | up to 1 GB | up to 5 GB | up to 20 GB | up to 20 GB |
| Included CPU | 4,300 vCPU minutes | 7,700 vCPU minutes | 21,000 vCPU minutes | 66,000 vCPU minutes |
| Included memory | 5,400 GB minutes | 16,200 GB minutes | 32,400 GB minutes | 120,000 GB minutes |
| Included storage | 1 GB | 25 GB | 150 GB | 1,000 GB |
| Database operations | 100 | 500 | 2,000 | 10,000 |
| Over the allowance | Hard stop | ₦1.65 per vCPU minute, ₦0.55 per GB minute | ₦1.65 per vCPU minute, ₦0.55 per GB minute | ₦1.65 per vCPU minute, ₦0.55 per GB minute |
| Storage over the allowance | Hard stop | ₦800 per GB month | ₦800 per GB month | ₦800 per GB month |
| Managed databases | No | Yes | Yes | Yes |
| Nightly backups kept | None | 3 | 30 | 365 |
| Manual snapshots held | None | 3 | 20 | 100 |
| Connected domains waiting | 3 | 10 | 25 | 100 |
| Company email domains | 1 | 10 | 30 | 100 |
| Log history | Live only | Live only | Live only | 90 days |
| Reserved machines | No | No | No | Yes |
| Uptime commitment | None | None | None | 99.9% |
Database operations are console queries (one each), "what is using this database" reads (three each) and process stops (one each). Paid plans bill each operation past the allowance; the free plan stops.
Plans narrow these; nothing goes past them.
| Projects per account | limit | 50 |
| Services per project | limit | 30 |
| Copies per service | limit | 12 |
| Memory per service | limit | 16 GB |
| CPU per service | limit | 16 vCPU |
| Disk per database or volume | limit | 20 GB |
| Custom domains per service | limit | 3, plus free www companions |
| Variables per service | limit | 200, 400 KB together |
| Packed folder for dbrij deploy | limit | 100 MiB compressed |
When a payment provider, a bank or a partner asks for the address your app calls them from, Hosting has one stable outbound address for that. Your services' outbound calls leave from it.
The address is not printed on every page. Someone who manages the project asks for it and says what it is for (for example, the provider being whitelisted). Dbrij keeps that record, so if the address ever has to move, everyone who whitelisted it is told first. Once released, the project can measure it again from every machine, to confirm calls really leave from that address, and can withdraw its access at any time.
The dbrij package runs with npx dbrij, or install it globally with npm i -g dbrij. Commands that act on a service use the folder's link, so run dbrij link first.
COMMANDS
| dbrij login | account | Sign in by confirming a short code in your browser. |
| dbrij logout | account | Revoke this machine. |
| dbrij whoami | account | Who you are signed in as. |
| dbrij link | setup | Point this folder at a project and an upload service, or create them. |
| dbrij deploy | deploy | Pack, upload, build and roll out this folder, then print the URL. |
| dbrij status | every day | The service state and its five latest deployments. |
| dbrij logs | every day | Runtime logs. --build [id] for a build log. |
| dbrij url | every day | Give the service its public URL, or show the one it has. |
| dbrij open | every day | Open the deployed site in your browser. |
| dbrij ls | every day | Your projects and services. |
| dbrij rollback [id] | every day | Put the previous build back, or the one you name. |
| dbrij env [ls | add | rm | pull] | variables | List names, set KEY=value, remove KEY, or write them to a file. |
| dbrij git setup | Source | Push to Dbrij Source with your Dbrij sign in. No token to paste. |
| dbrij mcp | assistants | Run the local MCP server for an AI coding tool. |
DEPLOY FLAGS
| --no-wait | flag | Queue the deploy and return at once. |
| --url | flag | Give the service a public URL after it deploys, without asking. |
| --no-url | flag | Never create a public URL. A run with no terminal (CI) never creates one unless --url is given. |
| -m, --message "text" | flag | Label the deployment. |
ENVIRONMENT
| DBRIJ_TOKEN | variable | Skip login, for CI. |
| DBRIJ_API_URL | variable | Talk to a different control plane. |
| DBRIJ_DEBUG | variable | Print the full error trace. |
The CLI watches a deploy for up to 25 minutes. Time spent waiting for a free plan build slot does not count. Stopping the watch never stops the deploy.
An AI assistant or coding tool that speaks MCP can deploy and run your apps for you. It acts as you: your permissions, your company role, your plan's limits and the payment check all apply exactly as they would to you. Two servers offer the tools.
| Hosted server | mcp.dbrij.com | Add it as a connector in a chat assistant and sign in with Dbrij. It deploys from GitHub and Dbrij Source repositories, because a chat window has no folder to send. |
| Local server | npx -y dbrij mcp | Runs on your machine beside a coding tool and deploys the folder you are working in. Signed in with your dbrij login. |
{
"mcpServers": {
"dbrij": { "command": "npx", "args": ["-y", "dbrij", "mcp"] }
}
}| whoami | read | The account and permissions the assistant acts with. |
| list_projects | read | Every project you can reach, personal and company, with its services. |
| get_service | read | One service's settings and status. Variable values and database passwords are never shown, only variable names. |
| list_deployments | read | Recent deployments of a service. |
| wait_for_deployment | read | Check on a deployment, waiting for it to finish. |
| build_logs | read | The build and release log of a deployment. |
| runtime_logs | read | What the running service printed, or the run before it. |
| list_domains | read | A service's custom domains, whether DNS and HTTPS work, and the record still needed. |
| plan_and_limits | read | The plan, what it allows and usage this period. |
| list_backups | read | A database's backups, newest first. |
| check_domain | read | Whether a domain is available to buy and its yearly price. |
| get_request | read | Whether you approved, turned down or let expire a request the assistant filed. |
| create_project | change | Create a project, personal or in a company. |
| create_service | change | Add a web service, worker or database. |
| redeploy | change | Build and deploy the latest code (or restart a database). |
| set_env_vars | change | Set or remove variables on a service. |
| link_database | change | Put a database's connection string into an app's variables, without the assistant seeing it. |
| create_public_url | change | Switch on the free dbrij.app address. |
| add_domain | change | Attach a domain you own and return the DNS record to create. |
| verify_domain | change | Check a domain's DNS now. |
| apply_suggested_fix | change | Apply the fix a failed build's diagnosis offers, and deploy again. |
| rollback | change | Put a previous successful build back. |
| restart | change | Restart the running copies without rebuilding. |
The hosted server adds github_status, list_github_repos, scan_github_repo, scan_source_repo and deploy_github_repo. The local server adds scan_folder, which reads a folder the way the Deploy dialog reads a repository, and deploy_folder, which packs and deploys it by the same rules as dbrij deploy.
An assistant can never spend money or delete anything by itself. Changing a plan, buying a domain, resizing a service, deleting a service or project, restoring a backup and removing a domain are filed as requests. You approve or turn them down on Dbrij, from a link and a notification on your phone, never in the chat. A request you do not decide expires after 15 minutes.
| request_plan_change | request | Move to a paid Hosting plan. |
| request_domain_purchase | request | Register an available domain, optionally pointing it at a web service. |
| request_resize | request | Change a service's copies, memory or CPU. |
| request_delete_service | request | Delete a service. You approve by typing its name. |
| request_delete_project | request | Delete a project and every service in it. You approve by typing its name. |
| request_backup_restore | request | Put a database back to one of its backups. |
| request_domain_removal | request | Detach a custom domain from a service. You approve by typing the domain. |
| withdraw_request | request | Take back a request you have not decided yet. |
Variable values and database passwords are never returned to an assistant, only the names of variables. Logs are passed to it marked as untrusted, and it is told never to act on instructions found inside them. When a build diagnosis says to stop, the assistant stops and tells you.
Every SDK and package for Hosting, with what it does, how to install it and the smallest working use. The whole catalogue, for every product, is on the apps page.
The Dbrij command line: deploy to Hosting from any directory, run your app with its Dbrij Secrets, and cut Ship releases from your CI.
Command line · TypeScript · npm · Runs on Node 20+
npm i -g dbrijnpm i -g dbrijdbrij login # confirm the code in your browserdbrij link # point this directory at a servicedbrij deploy # ship itDbrij is Nigeria’s company operating system: the first Nigerian built platform to put team chat, video meetings, email, HR, tax compliant payroll, customer support, marketing, analytics and cloud hosting in one product on one subscription.