Skip to content

Quickstart — Your First Capability

This quickstart takes you from zero to a running capability in about five minutes. No code, no scaffolding — just one YAML file and the Ikanos engine.

Prerequisite. Ikanos installed via Docker or native binary. See Installation. To author the file with inline validation you can also install Crafter (the VS Code extension); to lint before running, install Polychro — both are optional for this page.

This is the single-capability path. Once you're comfortable, jump to First fleet to run several capabilities together under one fleet — the canonical Naftiko Fleet pattern with Polychro linting and Skipper orchestration.


1. Write the capability

Create a file called hello.naftiko.yml (in VS Code with the Crafter extension, you'll get inline schema validation as you type):

ikanos: "1.0.0-alpha3"

info:
  display: Hello Shipyard
  description: A minimal MCP capability that greets you back.

capability:
  exposes:
    - type: mcp
      port: 3001
      namespace: hello-tools
      description: "Demo MCP server for Shipyard quickstart"
      tools:                              # alpha3 — keyed map by tool name
        greet:
          description: "Greet a user by name"
          inputParameters:                # alpha3 — keyed map
            who:
              type: string
              required: true
              description: "Person to greet"
          outputParameters:
            - name: message
              type: string
              value: "Hello, {{who}}! Welcome to the Shipyard."

That's a complete capability. No consumes block needed — value: with a Mustache template returns static + dynamic data directly.

2. (Optional) Lint with Polychro

If you installed Polychro alongside Ikanos:

polychro lint hello.naftiko.yml --ruleset polychro:governance

Polychro applies JSON Schema validation and the bundled governance ruleset. Fix any diagnostics before continuing. This becomes essential once you grow the file count — see First fleet.

3. Run it with Ikanos

docker run -p 3001:3001 \
  -v "$(pwd)/hello.naftiko.yml:/app/capability.yml" \
  ghcr.io/naftiko/ikanos:v1.0.0-alpha3 \
  /app/capability.yml
ikanos run hello.naftiko.yml

You should see Ikanos start an MCP server on port 3001.

4. Try it with MCP Inspector

The fastest MCP client is MCP Inspector:

npx @modelcontextprotocol/inspector

Connect to http://localhost:3001, browse the greet tool, and call it with who: "World":

{ "message": "Hello, World! Welcome to the Shipyard." }

5. What happened

You wrote What Ikanos did
type: mcp Started an MCP server on the streamable HTTP transport
port: 3001 Bound the server to TCP port 3001
tools: Registered each tool with its MCP schema
value: "...{{who}}..." Rendered the Mustache template against the tool's input parameter

The full power of Naftiko comes when you add consumes (real APIs), with (parameter mapping), steps (orchestration), and multiple exposes adapters (REST, Skill, Control) — all from the same YAML file.


Where this sits in the Fleet

You've just exercised one of the six Fleet components directly (Ikanos). The others compose around the same YAML file:

Component What you can do with it now (v1.0 Alpha 3)
Ikanos Ran the capability as a multi-protocol server (MCP today, REST/Skill from the same file)
Polychro Validate the spec before running it
Crafter Author specs like this one in VS Code, with schema + ruleset diagnostics inline
Warden Govern capabilities from your Backstage developer portal — attach policy, see decisions
Skipper Run this capability on Kubernetes as a Capability CRD instead of ikanos run
Shipyard The docs hub you're reading right now

Next steps