Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .goreleaser.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ builds:
env:
- CGO_ENABLED=0
ldflags:
- -X 'github.com/nullify-platform/logger/pkg/logger.Version={{ .Version }}'
- -X 'github.com/nullify-platform/cli/internal/logger.Version={{ .Version }}'
- -X 'github.com/nullify-platform/cli/internal/api.Version={{ .Version }}'
- -X 'github.com/nullify-platform/cli/cmd/cli/cmd.buildCommit={{ .Commit }}'
- -X 'github.com/nullify-platform/cli/cmd/cli/cmd.buildDate={{ .Date }}'
Expand Down
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.PHONY: build clean
.PHONY: build clean lint lint-go lint-docker

# set the version as the latest commit sha if it's not already defined
ifndef VERSION
Expand All @@ -11,7 +11,7 @@ VERSION := $(shell git rev-list -1 HEAD)$(TAINT)
endif

GOENV := CGO_ENABLED=0
GOFLAGS := -ldflags "-X 'github.com/nullify-platform/logger/pkg/logger.Version=$(VERSION)'"
GOFLAGS := -ldflags "-X 'github.com/nullify-platform/cli/internal/logger.Version=$(VERSION)'"

all: build

Expand Down
21 changes: 0 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ Scan, triage, fix, and track security vulnerabilities across your entire stack

- **Unified findings** — Query vulnerabilities across all scanner types (SAST, SCA, secrets, DAST, CSPM) in a single command
- **AI-powered remediation** — Generate fix patches and open PRs automatically
- **Interactive AI chat** — Ask security questions, triage findings, and build remediation plans with Nullify's AI agents
- **CI/CD quality gates** — Block deployments when critical findings are present
- **DAST/Pentest scanning** — Run API security scans in the cloud or locally via Docker
- **MCP server** — 50+ tools for AI coding assistants (Claude Code, Cursor, VS Code, and more)
Expand Down Expand Up @@ -87,8 +86,6 @@ nullify status
# View findings across all scanner types
nullify findings

# Chat with Nullify's AI security agents
nullify chat
```

## Authentication
Expand Down Expand Up @@ -130,8 +127,6 @@ nullify auth switch
| `nullify init` | Interactive setup wizard (instance, auth, MCP config) |
| `nullify status` | Security posture overview with finding counts by scanner |
| `nullify findings` | List findings across all scanner types with filters |
| `nullify chat [message]` | Interactive AI chat or single-shot query |

### Authentication

| Command | Description |
Expand Down Expand Up @@ -210,22 +205,6 @@ nullify pentest \

Add `--use-host-network` if the target is running directly on the host machine.

## Interactive Chat

```sh
# Start an interactive REPL session
nullify chat

# Single-shot query
nullify chat "what are my critical findings?"

# Resume a previous conversation
nullify chat --chat-id abc123 "tell me more"

