DocumentationSELF-HOSTED / DEVELOPMENT RELEASEView source ↗
Start here

Your first application

Start with an image or a template, inspect the plan, then follow the rollout.

Select a project and environment before creating an application. Development, staging and production are separate scopes; choosing one does not copy data or configuration from another.

Start in the dashboard#

Open New application to use container images or import TOML. For a database or an application with several prerequisites, start in Catalog. The template form identifies required variables, secret references, storage and resource requirements before review.

You can also import a specific TOML path from an approved GitHub or GitLab repository. Repository approval and account sign-in are separate. See Deployments for source setup.

Start with the CLI#

Use the management API address supplied by your operator. The address below is an example; replace it with your installation's HTTPS API origin or its documented loopback tunnel.

hakopod login --api-url https://control.example.com --project demo --environment development
hakopod init --name hello

Login opens browser consent for the selected scope. The initializer creates this complete application file, refusing to overwrite an existing one:

schema_version = 1
name = "hello"

[services.web]
image = "nginxinc/nginx-unprivileged:stable-alpine"
port = 8080
public = true

The image is the CLI's built-in starter. During deployment, Hakopod resolves its tag to an immutable digest. public = true requests HTTP ingress; it does not publish arbitrary TCP ports.

Review and deploy#

hakopod validate --file hakopod.toml
hakopod plan --file hakopod.toml --project demo --environment development
hakopod deploy --file hakopod.toml --project demo --environment development --wait
hakopod status hello --project demo --environment development

Validate checks the file locally. Plan shows normalized configuration, differences, warnings and resource profiles. Deploy obtains a fresh plan and submits it with the expected application revision. A concurrent change causes a conflict rather than silently replacing someone else's work.

Open the resulting application in the dashboard. Follow its deployment, inspect service readiness, then use its assigned public endpoint. A previously successful deployment does not prove a service is healthy now; check current observations and pod events.

When a service does not become ready#

Check the pod's events for scheduling, storage and image-pull errors. Check that the image listens on the declared port and supports an unprivileged user. An HTTP healthcheck must return success at its configured path. A node taint or lack of capacity cannot be fixed by changing a displayed status.

Read recent logs with:

hakopod logs hello --service web --tail 100

Next, add configuration, connect private services, or set up a source deployment.