# Provide additional context
nullify chat --system-prompt "focus on PCI compliance"
```

## CI/CD Integration

### Quality Gate
Expand Down
8 changes: 4 additions & 4 deletions cmd/cli/cmd/auth.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (

"github.com/nullify-platform/cli/internal/auth"
"github.com/nullify-platform/cli/internal/lib"
"github.com/nullify-platform/logger/pkg/logger"
"github.com/nullify-platform/cli/internal/logger"
"github.com/spf13/cobra"
)

Expand All @@ -27,7 +27,7 @@ var loginCmd = &cobra.Command{
Long: "Authenticate with your Nullify instance. Opens your browser to log in with your identity provider.",
Run: func(cmd *cobra.Command, args []string) {
ctx := setupLogger(cmd.Context())
defer logger.L(ctx).Sync()
defer logger.Close(ctx)

// Wrap context with signal handling so Ctrl+C triggers graceful cancellation
ctx, stop := signal.NotifyContext(ctx, os.Interrupt, syscall.SIGTERM)
Expand Down Expand Up @@ -69,7 +69,7 @@ var logoutCmd = &cobra.Command{
Long: "Clear stored credentials for the current or specified host.",
Run: func(cmd *cobra.Command, args []string) {
ctx := setupLogger(cmd.Context())
defer logger.L(ctx).Sync()
defer logger.Close(ctx)

logoutHost := resolveHostForAuth(ctx)

Expand Down Expand Up @@ -132,7 +132,7 @@ var tokenCmd = &cobra.Command{
Long: "Print the current access token. Useful for piping to other tools.",
Run: func(cmd *cobra.Command, args []string) {
ctx := setupLogger(cmd.Context())
defer logger.L(ctx).Sync()
defer logger.Close(ctx)

hostForToken := resolveHostForAuth(ctx)

Expand Down
89 changes: 0 additions & 89 deletions cmd/cli/cmd/chat.go

This file was deleted.

6 changes: 3 additions & 3 deletions cmd/cli/cmd/ci.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (
"github.com/nullify-platform/cli/internal/auth"
"github.com/nullify-platform/cli/internal/client"
"github.com/nullify-platform/cli/internal/lib"
"github.com/nullify-platform/logger/pkg/logger"
"github.com/nullify-platform/cli/internal/logger"
"github.com/spf13/cobra"
"golang.org/x/sync/errgroup"
)
Expand Down Expand Up @@ -43,7 +43,7 @@ Exit codes:
nullify ci gate --repo my-org/my-repo`,
Run: func(cmd *cobra.Command, args []string) {
ctx := setupLogger(cmd.Context())
defer logger.L(ctx).Sync()
defer logger.Close(ctx)

ciHost := resolveHost(ctx)
token, err := lib.GetNullifyToken(ctx, ciHost, nullifyToken, githubToken)
Expand Down Expand Up @@ -159,7 +159,7 @@ var ciReportCmd = &cobra.Command{
nullify ci report --repo my-org/my-repo`,
Run: func(cmd *cobra.Command, args []string) {
ctx := setupLogger(cmd.Context())
defer logger.L(ctx).Sync()
defer logger.Close(ctx)

ciHost := resolveHost(ctx)
token, err := lib.GetNullifyToken(ctx, ciHost, nullifyToken, githubToken)
Expand Down
4 changes: 2 additions & 2 deletions cmd/cli/cmd/findings.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ import (
"github.com/nullify-platform/cli/internal/auth"
"github.com/nullify-platform/cli/internal/client"
"github.com/nullify-platform/cli/internal/lib"
"github.com/nullify-platform/cli/internal/logger"
"github.com/nullify-platform/cli/internal/output"
"github.com/nullify-platform/logger/pkg/logger"
"github.com/spf13/cobra"
"golang.org/x/sync/errgroup"
)
Expand All @@ -30,7 +30,7 @@ Auto-detects the current repository from git if --repo is not specified.`,
nullify findings -o table --repo my-org/my-repo`,
Run: func(cmd *cobra.Command, args []string) {
ctx := setupLogger(cmd.Context())
defer logger.L(ctx).Sync()
defer logger.Close(ctx)

findingsHost := resolveHost(ctx)
token, err := lib.GetNullifyToken(ctx, findingsHost, nullifyToken, githubToken)
Expand Down
4 changes: 2 additions & 2 deletions cmd/cli/cmd/fix.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import (
"github.com/nullify-platform/cli/internal/auth"
"github.com/nullify-platform/cli/internal/client"
"github.com/nullify-platform/cli/internal/lib"
"github.com/nullify-platform/cli/internal/logger"
"github.com/nullify-platform/cli/internal/output"
"github.com/nullify-platform/logger/pkg/logger"
"github.com/spf13/cobra"
)

Expand All @@ -31,7 +31,7 @@ Supports SAST and SCA dependency findings.`,
Args: cobra.ExactArgs(1),
Run: func(cmd *cobra.Command, args []string) {
ctx := setupLogger(cmd.Context())
defer logger.L(ctx).Sync()
defer logger.Close(ctx)

findingID := args[0]

Expand Down
4 changes: 2 additions & 2 deletions cmd/cli/cmd/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import (
"fmt"
"os"

"github.com/nullify-platform/cli/internal/logger"
"github.com/nullify-platform/cli/internal/wizard"
"github.com/nullify-platform/logger/pkg/logger"
"github.com/spf13/cobra"
)

Expand All @@ -15,7 +15,7 @@ var initCmd = &cobra.Command{
Long: "Interactive setup wizard that configures your Nullify domain, authentication, repository detection, and MCP integration.",
Run: func(cmd *cobra.Command, args []string) {
ctx := setupLogger(cmd.Context())
defer logger.L(ctx).Sync()
defer logger.Close(ctx)

fmt.Println("Welcome to Nullify CLI setup!")
fmt.Println("This wizard will help you get started.")
Expand Down
4 changes: 2 additions & 2 deletions cmd/cli/cmd/mcp.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import (

"github.com/nullify-platform/cli/internal/client"
"github.com/nullify-platform/cli/internal/lib"
"github.com/nullify-platform/cli/internal/logger"
"github.com/nullify-platform/cli/internal/mcp"
"github.com/nullify-platform/logger/pkg/logger"
"github.com/spf13/cobra"
)

Expand All @@ -26,7 +26,7 @@ var mcpServeCmd = &cobra.Command{
Long: "Start the Nullify MCP server over stdio. Configure your AI tool to run 'nullify mcp serve'.",
Run: func(cmd *cobra.Command, args []string) {
ctx := setupLogger(cmd.Context())
defer logger.L(ctx).Sync()
defer logger.Close(ctx)

authCtx, err := resolveCommandAuth(ctx)
if err != nil {
Expand Down
4 changes: 2 additions & 2 deletions cmd/cli/cmd/open.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
"strings"

"github.com/nullify-platform/cli/internal/auth"
"github.com/nullify-platform/logger/pkg/logger"
"github.com/nullify-platform/cli/internal/logger"
"github.com/spf13/cobra"
)

Expand All @@ -15,7 +15,7 @@ var openCmd = &cobra.Command{
Short: "Open the Nullify dashboard in your browser",
Run: func(cmd *cobra.Command, args []string) {
ctx := setupLogger(cmd.Context())
defer logger.L(ctx).Sync()
defer logger.Close(ctx)

openHost := resolveHost(ctx)
// Strip "api." prefix to get the dashboard URL
Expand Down
4 changes: 2 additions & 2 deletions cmd/cli/cmd/pentest.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package cmd
import (
"os"

"github.com/nullify-platform/cli/internal/logger"
"github.com/nullify-platform/cli/internal/pentest"
"github.com/nullify-platform/logger/pkg/logger"
"github.com/spf13/cobra"
)

Expand All @@ -14,7 +14,7 @@ var pentestCmd = &cobra.Command{
Long: "Run pentest scans against your API endpoints. Supports local Docker-based scanning and cloud-based scanning.",
Run: func(cmd *cobra.Command, args []string) {
ctx := setupLogger(cmd.Context())
defer logger.L(ctx).Sync()
defer logger.Close(ctx)

pentestArgs := getPentestArgs(cmd)
nullifyClient := getNullifyClient(ctx)
Expand Down
4 changes: 2 additions & 2 deletions cmd/cli/cmd/repos.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import (
"net/url"
"os"

"github.com/nullify-platform/cli/internal/logger"
"github.com/nullify-platform/cli/internal/output"
"github.com/nullify-platform/logger/pkg/logger"
"github.com/spf13/cobra"
)

Expand All @@ -16,7 +16,7 @@ var reposCmd = &cobra.Command{
Example: " nullify repos\n nullify repos -o table",
Run: func(cmd *cobra.Command, args []string) {
ctx := setupLogger(cmd.Context())
defer logger.L(ctx).Sync()
defer logger.Close(ctx)

apiClient := getAPIClient()

Expand Down
2 changes: 1 addition & 1 deletion cmd/cli/cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (
"github.com/nullify-platform/cli/internal/client"
"github.com/nullify-platform/cli/internal/commands"
"github.com/nullify-platform/cli/internal/lib"
"github.com/nullify-platform/logger/pkg/logger"
"github.com/nullify-platform/cli/internal/logger"
"github.com/spf13/cobra"
)

Expand Down
4 changes: 2 additions & 2 deletions cmd/cli/cmd/status.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ import (
"github.com/nullify-platform/cli/internal/auth"
"github.com/nullify-platform/cli/internal/client"
"github.com/nullify-platform/cli/internal/lib"
"github.com/nullify-platform/cli/internal/logger"
"github.com/nullify-platform/cli/internal/output"
"github.com/nullify-platform/logger/pkg/logger"
"github.com/spf13/cobra"
"golang.org/x/sync/errgroup"
)
Expand All @@ -26,7 +26,7 @@ var securityStatusCmd = &cobra.Command{
nullify status -o table`,
Run: func(cmd *cobra.Command, args []string) {
ctx := setupLogger(cmd.Context())
defer logger.L(ctx).Sync()
defer logger.Close(ctx)

statusHost := resolveHost(ctx)
token, err := lib.GetNullifyToken(ctx, statusHost, nullifyToken, githubToken)
Expand Down
2 changes: 1 addition & 1 deletion cmd/cli/cmd/update.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
"strings"

"github.com/google/go-github/v84/github"
"github.com/nullify-platform/logger/pkg/logger"
"github.com/nullify-platform/cli/internal/logger"
"github.com/spf13/cobra"
)

Expand Down
Loading